我正在用C编写一个应用程序,它使用串行端口与蓝牙设备进行通信。我发现我可以关闭com端口,重新启动蓝牙设备,然后重新打开端口,以便从先前的连接中找到位于读缓冲区中的陈旧数据。我需要刷新I / O缓冲区。解决方案似乎是使用
tcflush(fd, TCIOFLUSH)
,根据OS X的tcflush手册页,
刷新收到但未读取的数据和写入但未传输的数据。
然而,这似乎无效。
根据Unix: How to clear the serial port I/O buffer?,Unix上的解决方案是使用
ioctl(fd, TCFLUSH, 2)
但是TCFLUSH
没有在Mac上定义,我不确定它的等价物是什么。