串口非线程接收

刚到公司看到以前使用的串口驱动接收是非线程实现的,所以和协议的配合很紧,最近要添加一个功能,在数据传输结束后下位机会进行操作,操作完成后会再上传数据(不止一包且数据长度不固定),在此期间串口一直处于接收状态,但没有协议和长度不固定,接收的时候很难进行判断,好在数据发送之间的间隔不是很长,于是在原来的程序上加载了一下片段,效果还好,最起码现在还没人投诉

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;
}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值