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的办法
C++缓存清空确认和采集串口数据
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答
- yss28 2016-09-23 16:20关注
你的现在做法,每次读串口数据之前重置buffer为0。那么是否存在下列情况:
你这个读线程执行较快,一个时刻,你想读1kb数据,但是串口中无数据或者只有0.5kb数据,你打印的1kb的buffer内容就看到了0
一般读串口接口调用后会返回一个实际读到的数据长度,打印buffer时是否用了此值
解决 无用评论 打赏 举报
悬赏问题
- ¥15 c程序不知道为什么得不到结果
- ¥40 复杂的限制性的商函数处理
- ¥15 程序不包含适用于入口点的静态Main方法
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置