如何及时读取串口收到的数据。

启泰Sean 2006-06-28 02:15:25

  不知有什么办法才能以最快的反应时间来读取串口收到的数据,类似于串口中断,但是不知道在应用程序中如何实现串口中断。。

   现在我的程序当中,是不断的read,看是否有数,,有数就读,没有数就不读。。这种方法效率很低,, 
   不知各位大虾有什么好的方法。。。

...全文
270 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
启泰Sean 2006-06-29
  • 打赏
  • 举报
回复
多谢两位楼主啊。。 说的没错,我现在是在做以前单片机实现在的工能,要在Linux下实现。。

  所以我才想问问在linux下是否也能实现更好的实时性。
tb01412 2006-06-28
  • 打赏
  • 举报
回复
因为你的操作系统是非实时的,所以无法让你实现实时的效果,而且操作系统接管了中断,所以你的应用层是无法直接使用中断的,想必LZ在C51下做惯了程序,才会有此疑问的
erhei 2006-06-28
  • 打赏
  • 举报
回复
采用事件方式读取

int retval = 0;
FD_ZERO (&fs_read);
FD_SET (fd, &fs_read);
tv_timeout.tv_sec = TIMEOUT_SEC (bufferlength, GetBaudrate ());
tv_timeout.tv_usec = TIMEOUT_USEC;
retval = select (fd + 1, &fs_read, NULL, NULL, &tv_timeout);
if (retval) {
(read (fd, buffer, bufferlength);

23,124

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧