串行编程(硬件握手)

我正在尝试使用C / C ++在Linux中使用硬件握手来编程串行通信。 实现握手的信号是CTS(清除发送)和RTS(请求发送)。 目前我设置CTS信号的function如下所示:

int setCTS(int fd, int value) { int status; ioctl(fd, TIOCMGET, &status); // get the current port status if (value) status |= TIOCM_CTS; // rise the CTS bit else status &= ~TIOCM_CTS; // drop the CTS bit ioctl(fd, TIOCMSET, $status); // set the modified status return 0; } 

其中fd是端口的文件描述符, value是为信号设置的值。 要基于http://www.easysw.com/~mike/serial/serial.html#5_1编写这个函数。

问题是gcc不能识别例子中使用的任何常量。 有什么build议么?

– 更新 –

我find了答案。 看另一个例子, sys/ioctl.h声明常量。

Solutions Collecting From Web of "串行编程(硬件握手)"

这可能不适用于您的特定应用程序,但我想我会在这里发布它,以防止它或其他人搜索。

在大多数带有termios系统中,可以在传递给tcsetattrtermios结构的->c_cflags成员中设置CRTSCTS标志,并让内核或硬件为您执行RTS / CTS流控制。

(这不是POSIX,但它在BSD和SystemV衍生系统上,所以几乎在任何地方 – 包括Linux)。