Como simular um "RING" de um modem ?

Discussão sobre linux para plataformas Intel x86 ou x64 (PC)

Moderadores: 51, guest2003, Renie, gpenga

Como simular um "RING" de um modem ?

Mensagempor RobL » 16 Jun 2009 10:55

Preciso testar um programa que responde à chamada de um telefone.
Para não ficar ligando para o modem, pois tenho uma só linha telefônica, para mim bastaria enviar um "RING" para o dispositivo ttyS0.

Dá para fazer isso pelo minicom, tem algum comando AT para isso? Não consegui encontrar esse comando.
Dá para fazer isso pelo bash enviando um conjunto de char "RING"para a porta?
Estou supondo que o modem envia a string "RING" cada vez que recebe o sinal de chamada da linha telefônica, mas não sei se é isso.
Tentei por redirecionamento mas não consegui, posso ter usado comando inadequado.

Nota: O modem está na ttyS0 e qualquer outro processo teria que acessar a mesma porta que poderia estar com um file lock atuando.

Alguma idéia?

Em tempo, há como ligar para meu próprio número de telefone para ter os rings ? Antigamente eu conseguia fazer isso através de um número que já não sei mais.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor pbernardi » 16 Jun 2009 11:29

Hm... Você sempre pode ligar do seu celular a cobrar pro seu telefone... 8)
But to us there is but one God, plus or minus one - Corinthians 8:6±2. (xkcd.com)
pbernardi
Word
 
Mensagens: 707
Registrado em: 12 Out 2006 19:01
Localização: Curitiba-PR

Mensagempor RobL » 16 Jun 2009 12:16

Sim, já até fiz isso, mas preciso ajustar inúmeros parâmetros, inclusive modificar programa, vou precisar ligar trocentas vezes, não é prático para o fim e não sou rico.
Agradeço a sugestão.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor msamsoniuk » 16 Jun 2009 12:35

depende... vc tem que usar um modem de verdade ou pode ser uma simulacao ?

se o modem pode ser uma simulacao, vc pode fazer isso usando duas portas seriais: coloca o seu programa na ttyS0 como se estivesse conectado a um modem, um minicom na ttyS1 e conecta uma porta na outra com um cabo cross. no minicom vc simula exatamente o que um modem externo enviaria. usando vmware, vc nem precisa de cabo, visto que eh possivel conectar portas seriais virtuais atraves de pipes. o PC encherga o modem como uma serial, entao se existe um modem de verdade ou uma simulacao, eh totalmente indiferente para o software, pq ele nao consegue ver nada alem.

agora, se vc precisa testar o modem de verdade pq nao tem ideia de como simular os comandos e respostas, o negocio complica um pouco e vc precisa construir um gerador de ring que faca o modem detectar o ring. pode ser bem simples ou nao, vai depender somente de como seu modem detecta ring... nesse site tem algumas ideias:

http://www.epanorama.net/circuits/telephone_ringer.html
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor RobL » 16 Jun 2009 13:06

Marcelo, excelente.
A idéia de cabo entre seriais é boa só não sei como fazer gerar um ring através do minicom, a não ser discando um número, com atdtnnn..., ou seja, não encontrei um comando, para passar ao modem, ou para a porta ttyS1, para gerar um ring.

A segunda idéia, gerar o ring simulando o sinal da linha é uma saída. Talvez seja a solução, se não conseguir por software.

No momento só preciso fazer o programa pegar esse ring. Com o ring ele chama vários outros e ver no log o que está acontecendo, para ir corrigindo.

Obrigado, valeu.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor RobL » 16 Jun 2009 13:18

Vou tentar enviar a string "RING" pelo minicom, vou ler como se faz isso, pois nele só testo comandos AT.
Vou abrir um source para ver se a string caçada é mesmo "RING", pois na configuração do vgetty tem vários tipos de ring, ring1, ring n.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor polesapart » 16 Jun 2009 16:40

Eu fiz um xaxo uma vez.

Eu usava um /dev/pts/x para fazer o programa pensar que falava com um modem, quando na verdade falava com um simulador tosco que eu fiz que respondia uma meia duzia de comandos e enviava rings. Não achei o fonte por aqui, mas deve ser fácil fazer algo do gênero.
Warning: time of day goes back (-163479us), taking countermeasures. :)
Avatar do usuário
polesapart
Byte
 
Mensagens: 477
Registrado em: 19 Nov 2007 12:56
Localização: Curitiba

Mensagempor RobL » 16 Jun 2009 17:32

É uma idéia a considerar.
O problema é que para escrever em uma serial não podemos esquecer que se trata de um arquivo peculiar, com baudrate, etc. No desespero já enviei até string para serial como um file comum, chegou lá mas não podia ler o que chegou.
A idéia acima de usar uma serial se comunicando com a outra (ttyS1->ttyS0), facilita, devido a mesma natureza de quem envia e de quem recebe.
Grato pela sugestão.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor msamsoniuk » 16 Jun 2009 19:47

no caso de ligar tty com tty com cabo vc vai ter simplesmente:

minicom <-> ttyS0 <-cabo-> ttyS1 <-> aplicativo

suponha que o aplicativo a ser testado eh um software tipo remote access. se vc digitar no minicom RING, ele certamente vai tratar isso atendendo o modem e vai enviar para vc o comando ATA, dae vc digita no minicom CONNECT e ele deve imaginar que estabeleceu uma conexao e tentar iniciar algum menu ou coisa do genero.

obviamente, a simulacao mais realista mesmo seria com o gerador de ring, mas eh meio chato.

RobL escreveu:Marcelo, excelente.
A idéia de cabo entre seriais é boa só não sei como fazer gerar um ring através do minicom, a não ser discando um número, com atdtnnn..., ou seja, não encontrei um comando, para passar ao modem, ou para a porta ttyS1, para gerar um ring.

A segunda idéia, gerar o ring simulando o sinal da linha é uma saída. Talvez seja a solução, se não conseguir por software.

No momento só preciso fazer o programa pegar esse ring. Com o ring ele chama vários outros e ver no log o que está acontecendo, para ir corrigindo.

Obrigado, valeu.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor RobL » 17 Jun 2009 11:46

Ok, Marcelo, mais uma vez grato pelas informações, valeu mesmo.
Como lhe disse, vou analisar o fonte do programa, pois me parece que o modem gera a string "RING" e o programa testa essa string. No momento que lhe escrevo não sei se é isso ainda.
Parece que vou ter que simular sinais também, pois se deixo o modem desligado o programa chama atenção que o cabo está desligado ou com defeito.
Grato.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor msamsoniuk » 17 Jun 2009 23:59

opa, os sinais dah para simular tambem com o cabo serial. a conexao da porta serial em um modem seria algo tipo:

Imagem

portanto, ligar ttyS0 em um modem de verdade ou ligar ttyS0 com ttyS1 seria equivalente, soh tomando cuidado de ligar input com output:

Imagem

bom, nao sei exatamente se no minicom vc pode controlar todos os sinais... entao uma solucao poderia ser colocar umas chavinhas para controlar alguns sinais que vc nao consegue controlar direto por software :)

a descricao dos sinais do modem seria:

Imagem

as vezes colocar as chavinhas para ligar e desligar os sinais fica mais facil e barato q simular o ring de verdade para o modem hehehe

RobL escreveu:Ok, Marcelo, mais uma vez grato pelas informações, valeu mesmo.
Como lhe disse, vou analisar o fonte do programa, pois me parece que o modem gera a string "RING" e o programa testa essa string. No momento que lhe escrevo não sei se é isso ainda.
Parece que vou ter que simular sinais também, pois se deixo o modem desligado o programa chama atenção que o cabo está desligado ou com defeito.
Grato.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor RobL » 18 Jun 2009 10:32

Verifiquei que com o minicom posso enviar a string RING (ou qualquer coisa), o problema está em como relacionar a velocidade. No minicom é fácil configurar mas é fixa a velocidade. Como tenho um programa pronto, do outro lado, ele vai fazer uma negociação de velocidade e aí o minicom vai ficar quieto, sem responder nada. Talvez de para passar um comando AT para informar a velocidade ou teria que passar por cima do handshacke e isso penso que só alterando o fonte para teste, aparentemente é simples mas pode não ser.

Rapaz, consegui um programa em perl (vocplocal.pl) que faz toda a parte que preciso de simulação, depois do modem, ou seja, simula envio de números em DTMF para o programa, mas após o modem. Com essa ferramenta dá para configurar praticamente tudo.

Quanto à parte do modem, este está ok, portanto vai dar para passar por cima desta, mera sorte, por ter achado o programa.
O que se nota, é que não é simples simular um modem. Certamente a santa net tem algum software escondido em algum pacote. O programa acima achei ao acaso dentro de um pacotão.

Depois que terminar de configurar, vou testar essas suas sugestões.
Creio que o modem clássico é um bicho em extinção, daí talvez poucos estejam trabalhando em cima disso.
Cara, muito obrigado pela sua atenção e paciência (seus desenhos), legal a parte do circuito para simular o ring. Ajudou muito.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56


Voltar para Linux ( x86 ou x64 )

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 0 visitantes

x