This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

zigbee 关于协议栈中的ZIGBEEPRO 问题

Other Parts Discussed in Thread: Z-STACK

您好,我在使用Z-Stack Home1.2.2a和 Z-STACK 3.0.2 这俩协议栈,目前网上资料比较多的只查到2.5.1a,

所有有好多问题还要咨询一下。

1、在Z-Stack Developer's Guide.pdf看到了ZIGBEEPRO的说明,但是不知道在哪个工程项目的什么位置可以看到调用或者定义,就像我在网上只看到过一个sensor项目,新的协议栈中不知道是不是改名字了?

2、在Z-Stack Monitor and Test API.pdf 这个PDF中,我看到了许多指令集,不知道这个是用Z-Stack Home1.2.2a和 Z-STACK 3.0.2 这俩协议栈中的哪个工程编译的?

  • 请问您现在考虑使用什么协议栈呢?不同协议栈的指令会有差别
  • Z-STACK 3.0.2这个是TI官方最新的 我计划用这个
  • 那就是最新版的协议栈了,建议可以看新版的文档:dev.ti.com/.../node
  • 其实我安装完协议栈,看到里面有API和文档。已经看过一遍,只是英文不好,所以了解了大概,知道这个协议栈有ZIGBEEPRO和一些指令集,剩下的就找不见了,可能的看不懂。所以才咨询一下ZIGBEEPRO和指令集在哪个工程里面,如何调用的
  • 建議你先讀一下 Z-Stack 3.0 Sample Application User's Guide.pdf 熟悉Z-Stack例程操作,然後在去讀一下 Z-Stack 3.0 Developer's Guide.pdf熟悉Zigbee相關的開發資料,Z-Stack API文件可以讀Z-Stack API.pdf/Z-Stack ZCL API.pdf
  • 谢谢,我先看看
  • 本来想用Z_STACK 3.0.2的,结果工程太大,在网上搜了解决办法,改了串口的缓存数组大小,还是无法解决,所以换成Z-Stack Home 1.2.2a.44539先试一下。
    目前想要实现的功能是按照对应协议栈实现串口发送命令能够配置和获取一些信息,Z-Stack Monitor and Test API.pdf中提到了数据协议格式:

    对应,如果我要实现UTIL中的命令,则在预编译中加入了

    MT_UTIL_FUNC
    并且预编译加了ZTOOL_P1,开启串口,默认波特率38400。
    在Z-Stack Monitor and Test API.pdf中看到命令3.10.1.1

    在MT_UTIL.C中188行找到了源码
    于是串口发送命令:FE 00 27 00 27
    按理说应该返回一些信息的,结果并没有。。。。一个数都没有。我就不知道哪没操作对了
    以下是我预编译的所有命令
    SECURE=1
    TC_LINKKEY_JOIN
    NV_INIT
    NV_RESTORE
    HOLD_AUTO_START
    ZTOOL_P1
    MT_TASK
    MT_AF_FUNC
    MT_APP_FUNC
    MT_MAC_NWK
    MT_NWK_FUNC
    xMT_SAPI_FUNC
    MT_SAPI_CB_FUNC
    MT_SYS_FUNC
    MT_ZDO_FUNC
    MT_UTIL_FUNC
    LCD_SUPPORTED=DEBUG
    MULTICAST_ENABLED=FALSE
    ZCL_READ
    ZCL_WRITE
    ZCL_REPORT
    ZCL_EZMODE
    ZCL_BASIC
    ZCL_IDENTIFY
    ZIGBEEPRO
    ZCL_TEMPERATURE_MEASUREMENT
  • 本来想用Z_STACK 3.0.2的,结果工程太大,在网上搜了解决办法,改了串口的缓存数组大小,还是无法解决,所以换成Z-Stack Home 1.2.2a.44539先试一下。
    目前想要实现的功能是按照对应协议栈实现串口发送命令能够配置和获取一些信息,Z-Stack Monitor and Test API.pdf中提到了数据协议格式:

    对应,如果我要实现UTIL中的命令,则在预编译中加入了

    MT_UTIL_FUNC
    并且预编译加了ZTOOL_P1,开启串口,默认波特率38400。
    在Z-Stack Monitor and Test API.pdf中看到命令3.10.1.1

    在MT_UTIL.C中188行找到了源码
    于是串口发送命令:FE 00 27 00 27
    按理说应该返回一些信息的,结果并没有。。。。一个数都没有。我就不知道哪没操作对了
    以下是我预编译的所有命令
    SECURE=1
    TC_LINKKEY_JOIN
    NV_INIT
    NV_RESTORE
    HOLD_AUTO_START
    ZTOOL_P1
    MT_TASK
    MT_AF_FUNC
    MT_APP_FUNC
    MT_MAC_NWK
    MT_NWK_FUNC
    xMT_SAPI_FUNC
    MT_SAPI_CB_FUNC
    MT_SYS_FUNC
    MT_ZDO_FUNC
    MT_UTIL_FUNC
    LCD_SUPPORTED=DEBUG
    MULTICAST_ENABLED=FALSE
    ZCL_READ
    ZCL_WRITE
    ZCL_REPORT
    ZCL_EZMODE
    ZCL_BASIC
    ZCL_IDENTIFY
    ZIGBEEPRO
    ZCL_TEMPERATURE_MEASUREMENT
  • 你是要使用MT接口吗?请看这个文档,更有针对性一点:software-dl.ti.com/.../mt_interface.html
  • 你好,我看了一下,改加的头文件和预编译都加了。我用的Z_STACK HOME 1.2.2A协议栈,现在发现我在预编译中加入ZTOOL_P1和MT_TASK,然后在对应app.c的初始化中加入 MT_UartInit (); MT_UartRegisterTaskID( zclSampleThermostat_TaskID);其中串口的初始化中我关闭了流控。现在的问题是在MT_UART的串口回调函数MT_UartProcessZToolData中:第287行
    if ((MT_UartCalcFCS ((uint8*)&pMsg->msg[0], MT_RPC_FRAME_HDR_SZ + LEN_Token) == FSC_Token))
    {
    osal_msg_send( App_TaskID, (byte *)pMsg );
    HalUARTWrite ( 0, "OK\n", strlen("OK\n") );
    }
    else
    {
    /* deallocate the msg */
    HalUARTWrite ( 0, "EOOOR\n", strlen("ERROR\n") );
    osal_msg_deallocate ( (uint8 *)pMsg );
    }

    可以打印出来OK,按理说,下一步应该是在MT_TASK.C中执行243行的static void MT_ProcessIncomingCommand( mtOSALSerialData_t *msg ),因为里面有
    case CMD_SERIAL_MSG:
    HalUARTWrite ( 0, "CMD SERIAL MSG\n", strlen("CMD SERIAL MSG\n") );
    MT_ProcessIncoming(msg_ptr);
    break;

    可是它并没有进去这个函数,是不是哪漏操作了啥?
  • MT_ProcessEvent(uint8 task_id, uint16 events)连这个也没执行
  • 照理說只要在预编译中加入ZTOOL_P1和MT_TASK就可以使能MT command,並不需要修改任何源碼