疯狂者 发表于 2015-4-16 10:38:25

MCU发给Wifi的指令,不接收回应?


今天心急先试了一下生成分协议看了下。看到里面有这个:

第一反应MCU这边是直接for循环3次,发等发等发等,其中有一次收到了就退出循环。
但又看到协议里面有指令SN序列码什么的,我觉得MCU应该有缓冲队列来实现,所以就想看看官网有什么巧妙方法实现。
然后刚才下载了官网几个开源工程,在MCU发送的时候都没有检测回应?直接丢了数据给wifi就不管了?....官网都不用这个方式....那...还要这条约定干嘛呢.....晕:dizzy:

疯狂者 发表于 2015-4-16 11:07:23

好吧,我错了,刚发完,就看到了...

Snail 发表于 2015-4-16 11:23:21

你好,
      请看宠物屋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发送成功!

疯狂者 发表于 2015-4-16 11:25:19

Snail 发表于 2015-4-16 11:23
你好,
      请看宠物屋mcu的例子(https://github.com/gizwits/gokit-mcu),这个函数:SendToUart
    ...

是的是的,看到了..谢谢!

Snail 发表于 2015-4-16 11:28:50

memcpy(&recv_commonCmd, uart_buf, sizeof(pro_commonCmd)); //uart_buf就是mcu接收到wifi串口过来的数据(wifi模组的回应),这里放到缓存,下面下一步就是检测了。

疯狂者 发表于 2015-4-16 11:57:35

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)呢?这样又什么作用呢?


Snail 发表于 2015-4-16 14:13:20

疯狂者 发表于 2015-4-16 11:57
谢谢,还有啊,请问宠物屋里串口接收这部分....cmd_flag2有什么用呢?

怎么if(cmd_flag2 == 0)然后就 ...

你好,
      这个是中断处理函数,这段逻辑上是有问题,后续gokit mcu的源码我们也会做一次完善。
      感谢发现!

疯狂者 发表于 2015-4-16 15:59:18

Snail 发表于 2015-4-16 14:13
你好,
      这个是中断处理函数,这段逻辑上是有问题,后续gokit mcu的源码我们也会做一次完善。
      ...

哦哦,原来如此....

蓝色工程师 发表于 2015-4-20 16:24:35

:D 真的是一个BUG, 我在这里纠结了好一阵, 多线程的想法都出来了
页: [1]
查看完整版本: MCU发给Wifi的指令,不接收回应?