串口接收

liumang12 2009-10-21 03:10:59

DWORD CCommomDlg::ComReceiveProc(LPVOID lpParameter)

HWND hwnd=((RECPARAM *)lpParameter)->hwnd;
CCommomDlg * pDlg=((RECPARAM *)lpParameter)->pDlg;
HANDLE hCom = pDlg->hCom;
OVERLAPPED m_osRead;
memset(&m_osRead,0,sizeof(OVERLAPPED));

m_osRead.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);
COMSTAT ComStat; DWORD dwErrorFlags;
char str[100];
memset(str,'\0',100);
DWORD dwBytesRead=100;
BOOL bReadStat;
ClearCommError(hCom,&dwErrorFlags,&ComStat);
dwBytesRead=min(dwBytesRead,(DWORD)ComStat.cbInQue);
bReadStat=ReadFile(hCom,str,dwBytesRead,&dwBytesRead,&m_osRead);
if(!bReadStat)
{ if(GetLastError()==ERROR_IO_PENDING)
{WaitForSingleObject(m_osRead.hEvent,INFINITE);//*申请无名事件
}
}

上面是我的串口监视的线程函数。hCom是通过this对象传递过来的,是正确的,不知道为什么就
是接收不到数据,串口参数设置没有问题,可以发送数据。
bReadStat这个参数总是有效。一直为真。所以一直进步了if语句。
...全文
122 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gdtyy 2009-11-11
  • 打赏
  • 举报
回复
用串口监视分析仪comspy分析一下就知道了,不占用你的串口资源

免费试用版下载地址:
http://www.armecos.com/freedown/down.asp?id=17&url=/down/good/comspy-v08.rar
jinxuliang 2009-10-23
  • 打赏
  • 举报
回复
你打开串口用的是异步输入输出?
把注册了事件吗?
用串口调试助手确认硬件没有问题
zoulie 2009-10-22
  • 打赏
  • 举报
回复
先用个工具比如串口精灵 测试下看发送方是不是正常工作了
然后在定位
grf9527 2009-10-22
  • 打赏
  • 举报
回复
我有好用的程序,串口通信是老问题了。建议去网上找点代码。同时只要是跟硬件相关的,一定要先确认硬件是好的。
兰博618 2009-10-22
  • 打赏
  • 举报
回复
我最近也在研究串口通信问题,能一起讨论讨论吗
QQ:644564964
备注:串口通信

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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