VC 串口 多线程 编程,该怎么处理
VC 串口 多线程 编程
问题一:我在同一程序中同时启动了两个串口,现在想把这两个串口的接收分别放到两个线程中,请问如何解决呢?
问题二:不同的情况下触发不同的事件,这两个事件有可能是同时发生的,而且事件函数也是已知的,如何将这两个事件的函数放到的两个不同线程中呢?
------解决方案--------------------
帮顶!
------解决方案--------------------
启动两个线程就行了(CreateThread()),每个线程处理一个串口,在线程中处理各自的事件通知,调用相应的函数就行了
------解决方案--------------------
1、按你的想法创建两个线程就是了。
2、多个线程可以执行相同的代码,也可以访问系统的变量。
------解决方案--------------------
直接用cncomm吧,你需要的都已经封装成类了,每个串口后台开了一个线程,另外可以通过虚函数或者消息两种方式处理接收数据
这是源代码
http://blog.****.net/wujian53/archive/2007/09/21/1794187.aspx
这是例子
http://dev.yesky.com/29/2310029.shtml
------解决方案--------------------
你用什么写的呢?如果是用MSCOMM,你可以在线程里读取控件的缓冲区数据,其实对于多线程来说CserialPort类足够满足要求了,其实用线程就是查询方式,而其他一些触发是中断方式,就像MSCOMM,其实它的数据接收就是靠硬件中断,所以它的接收事件很难满足大数据量快速的实时接收处理。
------解决方案--------------------
开一个检测串口的线程就可以了,两个串口没有什么影响的都是独立的,可以开两个线程同时运行。
------解决方案--------------------
创建两个线程,线程中可以访问事件函数,如果需要同步或互斥的话,也得注意下。
------解决方案--------------------
如果是用VC自带的MSCOMM控件做的话,你在程序里放2个控件,一个控件对应一个串口,然后控件生成OnComm消息,你只要在里面处理就可以了,这个消息本身就相当于一个线程
------解决方案--------------------
MSCOMM,在程序里放两个控件就可以了。它本身会开线程。
问题一:我在同一程序中同时启动了两个串口,现在想把这两个串口的接收分别放到两个线程中,请问如何解决呢?
问题二:不同的情况下触发不同的事件,这两个事件有可能是同时发生的,而且事件函数也是已知的,如何将这两个事件的函数放到的两个不同线程中呢?
------解决方案--------------------
帮顶!
------解决方案--------------------
启动两个线程就行了(CreateThread()),每个线程处理一个串口,在线程中处理各自的事件通知,调用相应的函数就行了
------解决方案--------------------
1、按你的想法创建两个线程就是了。
2、多个线程可以执行相同的代码,也可以访问系统的变量。
------解决方案--------------------
直接用cncomm吧,你需要的都已经封装成类了,每个串口后台开了一个线程,另外可以通过虚函数或者消息两种方式处理接收数据
这是源代码
http://blog.****.net/wujian53/archive/2007/09/21/1794187.aspx
这是例子
http://dev.yesky.com/29/2310029.shtml
------解决方案--------------------
你用什么写的呢?如果是用MSCOMM,你可以在线程里读取控件的缓冲区数据,其实对于多线程来说CserialPort类足够满足要求了,其实用线程就是查询方式,而其他一些触发是中断方式,就像MSCOMM,其实它的数据接收就是靠硬件中断,所以它的接收事件很难满足大数据量快速的实时接收处理。
------解决方案--------------------
开一个检测串口的线程就可以了,两个串口没有什么影响的都是独立的,可以开两个线程同时运行。
------解决方案--------------------
创建两个线程,线程中可以访问事件函数,如果需要同步或互斥的话,也得注意下。
------解决方案--------------------
如果是用VC自带的MSCOMM控件做的话,你在程序里放2个控件,一个控件对应一个串口,然后控件生成OnComm消息,你只要在里面处理就可以了,这个消息本身就相当于一个线程
------解决方案--------------------
MSCOMM,在程序里放两个控件就可以了。它本身会开线程。