佚名通过本文主要向大家介绍了串口通讯,串口通讯编程,串口通讯程序,c#串口通讯,arduino 串口通讯等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 串口通讯的一个小问题,有经验的进来看看
描述:
功能描述:
该代码的原意是给串口发送5个字节的数据,然后经过200毫秒的写数据后,获取它的应答结果。
问题描述:
在执行这几句代码时,每次都收不到数据,也就是t_recv一直是空的。而当我单步执行的时候t_recv却不为空,会收到正常的返回结果。想请问一下,这是什么原因?难道是延时的问题?Sleep不能用吗?或者是单线程的问题?
本人刚接触串口通信这块,请大神指点一二!
解决方案1:
描述:
通信串口Sleep
代码如下:
g_serialcomm.SendData(key,5);
Sleep(200);
g_serialcomm.ReciveData(t_recv,2);
功能描述:
该代码的原意是给串口发送5个字节的数据,然后经过200毫秒的写数据后,获取它的应答结果。
问题描述:
在执行这几句代码时,每次都收不到数据,也就是t_recv一直是空的。而当我单步执行的时候t_recv却不为空,会收到正常的返回结果。想请问一下,这是什么原因?难道是延时的问题?Sleep不能用吗?或者是单线程的问题?
本人刚接触串口通信这块,请大神指点一二!
解决方案1:
应该是延时不够,可以把延时加大点试试看
解决方案2: 问题关键:单步执行可以,但正常运行不可以
说明中间间隔的时间不够,按照楼主的思维sleep(1000)应该就可以了
波特率9600时 1ms 一个 字节,来回 2ms
解决方案4: 你先明确一下你的操作时同步还是异步
如果是同步你的操作应该是没有问题的
而且不用sleep
如果异步你这个代码显然不合理
发送和读取应该是分开处理的
多线程 ?还是单线程 ? 同步 还是 异步?