У меня есть последовательное устройство (больной LMS200), подключенное к моему ПК с помощью конвертера RS422 в USB. Настройки последовательного порта (скорость передачи, стоп-биты и т. Д.) На LMS200 и моем ПК совпадают и обмениваются данными (проверено с помощью приложения, поставляемого с LMS200). Мне нужно написать собственное приложение, которое связывается с LMS.

Прежде чем я смогу приступить к созданию своего приложения, мне нужно выяснить, как обмениваться датаграммами между ПК и LMS. Чтобы понять это, я пытался вручную отправить дейтаграммы, используя PuTTy. Руководство для LMS ( https://drive.google.com/open?id=0Byv4owwJZ6UU <) определяет типы дейтаграмм и как они должны быть построены. Например, на стр. 46 руководства можно увидеть дейтаграмму, которая отправляет конкретную инструкцию устройству; это выглядит так: 02 00 02 00 30 01 31 18.

Однако, когда я использую PuTTy для отправки строки 02 00 02 00 30 01 31 18, LMS не отвечает (что должно). Я считаю, что он не отвечает, потому что в дейтаграмме отсутствуют какие-либо данные последовательного заголовка или я неправильно представляю шестнадцатеричные значения (я пытался представлять байты, такие как 00, используя 0x00 и 00h но безуспешно). Можете ли вы помочь мне сформулировать правильное серийное сообщение, используя руководство? Я занимаюсь этим очень долго, и мне очень трудно понять, как преобразовать информацию в руководстве в действительную дейтаграмму.

Пожалуйста, дайте мне знать, если я могу предоставить больше информации. Заранее спасибо.

0
Mike 28 Май 2017 в 15:09

2 ответа

Лучший ответ

Я неправильно представляю шестнадцатеричные значения (я пытался представить байты, такие как 00, используя 0x00 и 00h, но безуспешно).

Клавиша Ctrl на клавиатурах терминала / ПК может использоваться для генерации управляющих символов ASCII (т.е. непечатаемых символов с байтовыми значениями от 0x00 до 0x1F).
Точно так же, как клавиша Shift генерирует смещенный или заглавный символ клавиши (вместо несмещенного или строчного символа), клавиша Ctrl (с буквенным или несколькими другими ключами) может генерировать ASCII управляющий символ.

Типичная клавиатура ПК для США может генерировать символ ASCII 'NUL', набрав ctrl- @, то есть, удерживая клавиши CTRL и Shift, и напечатав 2 (так как Символ @ '- это сдвинутый символ клавиши 2 на клавиатурах ПК в США).

Аналогичным образом для 'SOH' или 0x01 типа ctrl-A (то есть CTRL + A клавиш Shift не требуется), для 'STX' или {{ X4}} введите ctrl-B, и так далее .
Для 'SUB' или 0x1A введите ctrl-Z.
Для ESC или 0x1B введите клавишу Esc.
Для 'FS' или 0x1C введите ctrl- \ (или CTRL + \).
Для 'GS' или 0x1D введите ctrl-] (или CTRL + ]).
Для 'RS' или 0x1E введите ctrl- ^ (или CTRL + Shift + 6).
Для 'US' или 0x1F введите ctrl-_ (или CTRL + Shift + -).

Обратите внимание, что несколько часто используемых кодов управления ASCII имеют выделенные клавиши, например,
«HT» имеет ключ Tab для 0x09,
«BS» имеет ключ Backspace для 0x08,
«LF» имеет ключ Enter (в Linux) для 0x0A и
«ESC» имеет ключ Esc для 0x1B.


Если вы не знаете, как генерировать управляющие символы ASCII с клавиатуры, вы можете воспользоваться созданием сообщения в файле с помощью шестнадцатеричного редактора (не текстового редактора), а затем отправить файл.

На самом деле двоичный файл может быть самым надежным методом ручной генерации двоичных сообщений. Ручной ввод управляющих кодов может завершиться ошибкой, если оболочка или прикладная программа перехватывает код в виде специальной директивы (например, ctrl-C или ctrl-Z для прерывания программы), а не обрабатывает ее как данные.
Экранирование входных данных является одним из методов, которые могут быть доступны, чтобы избежать этого.
Телефонным модемам удалось избежать этой проблемы в прозрачном режиме (иначе как с данными), потребовав временной защиты (то есть определенного времени простоя) для разделения и дифференцирования команд от данных.

1
sawdust 29 Май 2017 в 04:51

Способ сделать это состоит в том, чтобы:

(1) загрузите программное обеспечение HexEdit и создайте файл, содержащий значения HEX (не десятичные представления таблицы ascii - где число 2 передавалось как 32)

(2) используйте программное обеспечение Tera Term, чтобы затем отправить файл по последовательной линии.

1
Mike 29 Май 2017 в 01:59