ReadFile读串口的问题

sospider 2003-03-24 02:26:06
rc = ReadFile(m_hCom,pTempBuf,pNetThreadParam->nBytes+1,&dwReadBytes,NULL);

我的程序在2000下没问题,读到指定的大小,在98下有时候在这句话返回,可是读到的数据是0字节,请问ReadFile在什么情况下返回,为什么会读到0字节?
...全文
422 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
3jaja 2003-03-24
  • 打赏
  • 举报
回复
异步不占用系统资源。
while (true)
{
WaitCommEvent( hComDev, &dwEvtMask, &osWait);
if ((dwEvtMask & EV_RXCHAR) == EV_RXCHAR)
{
while ( ThreadFlag )
{
ClearCommError( hComDev, &dwErrorFlags, &ComStat ) ;
if((nLength = min( 0x1000, ComStat.cbInQue )) > 0 )//设置读取的字节数
{
if(ReadFile( hComDev, pb,nLength, &nLength, &osRead ))
{

sospider 2003-03-24
  • 打赏
  • 举报
回复
怎么设置啊,是哪个参数?

另外,ReadFile和WriteFile串口读写,是同步好,还是异步好?
我用的是同步,自己用的Event控制的线程,这样应该也没问题吧
3jaja 2003-03-24
  • 打赏
  • 举报
回复
你可以设置缓冲区中只要有数据,就ReadFile即可。
sospider 2003-03-24
  • 打赏
  • 举报
回复
呵呵,我判断了返回值,只不过没贴出来,只贴了这关键的一句话。
主要是不知道在什么情况下函数返回:
1.在试图ReadFile的时候,缓冲区没有数据,因此等到有串口写入数据才返回(刚写就返回0字节,还是读到所需的字节数才返回?)。
2.在试图ReadFile的时候,缓冲区中有数据,但数据大小不够,是否继续等待?
3.在试图ReadFile的时候,缓冲区中有足够数据,读了以后返回。

是不是这样,哪位大虾能够描述一下读串口数据的情况。谢谢谢谢
shesh 2003-03-24
  • 打赏
  • 举报
回复
这样写程序有点吓人,难道你不判断返回值.

如果这里超时退出话,读到的当然是零了.

2,641

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧