主题:关于串口、线程以及回调函数的问题?

  共有35582人关注过本帖    
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   [只看该作者]

能不能大概说明一下,你具体想做怎样的应用呢?

  单帖管理 | 引用 | 回复 回到顶部

返回首页

关于串口、线程以及回调函数的问题?

用户名:
            验证码: 验证码,看不清楚?请点击刷新验证码
内容: