读书人

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

发布时间: 2014-07-06 16:28:31 作者: rapoo

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);
[解决办法]
呵呵,你肯定你的数据是读进去了

读书人网 >VC/MFC

热点推荐