Página 1 de 1
Como simular um "RING" de um modem ?

Enviado:
16 Jun 2009 10:55
por RobL
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.

Enviado:
16 Jun 2009 11:29
por pbernardi
Hm... Você sempre pode ligar do seu celular a cobrar pro seu telefone...


Enviado:
16 Jun 2009 12:16
por RobL
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.

Enviado:
16 Jun 2009 12:35
por msamsoniuk
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

Enviado:
16 Jun 2009 13:06
por RobL
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.

Enviado:
16 Jun 2009 13:18
por RobL
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.

Enviado:
16 Jun 2009 16:40
por polesapart
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.

Enviado:
16 Jun 2009 17:32
por RobL
É 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.

Enviado:
16 Jun 2009 19:47
por msamsoniuk
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.

Enviado:
17 Jun 2009 11:46
por RobL
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.

Enviado:
17 Jun 2009 23:59
por msamsoniuk
opa, os sinais dah para simular tambem com o cabo serial. a conexao da porta serial em um modem seria algo tipo:
portanto, ligar ttyS0 em um modem de verdade ou ligar ttyS0 com ttyS1 seria equivalente, soh tomando cuidado de ligar input com output:
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:
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.

Enviado:
18 Jun 2009 10:32
por RobL
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.