这门课对于我一个学嵌入式的来说,还是比较重要的,所以我还是以老师给出的大纲为主体,好好复习一下!

题型:选择题24x1.5 判断10x1 填空15x1 简答4x5 程序1x5 另外一个设计题1x14

每个标题前半部分是老师的提纲知识点,补充下面是我看到的可能比较重要的或者可以了解的。

WPAN及ZigBee基础

  1. Zigbee、蓝牙、IEEE802.11b(WiFi)标准都是工作在2.4G频段的无线通信标准;Zigbee主要用在短距离无线控制系统,传输少量的控制信息;(P2)
  2. 短距离无线网络主要分为:无线局域网(WLANs)和无线个域网(WPANs)(P3)
  3. 无线个域网所对应的通信协议:(P3)
    HR-WPANS:802.15.3
    MR-WPANS:蓝牙
    LR-WPANS(低速率无线个域网):802.15.4
  4. Zigbee最大传输速率:250kbps。 ZigBee可工作在2.4GHz(全球流行)、868MHz(欧洲流行) 和915 MHz(美国流行)3个频段上,分别具有最高250kbit/s、20kbit/s和40kbit/s的传输速率,它的传输距离在10-75m的范围内, 但可以继续增加 。
  5. Zigbee无线网络分层: 物理层(PHY) 介质访问控制(MAC)网络层(NWK)应用程序支持子层(APS) 应用层(APL)(P4)
    其中802.15.4 定义了物理层和介质访问控制层Zigbee协议定义了网络层、应用程序支持子层和应用层(具体介绍见下面的补充)
  6. Zigbee特点:(自组网)(P5)
    高可靠性:采取了碰撞避免策略;MAC层采用了完全确认的数据传输模式;
    低成本、低功耗 :ZigBee模块的复杂度不高,ZigBee协议免专利费,再加之使用的频段无需付费,所以它的成本较低;ZigBee的传输速率低,发射功率仅为1mW,而且采用了休眠模式,功耗低
    高安全 :采用高级加密标准(AES 128) 的对称密码;
    低数据速率
  7. Zigbee设备类型:(P5)
    协调器(ZC Coordinator):主要负责无线网络的建立与维护;(每个ZigBee网络必须有一个)
    路由器(ZR Router):主要负责无线网络的路由;( (1)允许其他网络设备加入 (2)多跳路由 (3)协助电池供电的子节点通信(4)自己作为终端节点应用)
    终端节点(ZED End-device):主要负责无线网络数据的采集。(1)向路由节点传递数(2)没有路由功能(3)低功耗(Zigbee的低功耗主要体现在这里)(4)可选择睡眠与唤醒。(路由因不断转发数据需电源供电,终端节点电池供电))
  8. Zigbee工作在ISM(工业、科学和医疗)频带,共规定了27个信道:(P7)
    2.4GHz频段 共16个信道,通信速率为250kbps
    915MHz频段 共10个信道,通信速率为40kbps
    896MHz频段 共1个信道,通信速率为20kbps
  9. Zigbee网络拓扑结构:星型;网络型;簇状;(P8)
  10. Zigbee应用为:周期性 ;反复; 间断数据采集应用
  11. Zigbee模块开发一般包括两个文件:.h头文件和.c文件(P)
    .h文件可理解为一份接口描述文件;
    .c文件主要功能是对.h文件中声明的外部函数进行具体实现。

补充:

  1. Zigbee网络中传输的三类数据:
    周期性数据:如家庭中水、电、气三表数据的传输;
    间断性数据:如电灯、家用电器的控制等数据的传输;
    反复性的低反应时间的数据:如鼠标、操作杆传输的数据。
  2. ZigBee设备分类
    全功能设备(FFD):可以担任网络协调者,形成网络,让其它的FFD或是精简功能装置(RFD)连结,FFD具备控制器的功能,可提供信息双向传输
    ~附带由标准指定的全部 802.15.4 功能和所有特征
    ~更多的存储器、计算能力可使其在空闲时起网络路由器作用。
    ~也能用作终端设备
    精简功能设备(RFD):RFD只能传送信息给FFD或从FFD接收信息。
    ~附带有限的功能来控制成本和复杂性
    ~在网络中通常用作终端设备。
    ~ZigBee相对简单的实现自然节省了费用。RFD由于省掉了内存和其他电路,降低了ZigBee部件的成本,而简单的8位处理器和小协议栈也有助于降低成本。

Zigbee设备类型与角色对应关系

3. ZigBee协议架构
物理层功能:PHY层由射频收发器以及底层的控制模块构成;
1. 激活和休眠射频收发器;
2. 信道能量检测(energy detect);
3. 检测接收数据包的链路质量指示(link quality indication , LQI);
4. 空闲信道评估(clear channel assessment, CCA);
5. 收发数据。
数据链路层功能:MAC子层为高层访问物理信道提供点到点通信的服务接口
1. 协调器产生并发送信标帧,普通设备根据协调器的信标帧与协议器同步;
2. 支持PAN网络的关联(association)和取消关联(disassociation)操作;
3. 支持无线信道通信安全;
4. 使用CSMA-CA(载波侦听多路访问/冲突避免)机制访问信道;
5. 支持时槽保障(guaranteed time slot, GTS)机制;
6. 支持不同设备的MAC层间可靠传输。
网络层功能:
1. ZigBee网络层的主要功能就是提供一些必要的函数,确保ZIgBee的MAC层(IEEE 802.15.4-2003)正常工作,并且为应用层提供合适的服务接口。为了向应用层提供其接口,网络层提供了两个必须的功能服务实体,它们分别为数据服务实体管理服务实体
2. 网络层数据实体(NLDE)通过网络层数据服务实体服务接入点(NLDE-SAP)提供数据传输服务
3. 网络层管理实体(NLME)通过网络层管理实体服务接入点(NLME-SAP)提供网络管理服务。网络层管理实体利用网络层数据实体完成一些网络的管理工作,并且,网络层管理实体完成对网络信息库(NIB)的维护和管理。
应用会聚层功能:该层主要负责把不同的应用映射到ZigBee网络上,具体而言包括:
1. 安全与鉴权
2. 多个业务数据流的会聚
3. 设备发现
4. 服务发现

4.TCP/IP结构对应OSI结构:
5. Z-Stack协议栈文件组织结构介绍

CC2530芯片相关

  1. CC2530单片机是一款完全兼容8051内核,支持802.15.4协议的无线射频单片机(P30)
    CC2530的Flash(非易失性存储器)容量可选: 32KB 64KB 128KB 256KB
    CC2530有两个晶振: 32MHz 晶振 32.768KHz(无线通信时必须采用外部32M晶振
  2. I/O口控制
    CC2530内部自带温度传感器:
    使用步骤:
    1、使能温度传感器
    2、连接温度传感器到ADC
    3、初始化ADC,确定参考电压、分辨率等,启动ADC读取温度数据
    补充:

Zigbee地址相关

  1. 设备地址:(P134)
    64位IEEE地址:长地址又称 MAC地址扩展地址(全球唯一)
    16位网络地址:短地址 又称逻辑地址(协调器地址为0x0000,其他设备入网时由协调器分配)(1)在网络中标识不同设备;(2)在网络数据传输时指定目的地址和源地址;

  2. 网络地址:唯一标示网络中的一个节点(用网络地址来区分不同的节点);(P135)

  3. 网络地址最多可以分配65536个节点,地址分配取决于整个网络的架构,整个网络的架构由一下3个值决定:1、网络最大深度 2、每个父节点拥有的孩子节点最大数目 3、每个父节点拥有的孩子节点路由器的最大数目
    同一父节点相连的终端节点的网络地址是连续的
    同一父节点相连的路由器节点的网络地址通常是不连续的

  4. 端口:每个节点上最多支持240(1-240)个端口,每个节点上的所有端口共用一个发射/接收天线(用端口来区分同一节点的端口);

  5. PANID:Zigbee网络号 可手动设置(或自动随机生成),如果指定的PANID被占用则自动加1。
    ~PANID范围是0X0001----0XFFFF;
    ~可以通过给不同的网络指定不同的网络ID号来区分网络,避免干扰;
    ~如果设置为0XFFFF,那么协调器则随机产生一个值作为自己的PANID;

    非易失性闪存条目ID号(NV操作用到的ID则定义在0x0201~0x0FFF 范围内!)

  6. 数据发送:调用**AF_DataRequest()**函数通过天线发送数据(P139)

afStatus_t  AF_DataRequest( afAddrType_t *dstAddr, endPointDesc_t *srcEP,uint16 cID, uint16 len, uint8 *buf, uint8 *transID,uint8 options,uint8 radius )
  1. 数据接收:调用**osal_msg_receive()**函数从消息队列中接收一个消息(包含事件与数据)
    uint8 *osal_msg_receive( uint8 task_id )

  2. 数据存储位置(结构):(P130)

typedef struct
{osal_event_hdr_t hdr;     /* OSAL Message header */uint16 groupId;           /* Message's group ID - 0 if not set */uint16 clusterId;         /* Message's cluster ID */afAddrType_t srcAddr;     /* Source Address, if endpoint is STUBAPS_INTER_PAN_EP,it's an InterPAN message */uint16 macDestAddr;       /* MAC header destination short address */uint8 endPoint;           /* destination endpoint */uint8 wasBroadcast;       /* TRUE if network destination was a broadcast address */uint8 LinkQuality;        /* The link quality of the received data frame */uint8 correlation;        /* The raw correlation value of the received data frame */int8  rssi;               /* The received RF power in units dBm */uint8 SecurityUse;        /* deprecated */uint32 timestamp;         /* receipt timestamp from MAC */afMSGCommandFormat_t cmd; /* Application Data */
} afIncomingMSGPacket_t;typedef struct
{byte   TransSeqNumber;uint16 DataLength;               // Number of bytes in TransDatabyte  *Data;
} afMSGCommandFormat_t;
  1. OSAL(系统抽象层)是一种支持多任务运行的系统资源分配机制(P72)
    OSAL主要功能:
    任务注册、初始化和启动
    任务间的同步、互斥
    中断处理
    存储器分配和管理

补充:

  1. IEEE802.15.4网络的建立过程
  2. int main( )主函数实现硬件的初始化其中包括

事件驱动

  1. 首先记住 任务轮询、事件驱动 必考;

  2. Zigbee将事件和任务的事件处理函数联系方法:(P74)
    1、建立一个事件表,保存各个任务的对应事件
    2、建立另一个函数表,保存各个任务事件处理函数地址
    3、将两张表建立某种对应关系

  3. OSAL工作原理(轮询)osal_start_system(void)
    通过tasksEvents指针访问事件表的每一项,如果有时间发生,则查找函数表找到事件处理函数进行处理,处理完后,继续访问事件表,查看是否有事件发生,无限循环;(P75)

  4. 协议栈定义的事件成为系统强制事件:(P80)
    AF_INCOMING-MSG-CMD
    ZDO_STATE_CHANGE
    ZDO_CB_MSG
    AF_DATA_CONFIRM_CMD

  5. Zigbee协议栈为半开源

  6. Zigbee协议栈串口操作(P85)
    串口基本操作步骤:
    1、初始化串口,包括设置波特率、中断等
    2、向发送缓冲区发送数据或从接收缓冲区读取数据
    操作函数:

 uint8    HalUARTOpen(uint8 port,halUARTCfg_t *config); //初始化串口(设置波特率、中断等)uint16  HalUARTRead(uint8 port,uint8 *buf,uint16 len); //从接受缓冲区读取数据uint16  HalUARTWrite(uint8 port,uint8* buf,uint16  len);// 向缓冲区发送数据
  1. 串口回调函数:回调函数不是由该函数实现方直接调用的,而是在特定的事件或条件发生的,由另外的一方调用,用于对该事件或条件进行响应。因此,串口回调函数是在有串口操作(事件)发生时(自动触发)调用的;(P89)

  2. 当应用有串口操作时,应该对应用程序模块的工程属性的编译预处理的Definedsymbols下拉列表框中输入“HAL_UART=TRUE”。(即用条件编译来控制是否编译与该模块相关的程序,目的是为了节约存储资源);(P93)

  3. 程序中波特率的设置要与上位机(如串口助手)一致;

  4. Zigbee协议栈NV操作(P120)
    NV(Non Volatile),即非易失性存储器(Flash存储器),即系统掉电,存储器中的数据不掉失。主要用途保存网路的配置参数,或掉电后,上电该节点还是加入原来的网络并且该节点的网络地址就可以从NV读取。
    NV存储器主要的操作有初始化NV存储器、读NV存储器、写NV存储器。这些都在OSAL文件夹下中的OSAL_Nv.h和OSAL.h文件中定义和实现。
    下面三个操作函数分别是:
    NV初始化函数:uint8 osal_nv_item_init( uint16 id, uint16 len, void *buf ),NV存储器将该存储器分成多个条目,每个条目都有一个ID号。 条目的分类见OSAL文件夹中的ZcomDef.h文件,其中要知道的是:用户应用程序定义的条目地址范围为是0x0201到0x0FFF;
    NV写操作函数:uint8 osal_nv_write( uint16 id, uint16 ndx, uint16 len, void *buf );
    NV读取函数:uint8 osal_nv_read( uint16 id, uint16 ndx, uint16 len, void *buf );
    第一个参数:uint16:NV条目ID号
    第二参数:举例条目开始的偏移量
    第三参数:要写入的数据长度
    第四参数:执行要存放写入或读取数据函数缓冲区的指针

  5. 用户只能使用条目ID范围0x0201~0x0FFF
    可在OSAL文件夹下的ZcomDef.h文件中添加自己的条目
    如:#define Test_NV 0x0201

  6. **函数名要考:**
    **事件添加函数**:osal_set_event()函数原型:osal_set_event(  taskID, SYS_EVENT_MSG );参数说明:  taskID:任务SYS_EVENT_MSG :事件
    **定时器函数**:osal_start_timerEx() (具有开启和停止一个定时器的功能,定时器能用**1毫秒**的增量进行设置)函数原型: uint8 osal_start_timerEx( uint8 taskID, uint16 event_id, uint16 timeout_value);参数说明:taskID:任务event_id:事件timeout_value:定时毫秒数**内存拷贝函数**:osal_memcpy()
    **内存比较函数**:osal_memcmp()
    **字符串长度函数**:osal_strlen()**无线发送函数**:AF_DataRequest( afAddrType_t *dstAddr, endPointDesc_t *srcEP,uint16 cID, uint16 len, uint8 *buf, uint8 *transID,uint8 options, uint8 radius )
    **消息接收函数**:uint8 *osal_msg_receive( uint8 task_id )
    

补充:

  1. SYS_EVENT_MSG是系统事件,也是协议栈已经定义好的系统事件。
    在文件ZcomDef.h中,事件号是一个16bit的常量,使用叫作独热码(one-hot code)编码,也是一个位表示一个事件,方便进行event的提取,这样一个task最多可以有16个event,SYS_EVENT_MSG已经占用了0x8000,故自定义的事件只能有15个
  2. 事件的提取和清除可以用简单的位操作指令实现,事件的提取可以用位操作 events & SYS_EVENT_MSG,事件的清除可以用异或操作实现,evets ^ SYS_EVENT_MSG;

Zigbee通信相关

  1. Zigbee协议栈中的规范(Profile)和簇(Cluester)
    Zigbee网络中进行数据收发都是建立在应用规范基础上的。每个应用规范都有一个ID来标示。在一个规范(Profile)下又提出了簇(Cluester)的概念,这个Cluester要理解为一个应用领域下的一个特定对象。簇是由命令组成的。

  2. 同一规范下的发送命令(簇号)和接受命令(簇号)要相同才能通信;

  3. Zigbee网络通信必须建立在具体设备节点的具体通信端口:
    网络地址可以描述一个节点,用户可使用简单描述符来描述一个端口。(用户可用的端口号是1-240)

  4. Zigbee通信模式:点播 广播 组播(这一点重点,我觉得可能考设计题和程序题,所以我会在下面着重补充)
    点播
    发送模式:Addr16Bit
    发送目的端口:目的节点的简单描述符设定的工作端口
    发送地址:目的节点的网络地址
    广播
    发送模式:AddrBroadcast
    发送目的端口:目的节点的简单描述符设定的工作端口
    发送地址: 0xFFFF 全网发送 包括休眠节点
    0xFFFD 只发往休眠节点
    0xFFFC 发往所有路由节点
    组播(同一组的节点才能通信)
    发送模式:AddrGroup
    发送目的端口:目的节点的简单描述符设定的工作端口
    发送地址:组ID

  5. #include “aps_groups.h”
    1、设置组对象(ID 和 name)
    2、加入对象组 aps_AddGroup()
    3、退出组

  6. Zigbee协议栈网络管理
    Zigbee协议栈实现网络管理的函数:
    获得该节点的网络地址:uint16 NLME_GetShortAddr(void)
    获得该节点的MAC地址:byte * NLME_GetExtAddr(void)

        获得该节点的父节点网络地址:uint16 NLME_GetCoordShortAddr(void)获得该节点的父节点MAC地址:void NLME_GetCoordExtAddr(byte *buf)
    

蓝牙

  1. 采用高速跳频扩展,实现语音和数据在短距离上的稳定无缝无线连接
    在2.4GHz的ISM频带上设立79个带宽为GHz的信道,用每秒钟切换1600次的频率的跳频(Hobbing)扩展技术实现信息的收发。
    蓝牙系统中的功能模块分为:无线射频单元、链路控制单元、链路管理单元、软件结构
  2. 微微网: 1主设备 7从设备
  3. 蓝牙技术采用了全开放的框架结构
  4. 蓝牙技术的系统结构分为三大部分:
    1.底层硬件模块
    2.中间协议层
    3.高层应用
  5. 蓝牙协议分为四层:
    1.核心协议:BaseBand、LMP、L2CAP、SDP;
    2.电缆替代协议:RFCOMM;
    3.电话传送控制协议:TCS-Binary、AT 命 令 集;
    4.选用协议:PPP、UDP/TCP/IP、OBEX、WAP、vCard、vCal、IrMC、 WAE。
  6. 近场通信NFC 及WIFI(了解一下,不考)

下面我整理了一下实验的一些核心代码,大家可以结合教材一起看,应该会在代码题和设计题里面考:

温度的采集:
1、协调器源代码(串口初始化后闪红灯并向上位机发送”init ok“,协调器收到终端发的温度传到上位机,上传一次闪一次蓝灯):
串口初始化:uartcnf.configured=TRUE;uartcnf.baudRate=HAL_UART_BR_115200;uartcnf.flowControl=FALSE;HalUARTOpen(1,&uartcnf);HalUARTWrite(1,"init ok",7);HalLedSet( HAL_LED_2, HAL_LED_MODE_FLASH );
收到信息处理函数:
void GenericApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
{unsigned char buffer[2]={0x0A,0x0D};TEMPERATURE temp;osal_memcpy(&temp,pkt->cmd.Data,sizeof(temp));HalUARTWrite(1,(uint8 *)&temp,sizeof(temp));HalUARTWrite(1,buffer,2);HalLedSet( HAL_LED_1, HAL_LED_MODE_BLINK );
}2、终端源代码(检测温度后向协调器发,发一次闪一次蓝灯):
点播初始化:GenericApp_DstAddr.addrMode = (afAddrMode_t)Addr16Bit;GenericApp_DstAddr.endPoint = GENERICAPP_ENDPOINT;GenericApp_DstAddr.addr.shortAddr = 0x0000;发送函数:
void GenericApp_SendTheMessage( void )
{int8 tvalue;TEMPERATURE temp;temp.BUF.Head='&';tvalue=readTemp();temp.BUF.value[0]=tvalue/10+'0';temp.BUF.value[1]=tvalue%10+'0';temp.BUF.Tail='C';AF_DataRequest( &GenericApp_DstAddr, &GenericApp_epDesc,GENERICAPP_CLUSTERID,sizeof(temp),(uint8 *)&temp,&GenericApp_TransID,AF_DISCV_ROUTE, AF_DEFAULT_RADIUS ) ;HalLedSet( HAL_LED_1, HAL_LED_MODE_BLINK );}
NV操作:
串口初始化:halUARTCfg_t uartcfg;uartcfg.configured=TRUE;uartcfg.baudRate=HAL_UART_BR_115200;uartcfg.flowControl=FALSE;uartcfg.callBackFunc=rxcb;HalUARTOpen(1,&uartcfg);HalLedSet( HAL_LED_2, HAL_LED_MODE_FLASH );回调函数(上位机发送nvread,协调器执行NV操作之后向上位机发送20):static void rxcb(uint8 port,uint8 event ){uint8 value_read;uint8 value=63;uint8 uartbuf[2];uint8 cmd[6];HalUARTRead(1,cmd,6);if(osal_memcmp(cmd,"603nb",5)){osal_nv_item_init(TEST_NV,1,NULL);osal_nv_write(TEST_NV,0,1,&value);osal_nv_read(TEST_NV,0,1,&value_read);uartbuf[0]=value_read/10+'0';uartbuf[1]=value_read%10+'0';HalUARTWrite(1,uartbuf,2);}HalLedSet( HAL_LED_1, HAL_LED_MODE_FLASH );}
组播
初始化串口,组播代码:halUARTCfg_t mycfg;mycfg.configured=TRUE;mycfg.baudRate=HAL_UART_BR_115200;mycfg.flowControl=FALSE;mycfg.callBackFunc=NULL;HalUARTOpen(1,&mycfg);HalUARTWrite(1,"ok",2);
aps_Group_t G1;(定义为全局变量);G1.ID=0x0001;G1.name[0]=2;osal_memcpy(&(G1.name[1]),"G1",2);入组函数:
aps_AddGroup(GENERICAPP_ENDPOINT ,&G1);消息发送函数代码:
void GenericApp_SendTheMessage( void )
{char theMessageData[] = "zb";afAddrType_t myaddr;myaddr.addrMode=(afAddrMode_t)AddrGroup;myaddr.endPoint=GENERICAPP_ENDPOINT;myaddr.addr.shortAddr=G1.ID;AF_DataRequest( &myaddr, &GenericApp_epDesc,GENERICAPP_CLUSTERID,(byte)osal_strlen( theMessageData ) + 1,(byte *)&theMessageData,&GenericApp_TransID,AF_DISCV_ROUTE, AF_DEFAULT_RADIUS ); HalUARTWrite(1,"send to G1",10);
}消息处理函数:
void GenericApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
{char buf[17];osal_memcpy(buf,pkt->cmd.Data,17);HalUARTWrite(1,buf,17);
}路由器代码(入网后亮红灯并入组“G1”,收到消息包将红灯状态翻转,并向协调器发送“router received”):状态变化代码:case ZDO_STATE_CHANGE:GenericApp_NwkState = (devStates_t)(MSGpkt->hdr.status);if ( (GenericApp_NwkState == DEV_ROUTER) ){aps_AddGroup(GENERICAPP_ENDPOINT,&G1);HalLedSet(HAL_LED_2,HAL_LED_MODE_ON);}消息处理函数:
void GenericApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
{HalLedSet(HAL_LED_2,HAL_LED_MODE_TOGGLE);GenericApp_SendTheMessage();
}消息发送函数:
void GenericApp_SendTheMessage( void )
{unsigned char theMessageData[17]= "router received!";afAddrType_t myaddr;myaddr.addrMode=(afAddrMode_t)Addr16Bit;myaddr.endPoint=GENERICAPP_ENDPOINT;myaddr.addr.shortAddr=0x0000;AF_DataRequest( &myaddr, &GenericApp_epDesc,GENERICAPP_CLUSTERID,(byte)osal_strlen( theMessageData ) + 1,(byte *)&theMessageData,&GenericApp_TransID,AF_DISCV_ROUTE, AF_DEFAULT_RADIUS );
}
广播:
串口初始化代码:halUARTCfg_t mycfg;mycfg.configured=TRUE;mycfg.baudRate=HAL_UART_BR_115200;mycfg.flowControl=FALSE;mycfg.callBackFunc=NULL;HalUARTOpen(1,&mycfg);HalUARTWrite(1,"ok",2);广播代码:
void GenericApp_SendTheMessage( void )
{char theMessageData[] = "send";afAddrType_t myaddr;myaddr.addrMode=(afAddrMode_t)AddrBroadcast;myaddr.endPoint=GENERICAPP_ENDPOINT;myaddr.addr.shortAddr=0xFFFF;AF_DataRequest( &myaddr, &GenericApp_epDesc,GENERICAPP_CLUSTERID,(byte)osal_strlen( theMessageData ) + 1,(byte *)&theMessageData,&GenericApp_TransID,AF_DISCV_ROUTE, AF_DEFAULT_RADIUS );
HalUARTWrite(1,"send",4);
}收到消息包的处理函数:
void GenericApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
{HalLedSet(HAL_LED_1,HAL_LED_MODE_ON);char buf[4];unsigned char buffer[2]={0x0A,0x0D};osal_memcpy(buf,pkt->cmd.Data,4);HalUARTWrite(1,buf,4);HalUARTWrite(1,buffer,2);}终端代码(终端入网后亮蓝灯,在收到消息包之后将蓝灯状态翻转,并向协调器发送“end1”或“end2”):消息处理函数代码:
void GenericApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
{HalLedSet(HAL_LED_2,HAL_LED_MODE_ON);GenericApp_SendTheMessage();
}发送函数代码:
void GenericApp_SendTheMessage( void )
{unsigned char theMessageData[4]= "end2";afAddrType_t myaddr;myaddr.addrMode=(afAddrMode_t)Addr16Bit;myaddr.endPoint=GENERICAPP_ENDPOINT;myaddr.addr.shortAddr=0x0000;AF_DataRequest( &myaddr, &GenericApp_epDesc,GENERICAPP_CLUSTERID,(byte)osal_strlen( theMessageData ) + 1,(byte *)&theMessageData,&GenericApp_TransID,AF_DISCV_ROUTE, AF_DEFAULT_RADIUS );HalLedSet(HAL_LED_1,HAL_LED_MODE_TOGGLE);// Error occurred in request to send.
}

zigbee通讯技术复习笔记相关推荐

  1. 计算机三级网络怎么复习,计算机三级网络技术复习笔记七

    第八章 网络技术展望 人们每次发送的报文分为较小的数据块,既报文分组,每个报文分组单独传送,达到目的地后再重新组装成报文,这就是分组交换技术. 信元交换技术是一种快速分组交换技术,它结合了电路交换技术 ...

  2. 无线网络技术复习笔记(6)——MANET, WSN, Mesh

    1 MANET 1.1 定义 移动Ad Hoc 网络(Mobile Ad Hoc Network, MANET)由一组 无线移动节点 组成,是一种 不需要 依靠现有固定通信网络基础设施的.能够迅速展开 ...

  3. 全国计算机三级网络工程技术复习笔记4

    三级网络技术.docx 上传的文件有错误,自己都没发现,感谢网友2767078420的指导,实在抱歉!!!我太大意了.如有问题请留言. 第六章 交换机及其配置 基础知识 交换机的基本概念 局域网交换机 ...

  4. 全国计算机三级网络工程技术复习笔记3

    三级网络技术.docx 第五章 局域网技术 基础知识 局域网组网的基础知识 从广义的角度看: 接入局域网的数据通信设备包括计算机.终端和各种外部设备. 局域网标准 IEEE 802标准:局域网参考模型 ...

  5. web开发技术复习笔记

    文章目录 一.Html 超链接各属性作用 href target id 表单form中各属性的作用 Action method name 常见表单元素的外观 text password radio c ...

  6. 传感器原理与检测技术复习笔记第六章-压电式传感器

    第六章 压电式传感器 文章目录 第六章 压电式传感器 工作原理 压电效应 正压电效应 逆压电效应 压电材料 石英晶体(单晶体) 压电陶瓷(多晶体) 压电式传感器等效电路 压电式传感器的测量电路 压电元 ...

  7. 微机原理与接口技术复习笔记(1)——微型计算机概述

    作者:BerenCamlost 目录 作者:BerenCamlost 第一章 微型计算机概述 1.1 ASCII码 1.2 微机的基本组成 1.3 总线 1.4 微机的工作过程 第一章 微型计算机概述 ...

  8. 传感器原理与检测技术复习笔记第五章-电容式传感器

    第五章 电容式传感器 文章目录 第五章 电容式传感器 电容式传感器工作原理 变面积型电容式传感器 变极距型电容式传感器 变介质型电容式传感器 电容式传感器的测量电路 调频电路 运算放大器 变压器式交流 ...

  9. 传感器原理与检测技术复习笔记第四章-电感式传感器

    第四章 电感式传感器 文章目录 第四章 电感式传感器 变磁阻电感式(自感式) 基本原理 输出特性 测量电路 变磁阻式应用 变气隙电感式压力传感器 变气隙差动压力传感器 差动变气隙厚度电感测微仪 差动变 ...

最新文章

  1. Sencha-概念-Layouts(布局)(官网文档翻译8)
  2. 面向对象软件设计——设计模式学习
  3. 关于ESXI能虚拟出多少个虚拟机和CPU的关系
  4. flask ajax 文件上传,python flask使用ajax请求上载文件。文件为空
  5. sql语句返回近似值
  6. Ros基本概念及小乌龟程序学习
  7. 小米平板2wifi驱动下载_小米平板2windows系统无线网怎么连接
  8. 数据结构与算法分析:C语言描述(原书第2版) PDF
  9. 泰戈尔专集:飞鸟集·新月集·园丁集(美冠纯美阅读书系·外国卷) 读后感
  10. 延安.居民家庭计算机普及率,2004~2014年家庭互联网普及率及电脑持有率
  11. Bayesian framework 贝叶斯框架 (R)
  12. 硬盘重新分区后数据丢失如何恢复?
  13. 关于DoG角点检测matlab实现
  14. 寒假的一点笔记《123速通》
  15. tornado完成一个简单的登录界面/图片的上传
  16. 用Raphael在网页中画圆环进度条(简化版)
  17. 智慧政务行业发展报告
  18. python--(常用模块-1)
  19. 10月25日lol服务器维护,《LOL》维护到几点10月25日 英雄联盟10.25维护到几点结束...
  20. python不放回抽样_PYTHON :有(无)放回简单随机抽样

热门文章

  1. CVE-2018-8961复现
  2. 农家女靠养花赚钱,年收入几十万
  3. 帆软FineReport8.0使用技巧总结及常见问题解决
  4. 虚拟机----Linux
  5. Java程序员日常开发提效工具(谷歌,Idea)-长期更新
  6. vscode代码切换大小写的教程
  7. 微信小程序获取openid中的问题
  8. windows与mac文件夹共享
  9. 1. 使用 while/for 循环:计算 1-100 之间所有数字的和,所有偶数的和,所有奇数的和
  10. 浏览器F12开发者工具修改替换js文件