Страницы

Поиск по вопросам

пятница, 27 декабря 2019 г.

Работа с serialport (FTDI) из bash

#linux #bash #serial


Linux, Raspbian 8. 
В USB воткнут преобразователь USB-CAN. Появляется в системе как /dev/ttyUSB0

Сам преобразователь и устройство за ним точно рабочие. 

Требуется послать в порт 4 байта, подождать 200мс и получить ответ в 4 байта.

попробовал вот так:

#!/bin/bash
PORT="/dev/ttyUSB0"
stty -F $PORT 9600

printf '\x0b\x00\x06\x80' > $PORT
sleep 0.2
read -rn 4 data < $PORT
echo $data


На строке с read все зависает. Видимо не получает не каких данных в ответ. Пробовал
менять на 1 входящий символ. Но похоже в ответ полная тишина. 

Правильно ли я вообще работаю с портом? В какую сторону копать?

UPDATE 10.03

что-то нахимичил


теперь все что, отправляю в порт прилетает обратно. Именно то, что отправил но не
то что ожидаю от оборудования
еще странная вещь 

$ stty -F /dev/ttyUSB0
stty: /dev/ttyUSB0: Неприменимый к данному устройству ioctl
$ setserial /dev/ttyUSB0
Cannot get serial info: Inappropriate ioctl for device


    


Ответы

Ответ 1



Для передачи двоичных данных у меня работает следующая настройка порта: stty raw -echo -onlcr -iexten 9600 -F /dev/ttyUSB0 Для usb-serial-преобразователя имя устройства после очередного переподключения иногда может непредсказуемо поменяться с ttyUSB0 на ttyUSB1, ttyUSB2 и т.д.

Комментариев нет:

Отправить комментарий