怎么设置多次写串口的优先级

如何设置多次写串口的优先级
现在我有多个地方需要写入串口1(都只能往这个串口写):游戏手柄的状态值以及其它地方的用户输入。比如设置一个定时器每50毫秒获取游戏手柄的状态值(一般是获取用户操纵手柄的值),然后把这些状态值写进串口。但是如果此时用户打开了一个其它对话框,输入比游戏手柄优先级更高的指令,然后写入串口。这时就要求对每50毫秒获取游戏手柄状态值的那个操作进行阻塞,优先写入优先级更高的指令。写完之后再继续获取游戏手柄的状态值。

  好像arm处理器中有设置缓冲区优先级的做法,不知道能不能模仿这个做法。现在我想到的是一种做法是多线程:设置一个定时器每50毫秒获取游戏手柄的状态值然后开一个线程将其写到串口;假如用户将优先级更高的指令再开一个线程写入到串口,将游戏手柄的线程阻塞,待这个线程写入完成再允许那个游戏手柄的线程继续运行。不知道这个做法是否可行?

 

------解决方案--------------------
up
帮顶
------解决方案--------------------
//你要保证优先级高的内容先扔到串口的发送缓冲区。
//否则都是白搭。
------解决方案--------------------
提个建议给你参考:
用一个线程来处理串口,其它线程通过PostThreadMessage给该线程发消息来传递要处理的任务,不同优先级的任务使用不同的消息。处理线程WaitMessage等待消息,然后先PeekMessage接收高优先级消息,再PeekMessage接收低优先级消息,如此循环。
------解决方案--------------------
是不是正在执行的优先级低的线程碰到优先级高的就会阻塞,待高的执行完低的会继续执行啊? 
// 是在一个时间片结束后,优先级高的可以抢先获得时间片,而不是阻塞其他线程的执行。
------解决方案--------------------
顶,硬件操作入门好高啊
------解决方案--------------------
探讨
提个建议给你参考:
用一个线程来处理串口,其它线程通过PostThreadMessage给该线程发消息来传递要处理的任务,不同优先级的任务使用不同的消息。处理线程WaitMessage等待消息,然后先PeekMessage接收高优先级消息,再PeekMessage接收低优先级消息,如此循环。

------解决方案--------------------
只要在开始进入工作状态前创建即可。
------解决方案--------------------
用互斥的方法是可以的,不过很复杂,稍不注意就会产生共享冲突和死锁。稍稍看了一眼你上面的流程,感觉有问题,因为流程中使用全局变量来储存优先级,而对全局变量的访问没有线程互斥,所以会有冲突。