zstack协议栈中串口已经被封装好了,主要有如下几个函数
我们今天测试的是通过串口工具来给协调器发指令,让协调器上的LED1点亮或熄灭。
首先定义串口,配置串口,然后打开串口,配置串口回调函数
//串口
halUARTCfg_t uartconfig;
uartconfig.configured=true;
uartconfig.baudRate=HAL_UART_BR_115200;
uartconfig.flowControl=false;
uartconfig.flowControlThreshold=64;
uartconfig.rx.maxBufSize=128;
uartconfig.tx.maxBufSize=128;
uartconfig.idleTimeout=6;
uartconfig.intEnable=true;
uartconfig.callBackFunc=rxCB;//回调函数
HalUARTOpen(0,&uartconfig);
这个是回调函数,就是收到串口发来的指令然后做出相应的处理,这里的逻辑就是收到255打开led1,发送254关闭led1
//回调函数
static void rxCB(uint8 port,uint8 event){
uint8 buf[50];
uint8 rxLength=0;//接收字符的大小
rxLength=Hal_UART_RxBufLen(0);//已经接收到的字符个数
if(rxLength>0){
HalUARTRead(0,buf,11);//接收到数据
// if(osal_memcmp(buf,"hello world",11)){
// HalUARTWrite(0,buf,11);
// HalUARTWrite(0,"\r\n",2);
// }
if(osal_memcmp(buf,"255",3)){
HalLedSet(HAL_LED_1,HAL_LED_MODE_TOGGLE);
}else if(osal_memcmp(buf,"254",3)){
HalLedSet(HAL_LED_1,HAL_LED_MODE_TOGGLE);
}
}
}
测试发现正常,这下我们可以顺着思路,让协调器组网,终端节点加入网络,然后通过上位机给协调器发指令,协调器转发指令到终端节点,然后控制终端节点