MCU发给Wifi的指令,不接收回应?
今天心急先试了一下生成分协议看了下。看到里面有这个:
第一反应MCU这边是直接for循环3次,发等发等发等,其中有一次收到了就退出循环。
但又看到协议里面有指令SN序列码什么的,我觉得MCU应该有缓冲队列来实现,所以就想看看官网有什么巧妙方法实现。
然后刚才下载了官网几个开源工程,在MCU发送的时候都没有检测回应?直接丢了数据给wifi就不管了?....官网都不用这个方式....那...还要这条约定干嘛呢.....晕:dizzy:
好吧,我错了,刚发完,就看到了... 你好,
请看宠物屋mcu的例子(https://github.com/gizwits/gokit-mcu),这个函数:SendToUart
就是你提到的”MCU这边是直接for循环3次,发等发等发等,其中有一次收到了就退出循环。”
这个函数是有检测MCU发送之后wifi模组过来的回应的,如:
memcpy(&recv_commonCmd, uart_buf, sizeof(pro_commonCmd)); //把wifi模组过来的数据放到缓存:recv_commonCmd
//只有当sn和ACK(recv_commonCmd.head_part.cmd )均配对时,才表明发送成功;
if((send_headPart.cmd == CMD_SEND_MODULE_P0 && recv_commonCmd.head_part.cmd == CMD_SEND_MODULE_P0_ACK) &&
(send_headPart.sn == recv_commonCmd.head_part.sn)) break;
只有sn和ACK匹配,才被认为mcu发送成功!
Snail 发表于 2015-4-16 11:23
你好,
请看宠物屋mcu的例子(https://github.com/gizwits/gokit-mcu),这个函数:SendToUart
...
是的是的,看到了..谢谢! memcpy(&recv_commonCmd, uart_buf, sizeof(pro_commonCmd)); //uart_buf就是mcu接收到wifi串口过来的数据(wifi模组的回应),这里放到缓存,下面下一步就是检测了。 Snail 发表于 2015-4-16 11:28
memcpy(&recv_commonCmd, uart_buf, sizeof(pro_commonCmd)); //uart_buf就是mcu接收到wifi串口过来的数据 ...
谢谢,还有啊,请问宠物屋里串口接收这部分....cmd_flag2有什么用呢?
怎么if(cmd_flag2 == 0)然后就套个 if(cmd_flag2==1)呢?这样又什么作用呢?
疯狂者 发表于 2015-4-16 11:57
谢谢,还有啊,请问宠物屋里串口接收这部分....cmd_flag2有什么用呢?
怎么if(cmd_flag2 == 0)然后就 ...
你好,
这个是中断处理函数,这段逻辑上是有问题,后续gokit mcu的源码我们也会做一次完善。
感谢发现! Snail 发表于 2015-4-16 14:13
你好,
这个是中断处理函数,这段逻辑上是有问题,后续gokit mcu的源码我们也会做一次完善。
...
哦哦,原来如此.... :D 真的是一个BUG, 我在这里纠结了好一阵, 多线程的想法都出来了
页:
[1]