距上次写工作日志都两周了,这一周多的任务就是完成单片机与计算机的通信。
上次通信之所以失败,是因为采用同步I/O口时延迟加的不够长,后来,我用了下面这个循环才可以:
大概延迟到ms级才行。但是这样还是不好准确的掌握时间,然后我又换了异步I/O读写方式。先新创建了一个线程,专门用来捕捉串口事件,但是失败了。由于多线程不易于调试,所以我取消了多线程,改用异步I/O的阻塞方式读取数据,但是大概有30%的概率收到数据会出错。并且一般是最高位丢失或最低位丢失。具体原因我不太清楚,但一直没找到解决的方法,直到今天在有个老师的提醒下,我想到一种解决方式,就是同一个数据我发送两遍,两遍一样了我才显示,这样就增强了稳定性。其实错误还是存在的,只是我没有显示出来而已。
当然,可以抽出时间来看看增强通信稳定性的论文,毕竟,提高接收数据的稳定性才是最本质的提高。也就是发最少的数据但能得到最准确的结果才行。
另外,合同竟然还没签下来,等待吧~~~
本文记录了作者在实现单片机与计算机通信过程中的调试经历。从最初的同步I/O口延迟调整,到尝试使用多线程捕捉串口事件,最终采用异步I/O阻塞方式进行数据读取。为提高数据接收的稳定性,采取了同一数据发送两次的验证方法。

被折叠的 条评论
为什么被折叠?



