主題:ReadFile函數的使用 共有38568人關注過本帖 |
---|
zj |
1樓 |
ReadFile函數的使用 Post By:2010-3-13 22:01:00 [只看該作者]
貴公司給的串口通信的例程中,只有在讀線程讀過串口,
我想問下還能在其地方,比如在OnReceive中讀串口的數據嗎? 謝謝 |
|
單帖管理 | 引用 | 回復 |
zj |
2樓 |
Post By:2010-3-14 10:14:00 [只看該作者]
在讀線程中,下面是對的:
ReadFile( lpSerial->m_hSer, lpSerial->DatBuf, nWillLen, &lpSerial->m_lDatLen, 0 ); 然后,我在讀線程中調用:lpSerial->OnReceive( lpSerial); 在處理線程中用下面的讀: ReadFile( lpSerial->m_hSer, lpSerial->DatBuf, 1, &lpSerial->m_lDatLen, 0 ); 為什么會說: error C2248: <|>m_hSer<|> : cannot access private member declared in class <|>CCESerial<|> 那在讀線程中的為什么可以,我單步調試看了下,兩者都是 ceSer對你的指針。 請務必幫忙回答下,實在想不通。 謝謝! |
|
單帖管理 | 引用 | 回復 |
lqk |
3樓 信息 | 搜索 | 郵箱 |
加好友 發短信 |
Post By:2010-3-14 13:03:00 [只看該作者]
您好,我這樣理解:
回調函數本身并不是CCESerial類的一個成員,所以就算將lpSerial指針傳給OnReceive(),也只能訪問CCESerial類的public成員變量,而 在我們提供的例子中,m_hSer是private類型。 另:一般是在接收線程里面讀取串口數據,并存到一buffer中,在回調函數中對數據進行處理。 |
單帖管理 | 引用 | 回復 |
zj |
4樓 |
Post By:2010-3-14 16:34:00 [只看該作者]
public:
ONRECEIVE  OnReceive; ONERROR    OnError; 類中不是有這樣定義嗎,OnReceive應該是CCESerial的成員函數吧? 還想問下,如果把m_hSer改成public的呢? 還有其它方法可以在其它地方讀串口嗎? 謝謝 |
|
單帖管理 | 引用 | 回復 |
lqk |
5樓 信息 | 搜索 | 郵箱 |
加好友 發短信 |
Post By:2010-3-14 20:03:00 [只看該作者]
public:
ONRECEIVE OnReceive; 這里只定義了回函數指針,并不是回調函數實體。 把m_hSer改成public是可以的。 |
單帖管理 | 引用 | 回復 |