比如对方发送一帧报文:11 22 33 44 55
而我的接收分成了3帧:
11
22 33
44 55
很烦人!我的设置为:
COMMTIMEOUTS CommTimeOuts ;
CommTimeOuts.ReadIntervalTimeout = MAXDWORD;
CommTimeOuts.ReadTotalTimeoutMultiplier = 0;
CommTimeOuts.ReadTotalTimeoutConstant = 10;
CommTimeOuts.WriteTotalTimeoutMultiplier = 0;
CommTimeOuts.WriteTotalTimeoutConstant = 0;
SetCommTimeouts( m_hComDev, &CommTimeOuts );不知问题出在什么地方?请高手指点,谢谢!
解决方案 »
- 关于头文件的保护宏问题。
- 使用TransmitPackets的问题!!!
- 用VC++如何编程获取系统OEM制造商信息?
- 一个改变对话框风格的问题,如何将WS_POPUP风格改为WS_CHILD
- com编程错误急问:0x80040154 没有注册类别
- 怎样才能截住WINDOWS发给菜单的消息WM_COMMAND啊?我用WH_CALLWNDPROC?能够取道WM_MENUSELECT消息
- 关于Adobe PostScript
- MFC与OPENGL
- 求高手 VC图像处理
- vc6使用mschart控件画统计图的时候,在调用CMSChart对象的Create创建控件的时候就失败了
- VC++如何把数据导入execl
- 我有一个项目是多文档模式的,当点击其中一个文档关闭时出错(只有80分了)
和你的SetMask()有关。设置了接收缓冲区几个字节达到会触发
{
SetCommMask( m_hComDev, EV_RXCHAR ) ;
SetupComm( m_hComDev, RXQUEUE, TXQUEUE );
PurgeComm( m_hComDev, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR ) ;
COMMTIMEOUTS CommTimeOuts ; CommTimeOuts.ReadIntervalTimeout = MAXDWORD;
CommTimeOuts.ReadTotalTimeoutMultiplier = 0;
CommTimeOuts.ReadTotalTimeoutConstant = 10;
CommTimeOuts.WriteTotalTimeoutMultiplier = 0;
CommTimeOuts.WriteTotalTimeoutConstant = 0; SetCommTimeouts( m_hComDev, &CommTimeOuts ); m_bConnected = TRUE;
if( m_pThread = AfxBeginThread(CommWatchThreadProc, (LPVOID)this ) ) //开始串口接收监视线程
{
EscapeCommFunction( m_hComDev, SETDTR );
return 0;
}
}请问哪里有问题?谢谢
你可以在触发后获取一下接收缓冲区内的字节数,没到规定字数就不处理。