解决最后一帧发送必须成功的逻辑

发送内容:*,其实发送的真实内容应为(0,0),只是因为一个字符的成功率会较高

发送方向:上位机---->单片机

问题背景:由于该指令要让机器人停下,如果发送不成功(丢帧、没发等情况)会导致机器人无法停下来,这大大影响遥控的使用。

协议以及基本思想:

①当上位机检测到松开遥感时,开始一个定时器,该定时器一直发送*给单片机,

②如果单片机收到了*会返回一个“-”号字符,上位机收到该“-”号字符后立即停止发送。

需设置的标志位有:

send_handle_song:该标志位作为松开的标志位松开的时候0,按下的时候为1,初始值为-1

handleflag_1该标志位相当于一个锁,在handleflag_1==1的时候可以发送,在handleflag_1==0的时候不可以发送(已有)

检测流程:

①松开(t->stop();t1->start(70);send_handle_song=0;

②定时器t1启动(开始发送*号)

③单片机接收到*后发回-号上位机处理(emit gethandle();

④处理函数(if(send_handle_song==0){//如果此时为松开

             t1->stop();//定时器t1停止

             handleflag_1=0;//也不在发送其他东西了

            }

⑤再次按下(send_handle_song=1;handleflag_1=1;t->start(50);

出现的问题:

①偶尔出现发数据时要发的数据和*号里的同时执行

原因:由于从开始到松开都发送0,0时flag为锁定状态,单片机无法发送信号。但此现象在使用过程中可以避免

解决方案:暂无

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值