串口API编程writefile问题

heroallen1981 2008-07-11 08:13:30
BOOL CMytest080623Dlg::WriteCom(char *lpBuf,DWORD dwToWrite)
{
DWORD dwWrite;

BOOL fRes;
BOOL tmp;
unsigned long err;
// char BYTE[7] = {"abcdef"};
Wol.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
if(Wol.hEvent == NULL) return FALSE; //create Event Fail
//err = GetLastError();
tmp = WriteFile(hCom,lpBuf,dwToWrite,&dwWrite,&Wol);
if(!tmp)
{
err = GetLastError();
if(GetLastError() != ERROR_IO_PENDING)
fRes = FALSE; //Write File Fail
else
{
if(!GetOverlappedResult(hCom, &Wol, &dwWrite, TRUE))
fRes = FALSE; //overlapped Write File Fail
else
fRes = TRUE;
}
}
else
fRes = TRUE;
CloseHandle(Wol.hEvent);
return fRes;

}

在WriteFile()使用后使用GetLastError()得到sys error值为87 即参数不对,但我认为参数是对的。。不知道怎么回事,忘高手指教。。。
...全文
72 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hua_yang 2008-07-12
  • 打赏
  • 举报
回复
最后一个参数改成NULL试试,
hCom用之前应该判断一下
dwToWrite应该==sizeof(lpBuf);才对
Atomictry 2008-07-12
  • 打赏
  • 举报
回复
这个函数看起来是正常的。

CreateFile时指定了FILE_FLAG_OVERLAPPED没有?
zaodt 2008-07-11
  • 打赏
  • 举报
回复

先用阻塞模式通讯,简单有效;


熟悉后再改为异步方式。
菜牛 2008-07-11
  • 打赏
  • 举报
回复
Wol是一个OVERLAPPED结构吧,那么其他成员是否正确赋值了?

15,980

社区成员

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

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