请查看一下,我的串口读写程序及调用。如何问题请看内容,

「已注销」 「已注销」 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
因为我写了一个串口程序与外设备进行通讯。为何在传送时,程序就像“死机”一样,不能在上面操作(即鼠标显示为沙漏),等传送完成后,就恢复。这是不是与我没有用“辅助线程”有关系?
我的读写代码如下:
DWORD TMainFace::WriteComm(char *buf,DWORD dwLength)
{
BOOL fState;
DWORD length=dwLength;
COMSTAT ComStat;
DWORD dwErrorFlags;
ClearCommError(hCom,&dwErrorFlags,&ComStat);
fState=WriteFile(hCom,buf,length,&length,&m_osWrite);
if(!fState)
{
if(GetLastError()==ERROR_IO_PENDING)
{
GetOverlappedResult(hCom,&m_osWrite,&length,TRUE);//等待
}
else
length=0;
}
return length;
}

int TMainFace::ReadComm(char buf[10],DWORD dwLength)
{
BOOL fState;
DWORD length=dwLength;
COMSTAT ComStat;
DWORD dwErrorFlags;

m_osRead.hEvent=CreateEvent(NULL, true, false, NULL);//必须创建有效事件
ClearCommError(hCom,&dwErrorFlags,&ComStat);

fState=ReadFile(hCom,buf,length,&length,&m_osRead);
if(!fState)
{
if(GetLastError()==ERROR_IO_PENDING)
{
GetOverlappedResult(hCom,&m_osRead,&length,TRUE);//等待
}
else
length=0;
}

return length;
}
//调用它们
char buf[10];
int rel=MainFace->ReadComm(buf,1);//请读串口内容:

if(buf[0]==0x4F)
{
char aa=0xAA;
MainFace->WriteComm(&aa,1);
return 0x4F;
}
//如何能写成“有线程”的,线程如何写,如何调用线程,我调用不成功。
...全文

相关推荐

评论 7
收藏 已收藏
分享
返回顶部
「已注销」
VC/MFC 16,550 成员 421,606 内容