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 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64