主題:關于串口、線程以及回調函數的問題? 共有40178人關注過本帖 |
---|
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 [只看該作者]
能不能大概說明一下,你具體想做怎樣的應用呢?
|
單帖管理 | 引用 | 回復 |