![직렬 포트를 RS-485 모드로 설정하는 방법은 무엇입니까?](https://linux55.com/image/76322/%EC%A7%81%EB%A0%AC%20%ED%8F%AC%ED%8A%B8%EB%A5%BC%20RS-485%20%EB%AA%A8%EB%93%9C%EB%A1%9C%20%EC%84%A4%EC%A0%95%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
직렬 포트에서 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)...