Zigbee绑定流程

Coordinator收发数据,EndDevice发收数据 实验内容: Coordinator 建立网络, 接收数据并闪烁 LED2 和发送数据 EndDevice 加入网络, 发送数据和接收数据并闪烁 LED1 程序流程: ①协调器建立网络(Z-Stack 协议栈帮助建立起网络) ②终端节点加入网络后触发 ZDO_STATE_CHANGE 事件, 判断加入的设备若是终端节点 DEV_END_DEVICE 则调用数据发送函数 GenericApp_Sen... 阅读详情

Zigbee绑定流程(一)

 

绑定机制允许一个应用服务在不知道目标地址的情况下向对方(应用服务)发送数据包,发送时使用的目标地址将由应用支持子层从绑定表中自动获得,从而能是消息顺利被目标节点的一个或多个应用服务乃至分组接收。

注意:由于所有绑定信息都子啊在Zigbee协调器中,所有只有协调器才能接收绑定请求。

1.1    绑定方式:

Zigbee Device Object Bind Request

Zigbee Device Object End Device Bind Request

Device Application

1.2、绑定方式1:Zigbee Device Object Bind Request

有Zigbee device A、B和C,其中B和C是想建立绑定的两个设备,需要节点A的配合。

A连接的主机(如ARM或PC)应用会调用ZDP_BindReq()(ZDPProfile.h)来实现此绑定,该函数需要提供address、endpoint和cluster ID参数。主机发送命令给A,该命令中会带有C的信息,命令A调用该函数向B发送BindReq请求,该请求中包含C的参数address、endpoint和cluster ID等,B收到该请求后会建立关于C的绑定表。ZDP_BindReq()定义如下:

#if defined ( ZDO_BIND_UNBIND_REQUEST )

/*

 * ZDP_BindReq - bind request

 *

 * @MT SPI_CMD_ZDO_BIND_REQ

 * (UInt16 DstAddr,

 *  UInt64 SrcAddress,

 *  byte SrcEndpoint,

 *  uint16 ClusterID,

 *  zAddrType_t *DstAddress,

 *  byte DstEndpoint,

 *  byte SecuritySuite)

 *

 */

#define ZDP_BindReq( dstAddr, SourceAddr, SrcEP, \

              ClusterID, DestinationAddr, DstEP, SecurityEnable ) \

                       ZDP_BindUnbindReq( Bind_req, dstAddr, \

                            SourceAddr, SrcEP, ClusterID, \

                            DestinationAddr, DstEP, SecurityEnable )

#endif

该函数的参数具体意思为:

* @param       dstAddr - destination address of the message(即B,也就是绑定的原设备)

* @param       SourceAddr - source 64 bit address of the binding(原绑定设备的64位地址)

* @param       SrcEPIntf - Source endpoint/interface

* @param       ClusterID - Binding cluster ID

* @param       DestinationAddr - destination 64 bit addr of binding

* @param       DstEPIntf - destination endpoint/interface

* @param       SecurityEnable - Security Options

注:1)ZDO_BIND_UNBIND_REQUEST应该使能才能用此方式进行绑定

2)还可以用ZDP_UnBindReq()来解除绑定。

 

3)对于函数ZDP_BindUnbindReq其功能如下:

/*********************************************************************

 * @fn          ZDP_BindUnbindReq

 *

 * @brief       This builds and send a Bind_req or Unbind_req message

 *              Depending on the ClusterID. This function

 *              sends a unicast message to the local coordinator.

 

当B收到此绑定消息后:

The target device will send back a Zigbee Device Object Bind or Unbind Response message which the ZDO code will parse and notify ZDApp.c by calling ZDApp_BindRsp() or ZDApp_UnbindRsp() with the status of the action.   

注:ZDApp_BindRsp()函数在ZDApp.c文件中未找到?

Coordinator返回的绑定状态:

对于绑定时,协调器会返回以下状态到应用:

       ZDP_SUCCESS, ZDP_TABLE_FULL or ZDP_NOT_SUPPORTED.

对于解除绑定时,协调器会返回以下状态到应用:

       ZDP_SUCCESS, ZDP_NO_ENTRY or ZDP_NOT_SUPPORTED.

 

1.2、Zigbee Device Object End Device Bind Request

       1)、工作原理

      需要coordinator参入,若A为协调器,B和C是需要建立绑定的两个EndDevice。

节点B和C分别通过按键机制调用函数ZDP_EndDeviceBindReq,这个函数将会向协调器发出绑定请求,如果在16S内两个节点都执行了此函数,协调器就会协助实现绑定。绑定表放在OutCluster那边,即绑定表存放在输出控制命令的那边。

      注意:

l         节点B和C需具有互补性,即B的outcluster是C的incluster。

l         绑定后只能是outcluster节点B给incluster节点C发送控制命令,因为只有B中保存C的信息(绑定表),不能反过来控制。

2)规定的时间

这个时间由参数APS_DEFAULT_MAXBINDING_TIME决定,默认为16秒。

3)end_device_bind_req和其响应的消息流程

      涉及设备:终端C和B(进行绑定)

             协调器A(协助建立绑定)


现以B和A为例说明绑定请求和响应的消息流程

(1)       终端B调用ZDP_EndDeviceBindReq()发起end_device_bind_req请求,目的地址为协调器A

 该函数调用fillAndSend( &ZDP_TransID, dstAddr, End_Device_Bind_req, len );完成请求发送。注意这里的任务ID为ZDP_TransID

(2)       协调器A中

--afIncomingData()从APS(应用子层接收数据/消息)

--调用afBuildMSGIncoming()在接收的消息中添加AF_INCOMING_MSG_CMD事件,并调用osal_msg_send( *(epDesc->task_id), (uint8 *)MSGpkt )将此消息发送到应用层对应的任务中

   --在osal_msg_send()中执行三个动作

OSAL_MSG_ID( msg_ptr ) = destination_task;  //在消息中添加对应的任务ID

    // queue message

    osal_msg_enqueue( &osal_qHead, msg_ptr ); //将此消息添加到消息队列

 

    // Signal the task that a message is waiting

   osal_set_event( destination_task, SYS_EVENT_MSG );//触发SYS_EVENT_MSG事件,添加到tasksEvents[]中

到此接收到的绑定请求消息已经发到了应用层中,现在就轮到OSAL层对该消息进行响应处理了:

 

http://hi.baidu.com/lee112168/item/becbef4cfb1da6fea4c066f4

zigbee绑定流程(二)

--任务消息主循环函数osal_start_system()轮询任务表tasksArr[]

当有end_device_bind_req到来时,将会调用其中的ZDApp_event_loop()事件循环处理函数(因为绑定请求设定了任务为ZDP_TransID)

   -- ZDApp_event_loop()

      若产生SYS_EVENT_MSG事件,调用函数ZDApp_ProcessOSALMsg()对OSAL的消息进行处理。

   -- ZDApp_ProcessOSALMsg()

若消息的触发事件为AF_INCOMING_MSG_CMD,调用ZDP_IncomingData()

  -- ZDP_IncomingData()

      在该函数中首先调用ZDO_SendMsgCBs()函数查看该消息是否注册过,若是在消息中触发ZDO_CB_MSG事件,并发送到注册过该消息的任务中,这样就调用osal_msg_send(),又会触发事件SYS_EVENT_MSG。

      因为这里的end_device_bind_req注册过(ZDO_RegisterForZDOMsg( ZDAppTaskID, End_Device_Bind_req );),所以就回到函数ZDApp_event_loop()中,再执行ZDApp_ProcessOSALMsg()函数,这时的消息事件为ZDO_CB_MSG,则会调用注册消息处理函数ZDApp_ProcessMsgCBs()

 -- ZDApp_ProcessMsgCBs()

      此函数是对注册过得消息进行处理,

  switch ( inMsg->clusterID )

   case End_Device_Bind_req:

      if (ZG_DEVICE_COORDINATOR_TYPE)  //只有协调器才接收End_Device_Bind_req请求

      {

        ZDEndDeviceBind_t bindReq;

        ZDO_ParseEndDeviceBindReq( inMsg, &bindReq );

        ZDO_MatchEndDeviceBind( &bindReq );

     

--ZDO_MatchEndDeviceBind()

      处理绑定请求,若成功后会给两个终端B和C发送End_Device_Bind_rsp响应

 (3)终端B接收处理绑定响应

      接收End_Device_Bind_rsp响应的流程和(2)基本一样,不同之处是在ZDO_SendMsgCBs()函数中,在该函数中是将响应End_Device_Bind_rsp发送到注册该响应的任务中

osal_msg_send( pList->taskID, (uint8 *)msgPtr );

这里pList指向注册的消息列表, End_Device_Bind_rsp注册到GenericApp_TaskID任务中,所以在GenericApp_ProcessEvent()中接收处理。

当协调器接收到第一个绑定请求时,他会在一定的时限内保留这一请求并等待第二个请求的出现。(默认的最长时间间隔是16秒)。

    一旦协调器接收到两个需要匹配的终端设备绑定请求时,它就会启动绑定过程,为发出请求的设备建立源绑定条目。假设在ZDO终端设备绑定请求中找到匹配,协调器将采取以下步骤:

1.     协调器发送一个ZDO解除绑定请求给第一个设备。终端设备绑定是一个切换过程,所以解除绑定请求需要发送给第一个设备,以便移除一个已有的绑定条目。

2.     等待ZDO解除绑定的应答,如果返回的状态是ZDP_NO_ENTRY,协调器可以发送一个ZDO绑定请求,在源设备(ZDP_EndDeviceBindReq()第一个参数指定的地址)中建立绑定条目。假如此时返回的状态是ZDP_SUCCESS,可继续处理第一个设备的簇标识符(解除绑定指令已经移除了绑定条目,即已经切换完成)。

3.     等待ZDO绑定应答。收到以后,继续处理第一个设备的下一个簇标识符。

4.     等第一个设备完成了以后,在第二个设备上实行同样的过程。

5.     等第二个设备也完成了,协调器向两个设备发送ZDO终端设备绑定应答消息。

注意打开编译选项:REFLECTOR和ZDO_COORDINATOR

 

 

 

4)实现函数

1)      EndDevice--ZDP_EndDeviceBindReq【ZDProfile.c】

功能:

* @brief       This builds and sends a End_Device_Bind_req message.

 *              This function sends a unicast message.

该函数一般在EndDevice的应用层中被调用,如在按键处理子程序zclSampleLight_HandleKeys()【zclSampleLight.c】

afStatus_t ZDP_EndDeviceBindReq( zAddrType_t *dstAddr,

                                 uint16 LocalCoordinator,

                                 byte endPoint,

                                 uint16 ProfileID,

                                 byte NumInClusters, cId_t *InClusterList,

                                 byte NumOutClusters, cId_t *OutClusterList,

                                 byte SecurityEnable )

参数及返回值

* @param       dstAddr - destination address

 * @param       LocalCoordinator - short address of local coordinator

 * @param       epIntf - Endpoint/Interface of Simple Desc

 * @param       ProfileID - Profile ID

 *

 *   The Input cluster list is the opposite of what you would think.

 *   This is the output cluster list of this device

 * @param       NumInClusters - number of input clusters

 * @param       InClusterList - input cluster ID list

 *

 *   The Output cluster list is the opposite of what you would think.

 *   This is the input cluster list of this device

 * @param       NumOutClusters - number of output clusters

 * @param       OutClusterList - output cluster ID list

 *

 * @param       SecurityEnable - Security Options

 *

 * @return      afStatus_t

终端设备发起end_device_bind_re q的流程为:

1)zclSampleLight_event_loop()【zcl_sampleLight.c】Event Loop Processor for zclGeneral.

2)收到KEY_CHANGE事件时调用下面函数

zclSampleLight_HandleKeys()【zcl_sampleLight.c】

3)若判断为按按键2—》ZDP_EndDeviceBindReq()【ZDProfile.c】

4)-》fillAndSend()汇总发送

5)-》AF_DataRequest发送请求

2)Coordinator对接收到的绑定请求会执行以下函数

        1)int main( void )【ZMain.c】

        2)osal_start_system【OSAL.c】

在该函数中会执行在函数句柄数组tasksArr[]【OSAL_SampleLight.c】中包含的ZDO任务循环处理函数ZDApp_event_loop()

      // The order in this table must be identical to the task initialization calls below in osalInitTask.

const pTaskEventHandlerFn tasksArr[] = {

  macEventLoop,

  nwk_event_loop,

  Hal_ProcessEvent,

#if defined( MT_TASK )

  MT_ProcessEvent,

#endif

  APS_event_loop,

#if defined ( ZIGBEE_FRAGMENTATION )

  APSF_ProcessEvent,

#endif

  ZDApp_event_loop,

#if defined ( ZIGBEE_FREQ_AGILITY ) || defined ( ZIGBEE_PANID_CONFLICT )

  ZDNwkMgr_event_loop,

#endif

  zcl_event_loop,

  zclSampleLight_event_loop

};

以下是ZDO层的应用

3)ZDApp_event_loop()【ZDApp.c】

* @brief   Main event loop for Zigbee device objects task. This function

 *          should be called at periodic intervals.

 uint8 *msg_ptr;

。。。

if ( events & SYS_EVENT_MSG )

  {

    while ( (msg_ptr = osal_msg_receive( ZDAppTaskID )) )

    {

      ZDApp_ProcessOSALMsg( (osal_event_hdr_t *)msg_ptr );

 

      // Release the memory

      osal_msg_deallocate( msg_ptr );

    }

 

zigbee绑定流程(三)

该函数在收到消息SYS_EVENT_MSG后执行下面的函数:

4)ZDApp_ProcessOSALMsg()【ZDApp.c】处理接收到的任务消息

….

switch ( msgPtr->event )

  {

    // Incoming ZDO Message

    case AF_INCOMING_MSG_CMD:

      ZDP_IncomingData( (afIncomingMSGPacket_t *)msgPtr );

      break;

      

    case ZDO_CB_MSG:

      ZDApp_ProcessMsgCBs( (zdoIncomingMsg_t *)msgPtr );

      break;

该函数根据接收到的ZDO消息类型分别调用以下两个函数:

5-1)ZDP_IncomingData() 【ZDProfile.c】 //接收信息

* @brief       This function indicates the transfer of a data PDU (ASDU)

 *              from the APS sub-layer to the ZDO.

该函数通过调用ZDO_SendMsgCBs(zdoIncomingMsg_t *inMsg)【ZDProfile.c】函数向ZDO发送消息ZDO_CB_MSG

5-1)ZDApp_ProcessMsgCBs()【ZDApp.c】

 

该函数根据请求或响应消息的类型对其分别进行处理,如

void ZDApp_ProcessMsgCBs( zdoIncomingMsg_t *inMsg )

{

  switch ( inMsg->clusterID )

  {

         case NWK_addr_rsp:

    case IEEE_addr_rsp:

         …

         case Bind_req:

    case Unbind_req:

                            …

         case Bind_rsp:

    case Unbind_rsp:

         …

    case End_Device_Bind_req:  //节点发送的绑定请求

     if (ZG_DEVICE_COORDINATOR_TYPE) //必须为协调器接收

     {

        ZDEndDeviceBind_t bindReq;

        ZDO_ParseEndDeviceBindReq( inMsg, &bindReq );  //绑定请求消息的解析

        ZDO_MatchEndDeviceBind( &bindReq );

         。。。

         }

….

注意需要提前注册End_Device_Bind_req消息,在ZDApp_RegisterCBs函数中实现【ZDApp.c】

当接收到节点发来的End_Device_Bind_req绑定请求后,该函数调用以下两个函数对信息进行处理

6-1)ZDO_ParseEndDeviceBindReq()【ZDObject.c】//解析绑定请求消息

6-2)ZDO_MatchEndDeviceBind() 【ZDObject.c】//Called to match end device binding requests

函数ZDO_MatchEndDeviceBind()主要实现两个节点设备的绑定,其主要流程为:

        首先,查看收到的绑定请求是否为第一次(对应第一个节点)

        若是第一次,将第一个请求的信息保存到end1中,并且若成功接收了第一个请求后,会设定超时时间16s;

        若不是第一个绑定请求,则分别以第一个和第二个绑定请求为原绑定,进行比较匹配,如果匹配成功则发送匹配成功的信息end_device_bind_rsp给两个请求终端(通过调用函数ZDMatchSendState中的ZDP_EndDeviceBindRsp函数实现),并会返回ZDP_SUCCESS状态。

        若匹配不成功,也发送rsp响应(直接调用函数ZDP_EndDeviceBindRsp),该响应包含匹配不成功的状态(ZDP_NO_ENTRY、ZDP_NO_MATCH)


ZigBee四种绑定方式在TI Z-Stack中的应用 BINDING KuangJunBin:本文是作者根据TI Z-Stack开发文档,ZigBee Specification-2007,《Zigbee Wireless Networking》等英文资料整合和翻译而成,采用中英双语对照方便读者理解,文中翻译不当之处,望广大同行不吝赐教。推广ZigBee技术,提高国内电子行业的国际影响力,是我们无线通讯工程师的愿景。本文欢迎转载,请保留作者信息和出处,作为支持我继续努力前行的动力,谢谢! E-mail:kuangjunbin@gmail.com In the Zigbee 2006 release,the binding mechanism is implemented in all devices and is called source binding. Binding allows an application to send a packet without knowing the destination address,the APS layer determines the destination address from its binding table,and then forwards the message on to the destination application(or multiple applications)or group. ZigBee2006版本中规定,在全部节点中实现绑定机制,并将其称为源绑定。绑定机制允许一个应用服务在不知道目标地址的情况下向对方(的应用服务)发送数据包。发送时使用的目标地址将由应用支持子层(APS)从绑定表中自动获得,从而能使消息顺利被目标节点的一个或多个应用服务,乃至分组接收。 Binding Table 1.Defined in RAM,but can be saved in Flash if the NV_RESTORE compiler option is used 2.Stored on source node(REFLECTOR compiler option required) 3.Entries map messages to their intended destination 4.Each entry in the binding table contains the following: typedef struct { uint16 srcIdx;//Source index uint8 srcEP;//Source endpoint uint8 dstGroupMode;//Specifies normal or group addressing uint16 dstIdx;//Destination index or group address uint8 dstEP;//Destination endpoint uint8 numClusterIds;//Number of cluster IDs in the clusterIdList below uint16 clusterIdList[MAX_BINDING_CLUSTER_IDS]; }BindingEntry_t; 绑定表 1. 绑定表存放的位置是内存中预先定义的RAM块,如果编译选项NV_RESTORE被激活,也能保存在Flash里。 2. 绑定表放置在源节点(需要激活编译选项REFLECTOR)。 3. 绑定表的条目把需要发送的消息映射到它们的目标地址上。 4. 绑定表中每个条目(entry)包括以下内容: 绑定表条目结构体的定义 立即下载

相关推荐

ZigBee四种绑定方式

ZigBee四种绑定方式

zstack协议栈广播

本次要完成的是协调器组网成功后每隔5秒广播一个“0123456789”,并且led1灯快速闪烁5次,终端收到"0123456789"后显示到串口上,并且给协调器发送一个OK,协调器收到OK后led2闪烁5次。

weixin_48657573的博客 656

Dynamics 365 F&O新手必看:Visual Studio 2019搭建项目框架全流程(含Model避坑指南)

本文详细介绍了如何在Visual Studio 2019中为Dynamics 365 Finance and Operations搭建企业级项目框架,包括Model分层策略、Solution管理及开发工作流优化。特别提供了Model避坑指南和实用配置建议,帮助新手快速上手并避免常见错误。

weixin_30505225的博客 381

lesson 12 Zigbee绑定通信

最后调用发送函数,以绑定的方式发送(绑定的时候发送指定函数中的配置信息有:接收模块的接收端点、接收簇,发送模块的发送端点,发送模块的网络地址。不指定接收模块的地址相关信息)。在发送时,首先查看绑定表,如果绑定表中的内容与发送函数中指定的信息相匹配,再去查看地址管理器的MAC与绑定表中的MAC是否一致,如果一致,就将地址管理器中的网络短地址作为目标地址,最后将数据包发送过去。其中函数的第一个参数是发送方端点,第二个参数是接收方簇,第三个参数是接收模块MAC的地址相关信息结构体地址,第四个变量是接收方的端点。

qq_25218501的博客 1789

SRAM故障排查实战:如何用Nano Prober定位6T存储单元的异常点

本文详细介绍了在SRAM故障排查中,如何运用Nano Prober(纳米探针)技术精准定位6T存储单元的内部异常。面对传统方法难以发现的电性参数漂移(如晶体管阈值电压偏移)或微小物理缺陷,Nano Prober能直接对单个6T单元内的晶体管进行I-V特性测量,结合失效模式分析,有效解决读写错误等疑难问题,是芯片失效分析的关键工具。

v5w6x的博客 664

SWIPT技术(无线通信携能技术)的简介与架构——(后续补充无人机SWIPT方向)

SWIPT一、SWIPT(无线通信携能)技术简介1.1、组成:1.2、与传统无线通信的区别:1.3、SWIPT 的集成接收器架构设计1、单独的接收器2、TS架构——时间开关(Time switching,TS)3、PS架构——功率分流(Power splitting,PS)4、天线开关接收器主要两种架构的区别参考文献SWIPT的发展 一、SWIPT(无线通信携能)技术简介 SWIPT(Simultaneous Wireless Information and Power Transfer )是各种WPT技术

Blue 1万+

绑定确认过程

注1:本文以ZStack-cc2530-2.3.1-1.4.0里的Collector-Sensor为例。 注2:看本文先弄懂绑定基本正确的流程。   传感节点发送网络,并且加入网络后,就会进入MY_FIND_COLLECTOR_EVT事件,注意事件的位运算操作,MY_FIND_COLLECTOR_EVT属于ZB_USER_EVENTS事件中的一种。按如下的流程:zb_HandleOsalEv

cucmakeit的专栏 1584

频谱分析常见坑:STM32的ADC采样+FFT处理时如何避免这5个错误

本文深入剖析了在STM32平台上进行ADC采样与FFT频谱分析时,工程师最常遇到的五个关键错误与性能陷阱。内容涵盖从采样频率设置、频谱泄露处理、ADC配置优化,到谐波识别校准及系统实时性设计,提供了详尽的避坑指南与实战调优策略,旨在帮助开发者构建稳定、精确的嵌入式频谱分析或波形识别系统。

7up55的博客 624

ZIGBee组网流程

ZIGBee组网流程  (2012-08-11 13:17:12) 转载▼ 标签:  杂谈   第一个功能:协调器的组网,终端设备和路由设备发现网络以及加入网络 //第一步:Z-Stack  由 main()函数开始执行,main()函数共做了 2 件事:一是系统初始化,另外一件是开始执行轮转查询式操作系统 int mai

早先生 1644

Ta-Lib源码解析(三):蜡烛图指标 (Candlestick Indicator) #(附Python重构代码和示意图)(补充中)

蜡烛图指标为识别K线形态的指标,笔者认为重点在于定义方式所提供的思路,背后的投资逻辑可以借鉴但不建议直接参考文档的翻译内容和源码逻辑存在不一致的现象,笔者分别列出中文百科中的定义和源码实际逻辑,供大家参考技术分析理论中的一些模糊词,ta-lib中给出了精确的定义源码

量化就是探索生活 3254

Unity 接入 Steam 平台

Unity 接入 steam sdk 的登录和应用内购买功能

MarinaTsang的博客 3904

再谈ZigBee中的绑定机制

再谈ZigBee中的绑定机制 2012-05-22 16:38:23 分类: 原文地址:再谈ZigBee中的绑定机制 作者:frankzfz 这里主要再讨论一下绑定的机制,绑定是ZigBee中应该是比较重要的一个部分。前面的几篇文章也对绑定有了具体的分析,主要分析了两种绑定方式,介绍了绑定的流程,源代码方面。这里主要是理清整个绑定在组网中的概念。绑定是和EndPoint紧密联

linuxheik的专栏 1196

如何在 Ubuntu 24.04 LTS 上安装 SSH 服务器?

Ubuntu是一个基于Debian的开源Linux操作系统,由Canonical Ltd.开发和维护。Ubuntu致力于提供用户友好、稳定且安全的操作系统环境,适用于个人用户、企业和服务器等不同场景。Ubuntu 24.04 LTS是Ubuntu发布的一个长期支持版本,LTS代表长期支持(Long Term Support)。这意味着Ubuntu 24.04 LTS将获得长达5年的安全更新和维护支持,使其成为企业和个人用户的理想选择。

网络技术联盟站 5888

zigbee协议栈之中终端绑定

1193628586个人中心好友消息退出 聪明女人必撒的九个谎 发博文 博文 痴白孺子牛 http://blog.sina.com.cn/u/1326039221 [订阅][手机订阅] 首页博文目录图片关于我 个人资料

莽的专栏 2729

手把手教你学simulink(8.39)--基于Simulink的步进电机(Stepper Motor)仿真实例

通过这个仿真实例,你可以学习如何使用Simulink构建和仿真步进电机(Stepper Motor)系统。你可以根据实际需求调整模型和参数,进行更复杂的仿真和分析。希望这个例子对你有所帮助,祝你学习愉快!

MHD0815的博客 1052

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

zigbee绑定问题

(By   kennan, 2011.7.23) 注:本文档以TI的2.3.1协议栈和CC2530为基础。 绑定是Zigbee中非常重要的一个概念,想必大家都看了很多文章,其中以“Zigbee四种绑定方式在TI_Z-Stack协议栈中的应用”最为典型,此文我也读过几遍,收货颇丰。此外飞比(Feibit)论坛上也有帖子讲解了EndDeviceBinding蛋疼的传来传去机理,分析的也相当透彻

yeshuming的专栏 1075

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

学习zigbee入门-9

【转】学习zigbee入门-9 SimpleApp 例子解读 1 : 1、实验目的   --设置这些设备自动的进入网络    -- 创建从每一个开关到一个或多个灯的绑定    --从开关设备发送一个改变灯状态的命令    --为某个开关到不同的灯从新指派绑定   -- 之后增加新的灯或开关到该网络 2、实验原理  关于详细的程序清单见 SAPI.C 文件。   初始化

xiao11xiang123的专栏 844

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

zigbee2mqtt设备绑定:Bind模块的实现原理与使用技巧

在Zigbee智能家居网络中,设备绑定(Binding)是一个核心功能,它允许设备之间直接通信,无需通过协调器(Coordinator)中转。想象一下这样的场景:你希望按下墙上的智能开关时,客厅的智能灯立即响应,而不是经过服务器中转——这就是绑定的价值所在。 zigbee2mqtt的Bind模块实现了这一关键功能,本文将深入解析其实现原理,并提供实用的使用技巧。 ## Bind模块架构解析 ...

gitblog_00391的博客 1212

学习zigbee入门-10

【转】学习zigbee入门-10 SimpleApp 例子解读-2 程序分析:         灯开关灯实验:开关设备通过发送命令切换控制设备的状态,并通过指示灯的状态变化反应操作是否成功。        在SimpleApp,SimpleController.c(灯管理器设备)按键处理函数zb_HandleKeys中,当SW1被按下,它将使设备作为协调器使用;期间按下S

xiao11xiang123的专栏 825

协议栈中绑定流程的一点认识

2011年4月27日 初学者关于协议栈中绑定流程的一点认识 本人刚接触zigbee不久,在学习中将不断记录每天的进步,期待大家的指导!! 在这里指出我还是参考了ZStack-CC2530-2.3.1-1.4.0\Projects\zstack\Samples\GenericApp例程 在协议栈中关于bind的服务主要有一下几类。     End_Device_Bind

linuxheik的专栏 3134

ZigBee四种绑定方式在TI Z-Stack协议栈中应用

本文转载自:http://omaday.net/forum.php?mod=viewthread&tid=367 ZigBee四种绑定方式在TI Z-Stack协议栈中应用         本文是作者根据TI Z-Stack开发文档,ZigBee Specification-2007,《Zigbee Wireless Networking》等英文资料整合和翻译而成,采用中英

wjjontheway的专栏 2093
上一篇: 如何建立cc2430串口与上位机通信的任务
下一篇: zigbee组网流程
cucmakeit
博客等级 码龄14年 30粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值