求助大神!!!CSerialPort类串口接收问题 20
这种串口接收写法为什么在串口调试助手发送周期是1s时,就丢好多数,这是为什么?波特率是19200。voidCDataRecv::OnComm(WPARAMch,LPARA...
这种串口接收写法为什么在串口调试助手发送周期是1s时,就丢好多数,这是为什么?波特率是19200。void CDataRecv::OnComm(WPARAM ch, LPARAM port){m_strRXData +=(char)ch;If((m_strRXData.Find(0x0A)!=0)&&(m_strRXData.Find(0x0D)!=0))//找到回车和换行{int flag1=m_strRXData.Find(“$GPRMC”);//查找帧头的位置int flag2=m_strRXData.Find(0x0A);//查找帧尾的位置if(flag1!=-1){If(flag2!=-1){m_strRecdata=m_strRXData.Mid(flag1,flag2);//取出完整的一帧m_strRXData.delete(flag1,flag2);......//下面解数据帧并存储}}return 0;} 还有另一种接收写法写在定时器里,在打开串口点击按钮事件触发定时器,当串口调试助手发送周期是1s时,还算稳定,当串口调试助手发送周期变成100ms,波特率是19200,自己写的程序打开串口就死掉,波特率变成115200好像好点,我想当串口调试助手发送周期变成50ms,程序任然能稳定运行,存储不丢帧,该怎么写啊?void CDataRecv::OnTimer(){while((m_strRXData.Find(0x0A)!=0)&&(m_strRXData.Find(0x0D)!=0))//找到回车和换行{int flag1=m_strRXData.Find(“$GPRMC”);//查找帧头的位置int flag2=m_strRXData.Find(0x0A);//查找帧尾的位置if(flag1!=-1){If(flag2!=-1){m_strRecdata=m_strRXData.Mid(flag1,flag2);//取出完整的一帧m_strRXData.delete(flag1,flag2);......//下面解数据帧并存储}}}
展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询