读书人

多线程串口通讯有关问题

发布时间: 2012-03-27 13:44:24 作者: rapoo

多线程串口通讯问题
在无外界干扰下程序整体运行正确,但单步运行却通不过
具体情况如下:
1.使用CSerialPort类实现串口通讯,该类绑定一个窗口类,通过绑定的窗口类来发送和接受,故我在单文档视图类中创建了一个UI线程,由UI线程创建一个非模式对话框作为绑定窗口。
2.在视图类中创建了另一个工作者线程负责监听是否有字符从串口传来。
3.在视图中串口通讯可以在有干扰的情况下(如打开进程管理器或开一个占用很多资源的另一个程序)运行无误,单步也正常。
但由于需要,我在视图中要开启一个对话框,在对话框中也要进行串口通讯,但就不行,情况如最上一行。(模式或非模式情况我都试过,结果一样)

[解决办法]
你在另一个对话框中发消息给前一个对话框,由它完成串口通讯呗。
[解决办法]
做缓存,用多线程
先把要与串口通讯的命令放到缓存,由另外的线程负责与串口进行交互。

[解决办法]
两个线程共用一个队列, 注意同步就行了。
[解决办法]
1.使用CSerialPort类实现串口通讯,该类绑定一个窗口类,通过绑定的窗口类来发送和接受,故我在单文档视图类中创建了一个UI线程,由UI线程创建一个非模式对话框作为绑定窗口。

不明白你为何要通过新建一个线程来建对话框。估计这样设计有点问题。
[解决办法]
你的串口通讯是半双工还是全双工?通不过是什么意思?数据没发出还是发出后收到的回应不正确?

读书人网 >VC/MFC

热点推荐