关键工作完成

本文记录了作者在实现单片机与计算机通信过程中的调试经历。从最初的同步I/O口延迟调整,到尝试使用多线程捕捉串口事件,最终采用异步I/O阻塞方式进行数据读取。为提高数据接收的稳定性,采取了同一数据发送两次的验证方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      距上次写工作日志都两周了,这一周多的任务就是完成单片机与计算机的通信。

 

     上次通信之所以失败,是因为采用同步I/O口时延迟加的不够长,后来,我用了下面这个循环才可以:

 

大概延迟到ms级才行。但是这样还是不好准确的掌握时间,然后我又换了异步I/O读写方式。先新创建了一个线程,专门用来捕捉串口事件,但是失败了。由于多线程不易于调试,所以我取消了多线程,改用异步I/O的阻塞方式读取数据,但是大概有30%的概率收到数据会出错。并且一般是最高位丢失或最低位丢失。具体原因我不太清楚,但一直没找到解决的方法,直到今天在有个老师的提醒下,我想到一种解决方式,就是同一个数据我发送两遍,两遍一样了我才显示,这样就增强了稳定性。其实错误还是存在的,只是我没有显示出来而已。

    当然,可以抽出时间来看看增强通信稳定性的论文,毕竟,提高接收数据的稳定性才是最本质的提高。也就是发最少的数据但能得到最准确的结果才行。

 

    另外,合同竟然还没签下来,等待吧~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值