首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

WIN32API串口测试程序的有关问题

2014-07-06 
WIN32API串口测试程序的问题问题描述:1C/C++ codeOnInitial(){//同步操作方式hCon = CreateFile(g_ctrPort

WIN32API串口测试程序的问题
问题描述:
1

C/C++ code
OnInitial()    {         //同步操作方式         hCon = CreateFile(g_ctrPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);          //设置消息[code=C/C++]

  SetupComm(hCon,1024,1024);
PurgeComm(hCon,PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);
SetCommMask(hCon, EV_BREAK|EV_CTS|EV_DSR|EV_ERR|EV_RING|EV_RLSD|EV_RXCHAR|EV_RXFLAG|EV_TXEMPTY);
  }[/code]

2 发送线程

  
 
C/C++ code
 UINT SendToSeri(LPVOID param)  {         WriteFile(hCon,buffer_send,256,&dw_send,NULL);        return 0;  }


3 接收线程
C/C++ code
  UINT RecvFromSeri(LPVOID param){    BOOL bResult =FALSE;    DWORD dwEvent=0;    DWORD dwError;    SetCommMask(hCon, EV_BREAK|EV_CTS|EV_DSR|EV_ERR|EV_RING|EV_RLSD|EV_RXCHAR|EV_RXFLAG|EV_TXEMPTY);    while(TRUE)    {               bResult=WaitCommEvent(hCon,&dwEvent,NULL);//问题所在的地方                       if (bResult)       {                     AfxMessageBox("OK");//用来判断程序是否走到这一步           switch(dwEvent)           {            case EV_RXCHAR:                {                   AfxMessageBox("OK");//用来判断程序是否走到这一步                }           }               }}


问题:
1 接收线程是在OnInitial()中启动的,在接收线程中,程序运行到
 
C/C++ code
bResult=WaitCommEvent(hCon,&dwEvent,NULL);

  就堵塞了,这是正常的;但是其后我调用发送线程,向串口发送数据,接收线程依旧堵塞在
 
C/C++ code
bResult=WaitCommEvent(hCon,&dwEvent,NULL);

  没有执行其后的代码

请教大家,这是怎么回事。。

[解决办法]
在进循环之前
PurgeComm(port->m_hComm, PURGE_RXCLEAR | PURGE_TXCLEAR | PURGE_RXABORT | PURGE_TXABORT);
[解决办法]
呵呵,你肯定你的数据是读进去了

热点排行