刚到公司看到以前使用的串口驱动接收是非线程实现的,所以和协议的配合很紧,最近要添加一个功能,在数据传输结束后下位机会进行操作,操作完成后会再上传数据(不止一包且数据长度不固定),在此期间串口一直处于接收状态,但没有协议和长度不固定,接收的时候很难进行判断,好在数据发送之间的间隔不是很长,于是在原来的程序上加载了一下片段,效果还好,最起码现在还没人投诉
while(1)
{
int rxCount=0;
rxCount=m_theCommPort.InQueCount();
if(rxCount>0)
{
OpenFlag=TRUE;
int n=m_theCommPort.Read(back, rxCount);
m_theCommPort.PurgeIn();
for(int i=0;i<n;i++)
{
str+=back[i];
if(back[i]==0x0a)
{
MessageOut(str);
str=_T("");
Sleep(10);
}
}
}
else if(!OpenFlag)
{
Sleep(100);
}
else if(OpenFlag&&(rxCount<0||rxCount==0))
{
break;
}
}