主题:ReadFile函数的使用

  共有20123人关注过本帖    
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是可以的。

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

返回首页

ReadFile函数的使用

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