Связь сокета C# TCP с GPS
Привет @Devs, я пытаюсь установить TCP-связь с GPS-устройством, которое отправляет двоичную информацию через GPRS.
До сих пор я работал с несколькими устройствами, использующими UDP с запросом ACK, чтобы предотвратить потерю информации.
Ну а теперь мне нужно сделать TCP-связь с gps, я зондирую несколько TCP-слушателей (думая, что это легкая задача), что-то приходит к слушателю, но потом, когда я пытаюсь разобрать строку или что-то еще, я получаю пустые строки (Я думаю, что Q-разбор ошибочен или что-то в этом роде).
Ну, я запрашиваю поддержку разработчиков в компании, и они посылают куски кода c++ и некоторую информацию, которую я не знаю, как собрать вместе и построить какой-то небольшой TCP c# listener и получать/отвечать ACK, интерпретировать информацию и т. д.
Это информация из службы поддержки GPS, которую они мне присылают.
Привет
Пожалуйста, обратитесь к прилагаемому базовому исходному коду для сервера серии U.
Кроме того, пожалуйста, обратитесь к формату сообщения протокола P1 со страниц 5-8 для разработки вашей платформы. Обратите внимание, что P1 поддерживает только двоичный формат, Пожалуйста, игнорируйте определение формата ASCII.
Например, после того как вы выдали команды связи GPRS, такие как AT$HOSTS, AT$APN, AT$MODID, AT$IPTYPE и т. д., P1 отправит первые данные сердечного ритма на сервер для запроса связи.
Например,
00 04 00 02 00 00 00 00 3C 08 B6 A1 00 AB 00 06 01 39 0C 0D 06 12
Идентификатор транзакции = 0x00 04
Кодировка сообщения = 0x00
Тип сообщения = 0x02
ID модема = 0x00 00 00 00 3C 08 B6 A1
Идентификатор сообщения = 0x00 AB
Длина данных = 0x00 06
RTC час = 0x01
RTC минута = 0x39
RTC секунды = 0x0C
RTC год = 0x0D
RTC месяц = 0x06
RTC день = 0x12
Когда сервер получает запрос на подключение от устройства P1, сервер должен ответить ACK, чтобы установить GPRS-соединение.
Например, чтобы ответить на приведенные выше данные HB,
00 04 00 03 00 00
Идентификатор транзакции = 0x00 04
Кодировка сообщения = 0x00
Тип сообщения = 0x03
Код состояния = 0x0000
Что касается отчета об отслеживании, например, когда вы выдаете при$GPSS=60,2,60 и при$GPSMSG=1,3,0, сервер должен иметь возможность получать обновленное сообщение Report ID 3 GPS каждые 60 секунд от P1.
Например, там, где байты красного цвета-это идентификатор сообщения, очень важно распознать, какой отчет/оповещения вы получаете от устройства.
00 06 00 02 00 00 00 00 3C 08 B6 A1 00 03 00 2E 01 38 35 0D 06 12 00 26 3D EE 00 B9 9E 01 00 00 34 00 01 03 07 00 00 00 00 4С 05 00 00 00 10 67 00 00 01 38 35 0D 06 12 01 39 27 0D 06 12
Сервер должен отвечать на каждое сообщение с одним и тем же идентификатором транзакции, поступающим с устройства.
00 06 00 03 00 00
Кроме того, если вы хотите отправить команду с сервера на устройство, процедура будет выглядеть следующим образом.
Например, запросить MODID, выдав AT$MODID? от сервера к устройству.
Сервер отправляет на$MODID? в двоичном формате,
00 02 01 00 00 09 41 54 24 4D 4F 44 49 44 3F
0x00 02-идентификатор транзакции
0x01-кодировка сообщения
0x00-тип сообщения
0x 00 09-длина данных
0x41 54 24 4D 4F 44 49 44 3F-передача тезисов байтов в текст находится на уровне$MODID? Вы можете легко конвертировать текст в шестнадцатеричный конвертер в интернете.
Когда устройство получает запрос команды от сервера, P1 должен ответить, например, $MODID=100100100,
ОК:MODID
$MODID=100100100
00 02 01 01 00 1c 4f 4b 3a 4d 4f 44 49 44 0d 0a
24 4d 4f 44 49 44 3d 31 30 30 31 30 30 31 30 30 0d 0a
0x00 02-идентификатор транзакции
0x01-кодировка сообщения
0x01-тип сообщения
0x00 1c-длина данных
0x4f 4b 3a 4d 4f 44 49 44 0d 0a-OK:MODID
0x24 4d 4f 44 49 44 3d 31 30 30 31 30 30 31 30 30 0d 0a - $MODID=100100100
Надеюсь, вам это ясно.
Есть идеи, как он интерпретирует это с помощью c#?
Надеюсь, кто-нибудь что-нибудь об этом знает.
С уважением!
Richard MacCutchan
В чем именно заключается проблема? Эти заметки объясняют, как его интерпретировать.
agent_kruger
на самом деле с большим размером вашего вопроса никто не ответит. Пожалуйста, сократите его на короткие кусочки, а затем представьте нам. Так, чтобы мы могли понять и помочь вам ,сэр