【发布时间】:2011-03-14 15:00:19
【问题描述】:
我正在 linux 中编写一个程序,通过串行接口与一个硬件连接。该设备以大约 10Hz 的频率发送大约 30-40 字节的数据包。该软件模块将与其他模块交互并通过 IPC 进行通信,因此它必须执行特定的 IPC 睡眠,以允许它在没有做任何有用的事情时接收它订阅的消息。
目前我的代码如下所示:
while(1){
IPC_sleep(some_time);
read_serial();
process_serial_data();
}
这样做的问题是,有时会在串行端口上只有一小部分下一个数据包可用时执行读取,这意味着直到下一次循环时才会全部读取。对于特定的应用程序,最好在数据可用时立即读取数据,并且程序在读取时不会阻塞。
这个问题的最佳解决方案是什么?
【问题讨论】:
-
如果您提供更多关于 IPC_sleep 中发生的事情的详细信息,可能会更容易回答
标签: c linux multithreading serial-port