[求助] 关于广播形式下数据发送失败

小锋   2019-3-10 00:16 楼主
    萌新求助:
在用zigbee转发串口数据时一直发送失败,代码如下:

  1.                              if( AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc,
  2.                                          SAMPLEAPP_PERIODIC_CLUSTERID,
  3.                                          strlen((char *)txbuf)+1,
  4.                                          txbuf,
  5.                                          &SampleApp_TransID,
  6.                                          AF_DISCV_ROUTE,
  7.                                          AF_DEFAULT_RADIUS ) == afStatus_SUCCESS );
  8.                              else{
  9.                                   HalUARTWrite(0,"wrong\n", 6);
  10.                                  
  11.                              }

但是我改成这样却可以发送出去:

  1.                              if( AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc,
  2.                                          SAMPLEAPP_PERIODIC_CLUSTERID,
  3. 3,
  4. "OK",
  5.                                          &SampleApp_TransID,
  6.                                          AF_DISCV_ROUTE,
  7.                                          AF_DEFAULT_RADIUS ) == afStatus_SUCCESS );
  8.                              else{
  9.                                   HalUARTWrite(0,"wrong\n", 6);
  10.                                  
  11.                              }

求问下原因



回复评论 (6)

问题是出现在终端向协调器转发数据
点赞  2019-3-10 00:17
你的程序:

  1.                              if( AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc,
  2.                            SAMPLEAPP_PERIODIC_CLUSTERID,
  3.                            strlen((char *)[color=#ff0000]txbuf[/color])+1,
  4.                            [color=#ff0000]txbuf[/color],
  5.                            &SampleApp_TransID,
  6.                            AF_DISCV_ROUTE,
  7.                           AF_DEFAULT_RADIUS ) == afStatus_SUCCESS );
  8.                              else{
  9.                         HalUARTWrite(0,"wrong\n", 6);
  10.                                  
  11.                              }

看到txBuf这个变量,需要在函数外面初始化!!!
点赞  2019-3-10 07:58
引用: bigbat 发表于 2019-3-10 07:58
你的程序:

看到txBuf这个变量,需要在函数外面初始化!!!

已经实在函数外初始化了
点赞  2019-3-10 10:20
我发现,在数据长度小于35的情况下可以发出去,但是大于就不行了,可是我在以往测试的时候(数据长度58)也是可以发出去的,求问这是为什么
点赞  2019-3-10 14:58
好的,我已经解决了,原来我分配是200,改为100就可以了,我也不知道是为什么,是不是因为内存比较紧张的原因??????
  1. uint8* txbuf = osal_mem_alloc(100);
点赞  2019-3-10 17:49
你如果是用的TI的8051的zigbee方案,8051的内存是非常小的,你的字符串定义为200确是太大了。因为8051的内存管理很严格的。
点赞  2019-3-10 20:04
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复