单片机串口通信数据丢失原因
答案:4 悬赏:70 手机版
解决时间 2021-01-14 21:45
- 提问者网友:人傍凄凉立暮秋
- 2021-01-14 03:52
单片机串口通信数据丢失原因
最佳答案
- 五星知识达人网友:七十二街
- 2021-01-14 04:02
单片机串口通信数据丢失很大一部分原因是:mscomm的inputlen设置设置有问题;
解决方案:
mscomm的inputlen设置为0吧(读取整个缓冲区),读完一次,清空一次缓冲区试试;
参考如下:
窗体初始化事件中建议将mscomm的这几个属性做如下设置:
mscomm.inbuffersize=8 '接收缓冲区大小
mscomm.rthreshold=4 '促发oncomm事件的字符数
mscomm.inputlen=0 '默认读取整个缓冲区
mscomm.inputmode=cominputmodetext '以文本方式接收
mscomm.inbuffercount=0 '清空缓冲区
oncomm事件中,建议处理完接收数据后用mscomm.inbuffercount=0清空缓冲区
解决方案:
mscomm的inputlen设置为0吧(读取整个缓冲区),读完一次,清空一次缓冲区试试;
参考如下:
窗体初始化事件中建议将mscomm的这几个属性做如下设置:
mscomm.inbuffersize=8 '接收缓冲区大小
mscomm.rthreshold=4 '促发oncomm事件的字符数
mscomm.inputlen=0 '默认读取整个缓冲区
mscomm.inputmode=cominputmodetext '以文本方式接收
mscomm.inbuffercount=0 '清空缓冲区
oncomm事件中,建议处理完接收数据后用mscomm.inbuffercount=0清空缓冲区
全部回答
- 1楼网友:污到你湿
- 2021-01-14 06:25
利用按键通过串口向上发送对应命令,收到上面发下来的数据在LCD上显示。第一次按按键串口发送的指令正确且能把数据正确的显示出来,在第二次按按键串口发送的指令出现丢失的状况,故没有数据传下来。按第三次,发送的指令又正常且能把数据正确的显示出来。请问我串口哪里出现问题,或者是不是那个地方需要延迟久一点,望高手指点!
波特率设置问题!追问我的两块单片机设置的波特率都是9600,晶振都是11.0592追答按键是否消抖处理?追问嗯 ,按键有消抖,追答按键是否有定时?追问你所说的定时是指哪方面的?按键还需要定时?亲,表玩我了!我是真心不懂,求教育呀!追答长按键,还是短按键,需要定时来判断!追问亲,谢谢你的回答!虽然不是这方面的问题,还是谢谢你了!
这个跟按键木有关系,应该是串口那个地方出现问题或者某个参数未有重新初始化!追答LCD的型号?
波特率设置问题!追问我的两块单片机设置的波特率都是9600,晶振都是11.0592追答按键是否消抖处理?追问嗯 ,按键有消抖,追答按键是否有定时?追问你所说的定时是指哪方面的?按键还需要定时?亲,表玩我了!我是真心不懂,求教育呀!追答长按键,还是短按键,需要定时来判断!追问亲,谢谢你的回答!虽然不是这方面的问题,还是谢谢你了!
这个跟按键木有关系,应该是串口那个地方出现问题或者某个参数未有重新初始化!追答LCD的型号?
- 2楼网友:像个废品
- 2021-01-14 06:19
尝试每次发送之前初始化关键参数追问这个我也想过,但是关键的参数是指那一块?接收缓存还是LCD上的一些参数?指点一下追答我用串口也是会出现经常性的乱码,尤其在电脑和单片机通讯时,应该和LCD无关追问问题已经找到了,谢谢了!串口虽然简单,但是还是需要注意细节呀!
- 3楼网友:雾月
- 2021-01-14 05:19
程序逻辑混乱,出现不确定现象,测试结果时好时坏。理顺一下程序思路,保证采集按键、发送、接收数据、显示为一个完整的周期跟后面其他的操作没有关系。追问关键是出现的错误不是杂乱无章的,错误出现的比较有规律的。
两块单片机(A(上位机),B)上电,B控制LCD显示一个主界面,通过B的外设键盘控制进入一个子界面并向上位机发送一串指令(错误出现在这个地方),A收到相应的指令后向下发送一串数据,B接收到数据通过LCD显示。
错误出现,打开串口16进制显示发送的指令不正确。怀疑是数据错乱或者丢失!追答怎么样的规律,可以贴出来看看吗?或许你的串口接收缓存区(不是单片机的特殊功能寄存器,而是你存放数据的内存区域)没有清理,导致显示的数据并不是当前接收到的。接收数据之前或是显示之后就把缓冲区清理,保证接收到什么数据存放的就是什么数据,即便接收到的是错误的数据也能检查出来是什么问题。追问
正确的ASCII码是ww2感觉是你发送函数的问题追问在没有接收数据的时候,一切都很正常!追答在没有接收数据的时候,一切都很正常!这本身就是不正常的事情!!
你把代码贴上来看看吧。追问要不我加你Q 呵呵 求带呀
两块单片机(A(上位机),B)上电,B控制LCD显示一个主界面,通过B的外设键盘控制进入一个子界面并向上位机发送一串指令(错误出现在这个地方),A收到相应的指令后向下发送一串数据,B接收到数据通过LCD显示。
错误出现,打开串口16进制显示发送的指令不正确。怀疑是数据错乱或者丢失!追答怎么样的规律,可以贴出来看看吗?或许你的串口接收缓存区(不是单片机的特殊功能寄存器,而是你存放数据的内存区域)没有清理,导致显示的数据并不是当前接收到的。接收数据之前或是显示之后就把缓冲区清理,保证接收到什么数据存放的就是什么数据,即便接收到的是错误的数据也能检查出来是什么问题。追问
正确的ASCII码是ww2感觉是你发送函数的问题追问在没有接收数据的时候,一切都很正常!追答在没有接收数据的时候,一切都很正常!这本身就是不正常的事情!!
你把代码贴上来看看吧。追问要不我加你Q 呵呵 求带呀
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯