Получение данных из последовательного порта

Получение данных из последовательного порта

Я хочу получать данные из последовательного порта RS232 на свой терминал и с директивой в файл. Это должно быть довольно просто.

cat /dev/ttyS0
cat /dev/ttyS0 > file.txt

Перед этим я настроил параметры так, чтобы они соответствовали параметрам устройства (биохимического анализатора).

sudo stty -F /dev/ttyS0 9600 -parity cs8 cstopb

то есть

  1. Скорость передачи данных - 9600
  2. Паритет - Нет
  3. Биты - 8 бит
  4. Стоп-биты - 2

Но я ничего не получаю на терминал. Он просто пустой. В чем проблема?

решение1

ПытатьсяМиникомсначала и посмотрите, что ваш последовательный порт возвращает. Установите его с помощьюsudo apt-get install minicom

Запускаем его следующим образом (для ttyS0):

sudo minicom -D /dev/ttyS0

Вы можете задать параметры связи из Minicom (используя ctrl-A P), чтобы быть уверенным в их правильности.

Если ваше устройство использует определенный протокол, ему может потребоваться команда для начала коммуникации. Так что посмотрите руководство пользователя.

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

Если вы не можете отключить его, то вам придется настроить его на своей стороне. В Minicom это находится под ctrl-A Oи затем serial port setup.

Я часто использовал Minicom для отладки последовательных соединений и обнаружил, что он работает лучше всего.

Я получил еще некоторую информацию от ОП:

Лабораторный прибор (Cobas C311) использует протокол ASTM. Там в интерфейсе нам просто нужно нажать «Отправить на хост», и он отправит кучу записей ASTM. Мне просто нужно получить их в файле. Есть ли какие-либо другие настройки? Какая команда для начала получения данных? ... и как сохранить данные в файле?

Выбрал правильные параметры. Minicom показывает 9600 8N2. Надеюсь, все в порядке. Но ничего не получает - ни одного бита. Анализатор говорит: "Прибор передал ENQ как запрос на отправку, но Хост не вернул ACK или NAK в течение 15 секунд. (Тайм-аут соединения)"

Устройство используетПротокол ASTM. Устройство отправляет <ENQ>символ как сигнал о том, что оно готово начать отправку данных.
Это не то, что вы сможете получить с помощью minicomили любой другой терминальной программы. Вам понадобится соответствующее прикладное программное обеспечение, поддерживающее этот протокол.

Вам определенно нужно прочитать руководство пользователя и проверить установочный диск (если таковой имеется) и веб-сайт производителя на предмет наличия приложения, поддерживающего этот протокол.
Я был бы удивлен, если бы у них не было поддержки приложений для этого устройства. Если они что-то предлагают, то, скорее всего, это будет приложение Windows или какой-то пример кода плюс библиотека.

Можно написать что-то самому, но это будет нелегко. Есть некоторая поддержка Python дляАмериканское общество по испытанию материалов (ASTM)и естьPerl-скриптчто вы могли бы попробовать.

У SO также естьпочтас некоторой информацией об ASTM..

Связанный контент