问题:MQX中用read函数读串口时如何做超时机制(已解决)

2020-02-11 10:00发布

本帖最后由 FSL_TICS_ZP 于 2014-6-17 09:10 编辑

我目前在用MQX中的串口,我发现如果用read函数来读取串口数据时,当对方不发数据给串口接收,那么read函数会死等,而且会将CPU占用不放,没有超时机制,而且在线程中死等,别的线程也开启不了,就连想提示一下错误也做不了!怎么样在不改动驱动的情况下,可以让read超时自动跳出啊?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
28条回答
wangpengcheng
1楼-- · 2020-02-12 02:34
浪里白条 发表于 2014-6-13 09:46
搞一个超时的计数器,到点了就break出去,这样解决可行否

这个方法我想过,不可行,因为当等待的时候CPU被占用,除非用硬件定时器中断!不过这种方法是最不愿意用的,程序架构就搞乱了!
wangpengcheng
2楼-- · 2020-02-12 03:55
albert_w 发表于 2014-6-13 09:34
Linux上的非阻塞编程可以在读写千做一个select,判断是否可读写,然后再动手 ...

MQX中貌似没有这种机制!
浪里白条
3楼-- · 2020-02-12 04:43
MQX开发中存不存在软件费用?
usecool
4楼-- · 2020-02-12 09:24
用任务和事件来做。
专门一个来读取的任务。
wangpengcheng
5楼-- · 2020-02-12 09:30
 精彩回答 2  元偷偷看……
wangpengcheng
6楼-- · 2020-02-12 12:04
usecool 发表于 2014-6-13 11:33
用任务和事件来做。
专门一个来读取的任务。

除非改驱动,否则不行,因为只要进入read,没接够数据他就不会退出来,也就是说该任务永远结束不了!

一周热门 更多>