主题:ReadFile函数的使用 共有33873人关注过本帖 |
---|
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是可以的。 |
单帖管理 | 引用 | 回复 |