Pergunta

Eu tenho tentado fazer comunicação TCP usando meu modem WaveCom Fastrack. O que eu quero alcançar é fazer com que o modem se conecte a uma porta do servidor TCP especificada para me permitir transferir dados de e para o servidor. Eu encontrei algumas informações sobre do que em o guia do usuário. Com base nas informações que você pode encontrar na página 66, criei um aplicativo que abre a porta serial à qual o modem está conectado e escreve os seguintes comandos AT:

AT+WIPCFG=1 //start IP stack
AT+WIPBR=1,6 //open GPRS bearer
AT+WIPBR=2,6,11,"APN" //set APN of GPRS bearer
AT+WIPBR=2,6,0 //username
AT+WIPBR=2,6,1 //password
AT+WIPBR=4,6,0 //start GPRS bearer

AT+WIPCREATE=2,1,"server_ip_address",server_port //create a TCP client on port "server_port"

AT+WIPDATA=2,1,1 //switch do data exchange mode

É exatamente isso que diz o guia do usuário. Depois que o último comando é enviado ao modem, o dispositivo muda para o modo de troca de dados e, a partir de tudo, tudo o que é escrito na porta serial aberto pelo meu aplicativo deve ser recebido pelo servidor e tudo o que o servidor envia deve aparecer no buffer de entrada daquela porta.

O fato é que eu não consegui manter uma comunicação bidirecional estável entre o servidor e meu modem. Quando escrevo alguns dados para a porta serial (apenas alguns bytes), leva muito tempo até que os dados apareçam no lado do servidor e, em muitos casos, os dados não atinjam o servidor.

Realizei alguns testes escrevendo cerca de 100 bytes na porta serial de uma só vez. Registrando os dados recebidos pelo meu aplicativo de servidor, notei que a primeira peça de dados (8-35 bytes) é recebida após um segundo ou dois. O restante dos dados aparece em 2-5 segundos (como um todo ou em pedaços do tamanho referido) ou não aparece.

Não sei onde procurar o motivo desse comportamento. Eu usei comandos AT errados para alternar o modem para o modo de cliente TCP? Não acredito que a comunicação pode ser tão lenta e instável.

Qualquer conselho será apreciado. Agradeço antecipadamente.

Foi útil?

Solução

Qual sistema operacional você está executando? O Windows faz um bom trabalho ao esconder os detalhes confusos da comunicação com o modem GPRS, tudo o que você precisa fazer é criar uma nova conexão dial-up. Para estabelecer a conexão, você pode fazer uma chamada para a função rasdial Win32. Depois de conectado, você pode usar soquetes padrão para transferir dados em uma porta TCP.

Outras dicas

Eu uso o modem WaveComm há 2 anos. Como eu sei pela minha experiência é que, se você puder enviar alguns dos dados, poderá enviar todos os dados.

O problema pode estar no aplicativo de escuta que recebe os dados no lado do servidor. Pode ser que não consiga lidar com a quantidade de dados que você está tentando enviar.

Tente enviar os mesmos dados em bustos menores com algum atraso entre eles, então você pode receber todos os dados intactos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top