WIN32API串口测试程序的有关问题
WIN32API串口测试程序的问题
问题描述:
1
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 发送线程
3 接收线程
问题:
1 接收线程是在OnInitial()中启动的,在接收线程中,程序运行到
就堵塞了,这是正常的;但是其后我调用发送线程,向串口发送数据,接收线程依旧堵塞在
没有执行其后的代码
请教大家,这是怎么回事。。
------解决方案--------------------
在进循环之前
PurgeComm(port->m_hComm, PURGE_RXCLEAR | PURGE_TXCLEAR | PURGE_RXABORT | PURGE_TXABORT);
------解决方案--------------------
呵呵,你肯定你的数据是读进去了
问题描述:
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);
------解决方案--------------------
呵呵,你肯定你的数据是读进去了