GSM-модем Wavecom в качестве TCP-клиента
Вопрос
Я пытался наладить TCP-связь с помощью своего модема Wavecom Fastrack.Чего я хочу добиться, так это заставить модем подключаться к указанному порту TCP-сервера, чтобы я мог передавать данные на сервер и с него.Я нашел кое-какую информацию о than в руководство пользователя.Основываясь на информации, которую вы можете найти на странице 66, я создал приложение, которое открывает последовательный порт, к которому подключен модем, и записывает следующие 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
Это именно то, что сказано в руководстве пользователя.После отправки последней команды модему устройство переключается в режим обмена данными, и с этого момента все, что записывается на последовательный порт, открытый моим приложением, должно приниматься сервером, и все, что сервер отправляет, должно появляться во входном буфере этого порта.
Дело в том, что мне не удалось поддерживать стабильную двунаправленную связь между сервером и моим модемом.Когда я записываю некоторые данные в последовательный порт (всего несколько байт), требуется много времени, прежде чем данные появятся на стороне сервера, и во многих случаях данные вообще не доходят до сервера.
Я выполнил несколько тестов, записывая сразу около 100 байт на последовательный порт.Регистрируя данные, полученные моим серверным приложением, я заметил, что первая часть данных (8-35 байт) принимается через секунду или две.Остальные данные отображаются через 2-5 секунд (либо целиком, либо фрагментами указанного размера), либо не отображаются вообще.
Я не знаю, где искать причину такого поведения.Я использовал неправильные AT-команды для переключения модема в режим TCP-клиента?Я не могу поверить, что связь может быть такой медленной и нестабильной.
Любой совет будет оценен с благодарностью.Заранее благодарю вас.
Решение
какую ОС вы используете?Windows неплохо скрывает неприятные детали связи с GPRS-модемом, все, что вам нужно сделать, это создать новое коммутируемое соединение.Чтобы установить соединение, вы можете вызвать функцию Win32 RasDial.После подключения вы можете использовать стандартные сокеты для передачи данных через TCP-порт.
Другие советы
я использую модем wavecomm уже 2 года.Насколько я знаю из своего опыта, если вы можете отправить часть данных, то вы можете отправить все данные.
проблема может быть в прослушивающем приложении, которое получает данные на стороне сервера.Возможно, он не в состоянии справиться с объемом данных, которые вы пытаетесь отправить.
попробуйте отправлять те же данные меньшими порциями с некоторой задержкой между ними, тогда вы сможете получить все данные в целости и сохранности.