这个问题已经解决了。
首先,串口支持全双工模式,即串口的接收缓冲区和发送缓冲区是分开的,故可以使用多个线程同时,不互斥的同时读写串口。
然后,定义4个线程:一个主线程(界面线程,启动时的主线程),一个串口监听线程,一个处理接收到的串口数据的线程,一个写串口的线程。另外,再定义两个缓冲区队列,一个存放从串口接收到的数据(Qr),一个存放向串口写的命令(Qw)。
发送时:界面线程向Qw中插入一条向串口发送的数据帧,然后返回;写串口的线程从队列中取数据帧写到串口。两个线程间是一个生产者-消费者问题;
接收时:串口监听线程接收完整数据帧,放入Qr,然后继续监听串口;处理接收到的串口数据的线程从Qr中读取数据帧并处理,两个线程间也是一个生产者-消费者问题。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。