主题:关于串口、线程以及回调函数的问题? 共有35559人关注过本帖 |
---|
Rite2009 |
1楼 |
关于串口、线程以及回调函数的问题? Post By:2009-8-6 17:44:00 [只看该作者]
我想直接用例子程序中的CCESerial类,但是我需要同时开三个串口,这样的话我需要建三个串口对象,它们分别操作不同的设备,如何处理CCESerial类中的接收线程中的回调函数?谢谢!
|
|
单帖管理 | 引用 | 回复 |
x10 |
2楼 |
Post By:2009-8-6 23:12:00 [只看该作者]
如果不同的处理,可以分别加载不同的回调函数。
|
|
单帖管理 | 引用 | 回复 |
9260 |
3楼 |
Post By:2009-8-7 8:42:00 [只看该作者]
是的啊,而且是下载的新的。
|
|
单帖管理 | 引用 | 回复 |
lqk |
4楼 信息 | 搜索 | 邮箱 |
加好友 发短信 |
Post By:2009-8-7 10:00:00 [只看该作者]
ceSer.OnReceive和ceSer.OnError是回调函数指针,你只需定义不同的回调函数,将函数名附给它们就行了。
比如: class CCESerial  ceSer1,ceSer2; ... ceSer1.OnReceive = OnReceive1; ceSer1.OnError = OnError1; ceSer2.OnReceive = OnReceive2; ceSer2.OnError = OnError2; ... void CALLBACK OnReceive1( ) {...} void CALLBACK OnError1( ) {...} void CALLBACK OnReceive2( ) {...} void CALLBACK OnError2( ) {...} |
单帖管理 | 引用 | 回复 |
em9260 |
5楼 |
Post By:2009-12-29 10:57:00 [只看该作者]
那接收函数里面怎么处理?需要写两个CESerial.cpp接收函数 ?
lpSerial->OnReceive( ); |
|
单帖管理 | 引用 | 回复 |
9260 |
6楼 |
Post By:2009-12-29 11:23:00 [只看该作者]
lqk:ceSer.OnReceive和ceSer.OnError是回调函数指针,你只需定义不同的回调函数,将函数名附给它们就行了。
请问: 2个串口发过来的数据,在接收函数中,怎么去判断是哪个串口发过来的数据?该调用哪个串口的回调函数? |
|
单帖管理 | 引用 | 回复 |
lqk |
7楼 信息 | 搜索 | 邮箱 |
加好友 发短信 |
Post By:2009-12-29 11:47:00 [只看该作者]
EM9260:不用写多个CPP,你只需要实例化多个CCESerial 类就行了,接收数据部份程序的差别是通过给不同类的OnReceive附不同的函数指针实现的。
9260:如果采用多个回调函数,不同的串口类会调用自己的回调函数的。 |
单帖管理 | 引用 | 回复 |
em9260 |
8楼 |
Post By:2009-12-29 13:51:00 [只看该作者]
那如果我想改变调用回调函数的条件呢,就是说lpSerial->OnReceive( );这一语句不是在lpSerial->m_lDatLen>0这个条件下触发。比如两个串口触发回调函数的条件不同。这时候我写了两个CESerial的cpp和h文件,为什么主程序只认前一个加载进入的.h文件的类?
|
|
单帖管理 | 引用 | 回复 |
lqk |
9楼 信息 | 搜索 | 邮箱 |
加好友 发短信 |
Post By:2009-12-29 14:29:00 [只看该作者]
能不能大概说明一下,你具体想做怎样的应用呢?
|
单帖管理 | 引用 | 回复 |