单片机串口发送接收问题

来源:百度知道 编辑:UC知道 时间:2024/06/19 13:13:49
现在我做了这样一个东西,发射板上有按键,当有键按下时,进行扫描得到相应的按键值,通过串口发送出去;接收板收到正确的按键值后并显示(发射板的按键一直按下,串口就会一直发送数据包,松开按键就停止发射)。
现在我用串口发送一帧数据(把按键值打包发送),对方正确接收到了,并能正确显示-------->现在出现一个问题,当有键按下并一直保持,对方也接收到并正确显示,现在我把发射端的电断了(断电时键还按下的),但接收端现在还一直显示,断电前发射的那个键值,我现在相要的是发射端断电,接收端就关显示。不知道怎么才能做到这个功能。
请大侠指教!非常感激,谢谢!
呵呵!偶现在正在学单片机。
当松开按键时,会发送一个关显示命令,但是没有松开按键就停电了,所以关显示的命令就没有发送,接收端也没办法关显示。现在我想这么做,按键按下串口就会发送的,接收端也有接收,当接收端在隔某一时间段没有接收到数据时就关显示(这个时间不能太长),不知道怎么做才能办到,请各位大侠指教。

发射机断电了,所以只能从接收机进行处理,个人建议:
1)定义超时:接收机开始接收时,当发送机断电那么接收机会突然没有数据来了,即不会有你所说的“停止”命令,定义超时,当时间超过一定:如500ms如任何数据时,说明发送机出故障了,接收机进行处理;
2)接收机接收时突然断了数据,接收机可发送一个“ask“命令给原来的”发送机“,如果发送机正常的话就回一个”ack“,如是无”ack“命令回来的话说明”原发送机“不正常了,。。
以上仅供参考。

建议用接收板的单片机监视串行通信口,当串行通信口一出现低电平,立即开始定时,定时时间为T,出现高电平和低电平作为刷新定时器的条件,即:只要出现过高低电平(不一定要求高电平在前,低电平出现在后,只要出现过高低电平就行),就刷新定时器,当定时器T时间内还没有出现高低电平,则关闭显示,等待下一次串行通信。
因为串行通信不会出现全是1或则全是0的情况,就是发送数据00,都会出现结束标志1,发射ff,也会出现开始发送标志0,由此可以得到比较及时的通信信息。

主机周期性对各个分机发出测试命令,收不到回信,就认为该分机停止工作了,该关闭显示就关闭显示。

没看明白 ~ 断电? 单片机都断电了还能发??