【发布时间】:2014-08-11 19:17:43
【问题描述】:
我正在尝试在我的程序中设置半双工通信。我的 RS485 收发器使用 RTS 标志 (TIOCM_RTS) 在发送和接收之间来回切换。要发送/接收数据,我需要手动更改 RTS 标志:
将 RTS 设置为高。
发送数据。
-
将 RTS 设置为低。
int setRTS(int level) { int status; ioctl(ser_port, TIOCMGET, &status); if(level) { status |= TIOCM_RTS; } else { status &= ~TIOCM_RTS; } ioctl(ser_port, TIOCMSET, &status); return 1; }
我的问题是:linux内核不应该能够自动切换RTS吗? 以及如何确保在调用 setRTS(0) 之前发送了数据?
【问题讨论】:
标签: c linux serial-port rs485