
Я использую конвертер с последовательного порта на usb и в Windows можно открыть свойства последовательного порта и установить флажок RS-485, только после этого я могу получать данные с устройства. Как сделать то же самое в Linux? Потому что по умолчанию я получаю тот же результат, что и в Windows с неотмеченным RS-485:
Port name - /dev/ttyACM0; Method name - readBytes(); Serial port operation timeout (500 ms).
execute try 2 error: I/O exception - failed to read
Мое устройство:
Bus 001 Device 008: ID 04e2:1411 Exar Corp.
setserial -a /dev/ttyACM0
/dev/ttyACM0, Line 0, UART: unknown, Port: 0x0000, IRQ: 0
Baud_base: 115200, close_delay: 5, divisor: 0
closing_wait: 300
Flags: spd_normal low_latency
решение1
Вам придется написать код на языке C, как описано вдокументация по ядру.
#include <linux/serial.h>
struct serial_rs485 rs485conf = {0};
int fd = open ("/dev/ttyACM0", O_RDWR);
if (fd < 0)...
rs485conf.flags |= SER_RS485_ENABLED;
if (ioctl (fd, TIOCSRS485, &rs485conf) < 0)...