Не могу прочитать данные с последовательного порта ttymxc - PullRequest
0 голосов
/ 23 мая 2019

Поэтому я пытаюсь подключить встроенное устройство Linux к серверу через последовательный порт RS485.
Я использую адаптер USB / RS для подключения его к ноутбуку. Сервер может получить запрос и отправить ответ, но клиент не получает ответ. чтобы узнать больше, я попытался проверить соединение между устройством и ноутбуком с помощью Power Shell

PS C:\Users\oziat.VIX> $port= new-Object System.IO.Ports.SerialPort COM4,9600,None,8,one
PS C:\Users\oziat.VIX> $port.open()
PS C:\Users\oziat.VIX> $port.ReadLine()
hello

от клиента:

echo "hello" > /dev/ttymxc1

То есть, если я пытаюсь отправить данные с powershell, я ничего не получаю с другого конца

PS C:\Users\oziat.VIX> $port.WriteLine("Hello world")
# cat  /dev/ttymxc1
_

Я пытался проверить, нет ли проблем с оборудованием. Я почти уверен, что это не так (учитывая тот факт, что я могу получать данные на сервер)

Выход из серийного номера

# setserial /dev/ttymxc1
/dev/ttymxc1, UART: undefined, Port: 0x0000, IRQ: 32, Flags: low_latency
#

Я не знаю, почему для uart установлено значение undefined, и я не смог его изменить

setserial: can't set serial info: Invalid argument

Заранее спасибо :)

Edit: Мне удалось определить проблему, устройство поставляется предварительно настроенным в режиме RS422, мне пришлось настроить его для работы в режиме RS485, используя ioctl()

1 Ответ

1 голос
/ 23 мая 2019

Драйвер для вашего последовательного порта не работает с setserial.

См. Из справочных страниц:

setserial получает информацию через вызов ioctl (). В случае, если водитель для вашего устройства не поддерживает TIOCGSERIAL, «неверный аргумент» вернулся.

Я думаю, вам нужно использовать stty или что-то вроде minicom.

...