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

4207
Br. Sayan

Я хочу получать данные от последовательного порта 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

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

2

1 ответ на вопрос

5
NZD

Try Minicom first and see what your serial port returns. Install it with sudo apt-get install minicom

You start it as follows (for ttyS0):

sudo minicom -D /dev/ttyS0 

You can set the communication parameters from within Minicom (using ctrl-A P), so you're sure that they are correct.

If your device uses a specific protocol, it might need a command to start its communication. So have a look at the user manual.

Maybe your device is set up to use hardware handshaking. If possible, turn it off (at least to start with).

If you can't turn it off, then you will have to set that up as well on your side. In Minicom this is under ctrl-A O and then serial port setup.

I've used Minicom often to debug serial communications and I find it works best.

I've received some more information from the OP:

The laboratory instrument(Cobas C311) uses ASTM protocol. There in the interface, we just need to click "Send to Host" and it sends a bunch of ASTM records. I just need to receive them in a file. Is there any other setting? What is the command to start acquiring data?...and how to save the data in a file?

Chosen the right paramters. Minicom is showing 9600 8N2. Hope it's alright. But receiving nothing - not a single bit. The analyser says, "The instrument transmitted ENQ as a send request,but the Host did not return ACK or NAK within 15 seconds.(Link Timeout)"

The device uses the ASTM Protocol. The device sends the <ENQ> character as a signal that it is ready to start sending data.
This is not something you will be able to receive using minicom or any other terminal program. You will need proper application software that supports this protocol.

You definitely have to read your user manual and check the installation disk (if any) and the manufacturer's website for an application that supports this protocol.
I would be surprised if they don't have application support for this device. If they offer something it is likely to be a Windows application or some example code plus a library.

It is possible to write something yourself, but it won't be easy. There is some Python support for ASTM and there is a Perl script that you could try.

SO also has a post with some information about ASTM..

Спасибо! Лабораторный прибор (Cobas C311) использует протокол ASTM. Там в интерфейсе, нам просто нужно нажать «Отправить на хост», и он отправляет кучу записей ASTM. Мне просто нужно получить их в файле. Есть ли другие настройки? Что такое команда начала сбора данных? ... и как сохранить данные в файл? Br. Sayan 8 лет назад 0
Выбрал правильные параметры. Миником показывает 9600 8N2. Надеюсь, все в порядке. Но ничего не получил - ни единого кусочка. Анализатор говорит: «Переданный инструмент как запрос на отправку, но Хост не вернулся или же в течение 15 секунд. (Link Timeout) " Br. Sayan 8 лет назад 0
Похоже, ваше устройство на самом деле ожидает, что компьютер поймет данные и _ отправит ответ_ - ему нужен обмен [ENQ / ACK] (https://en.wikipedia.org/wiki/Enquiry_character), возможно, чтобы убедиться, что компьютер слушает. Попробуйте отправить байт ACK, нажав [Ctrl + F] (https://en.wikipedia.org/wiki/C0_and_C1_control_codes). grawity 8 лет назад 1
Устройство действительно ожидает обмена ENQ / ACK и не передает никаких сообщений, пока не получит его. Нам удалось получить сообщения через [nrComm Lib] (http://www.deepsoftware.com/nrcomm/astm.html), что было предложено NZD. Но это не служило цели, так как нам нужны сообщения, автоматически сохраняемые в файле. Ctr + F тоже не сработало, как предположил @grawity. Нужно разобраться разными способами. На заметку, не могли бы вы предложить способы проверить, правильно ли работает кабель RS232 (хотя я вполне уверен, что он работает), и какие контакты закорочены, чтобы можно было убедиться, что все в порядке. Br. Sayan 8 лет назад 1
@ Br.Moksha Если вы успешно получили сообщения, значит, ваше соединение RS232 - и кабель - работают нормально. Не нужно тестировать дальше. NZD 8 лет назад 0
@ Br.Moksha Если вы действительно хотите, вы можете проверить кабель, замкнув TxD и RxD (контакты 2 и 3 на 9-контактном разъеме sub-D (DE9)). Обязательно отключите аппаратное управление потоком (`ctrl-A O`,` настройка последовательного порта` в minicom). Каждый символ, который вы вводите в minicom, будет затем возвращаться назад. Если вы также хотите проверить аппаратное управление потоком, вы должны закорачивать RTS и CTS (контакты 8 и 9 на 9-контактном Sub-D). Также смотрите Википедию: [RS-232] (https://en.wikipedia.org/wiki/RS-232) и [Последовательный порт] (https://en.wikipedia.org/wiki/Serial_port) и этот [учебник ] (http://www.ni.com/tutorial/3450/en/) от National Instruments NZD 8 лет назад 2

Похожие вопросы