Salesman_Tangseng 2016-09-22 07:36 采纳率: 0%
浏览 1787

C++缓存清空确认和采集串口数据

memset(CDataCommunication::USART_Buffer,0,sizeof(CDataCommunication::USART_Buffer));
CDataCommunication::USART_Port.Read(CDataCommunication::USART_Buffer,mRead_length,&mRead);
开了个读串口线程,在线程中进行了两步操作:1、给buffer赋值0,;2、再串口读取数据到buffer
遇到的问题:线程运行多遍下来后,偶尔得到的buffer会全是0
想问一下,是memset发生在read之后导致的吗?怎么解决?有没有确认memset操作完成之后,再进行read的办法

  • 写回答

1条回答 默认 最新

  • yss28 2016-09-23 16:20
    关注

    你的现在做法,每次读串口数据之前重置buffer为0。那么是否存在下列情况:

    你这个读线程执行较快,一个时刻,你想读1kb数据,但是串口中无数据或者只有0.5kb数据,你打印的1kb的buffer内容就看到了0

    一般读串口接口调用后会返回一个实际读到的数据长度,打印buffer时是否用了此值

    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题