关于串口API的问题

sky 2003-07-07 04:51:39
先调用WriteFile( hCom, //写数据

szBuffer,

want_write,

&actu_write,

&Overlapped);
向串口写入了一个Byte型数组,调试发现actu_write的值是正确的,说明发送应该是成功的,然后用事件驱动来读取数据:

HANDLE hCom; //准备打开的串口的句柄
OVERLAPPED Overlapped={0,0,0,0,NULL};//定义重叠结构
DWORD dwEvtMask=0; //时间响应标志
WaitCommEvent(hCom,&dwEvtMask,&Overlapped)

但发现WaitCommEvent的返回值总是0,为什么不成功呢,如果不通过多线程来实现异步通信可以吗,怎样实现呢?


...全文
67 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
道法然 2003-07-09
  • 打赏
  • 举报
回复
读串口之前,SetupCommEvent设置你感兴趣的事件、然后在等待WaitCommEvent监听事件的到来。
sunboy_hb 2003-07-08
  • 打赏
  • 举报
回复
你的系统是2000吗?你用getlasterror()看一下返回的错误码。

不用多线程是可以的,但是有时会出现阻塞。
无敌魔仙 2003-07-08
  • 打赏
  • 举报
回复
up
sky 2003-07-08
  • 打赏
  • 举报
回复
用getlasterror()发现返回的是997 ERROR_IO_PENDING
我用的是2000,为什么会阻塞呢?在整个读写过程中,要用的几个OVERLAPPED结构,
writefile用一个,readfile用一个,那WaitCommEvent用的是那个OVERLAPPED结构呢
如果不定义多线程,要用两个函数实现读和写,一个读一个写,那么waitcommevent放在什么地方合适呢?谢谢了?

2,640

社区成员

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

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