串口透傳之無線_第1頁
串口透傳之無線_第2頁
串口透傳之無線_第3頁
串口透傳之無線_第4頁
串口透傳之無線_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

SerialApp硬件:PC 仿真 P0_2、P0_3:P0_2RX,P0_3TX.USART0USART1UARTSPIUSART功能,可以設(shè)置在單獨的I/O引腳。更詳細(xì)的說明請參考參見16.1節(jié)。CC2530SerialApp硬件:PC 仿真 P0_2、P0_3P0_2RX,P0_3TX.USART0USART1UARTSPIUSART功能,可以設(shè)置在單獨的I/O引腳。更詳細(xì)的說明請參考參見16.1節(jié)。實驗相關(guān)寄存器與通訊模型由于協(xié)議棧已封裝好,大家直接配置參考即可心來看程序、實驗。下面就介紹實驗重要部分,我想是該留出一點空間讓大家自己去發(fā)揮一下了。傳\Projects\zstack\Utilities\SerialApp\CC2530DB\SerialApp.eww工程。cId_tSerialApp_ClusterList[SERIALAPP_MAX_CLUSTERS]={#define voidSerialApp_Init(uint8task_id{halUARTCfg_t SerialApp_TaskID SerialApp_RxSeq=0xC3; SampleApp_NwkState=DEV_INIT;我想大家學(xué)到這里應(yīng)該可以獨立看工程了,如果只是看我們的介紹,是很難有突破的,必須靜揮一下了。 constcId_tSerialApp_ClusterList[SERIALAPP_MAX_CLUSTERS]={#define voidSerialApp_Init(uint8task_id{halUARTCfg_t SerialApp_TaskID SerialApp_RxSeq=0xC3; SampleApp_NwkState=DEV_INIT;afRegister((endPointDesc_t*)&SerialApp_epDescRegisterForKeys(afRegister((endPointDesc_t*)&SerialApp_epDescRegisterForKeys()driveruartC=SuartC=FuartConfig.flowControlThresholdSERIAL_APP_THRESH;uartConfig.rx.maxBufSize=SERIAL_APP_RX_SZ;//2x30don'tcare-seeuartuartConfig.tx.maxBufSize=SERIAL_APP_TX_SZ;//2x30don'tcare-seeuartuartConfig.idleTimeout =SERIAL_APP_IDLE;//2x30don'tcare-seeuartuartCEnable =TRUE; //2x30don'tcare-seeuartuartConfig.callBackFunc SerialApp_CallBack;HalUARTOpen(SERIAL_APP_PORT,&uartConfig);//打開串口#ifdefined(LCD_SUPPORTEDHalLcdWriteString("SerialApp",HAL_LCD_LINE_2);ZDO_RegisterForZDOMsg(SerialApp_TaskID,Match_Desc_rsp); }UINT16SerialApp_ProcessEvent(uint8task_id,UINT16events{(void //Intentionallyunreferencedpaif(events&SYS_EVENT_MSG{afIncomingMSGPacket_t*MSuartConfig.tx.maxBufSize=SERIAL_APP_TX_SZ;//2x30don'tcare-seeuartuartConfig.idleTimeout =SERIAL_APP_IDLE;//2x30don'tcare-seeuartuartCEnable =TRUE; //2x30don'tcare-seeuartuartConfig.callBackFunc SerialApp_CallBack;//接收回調(diào)函數(shù)HalUARTOpen(SERIAL_APP_PORT,&uartConfig);//打開串口#ifdefined(LCD_SUPPORTEDHalLcdWriteString("SerialApp",HAL_LCD_LINE_2);ZDO_RegisterForZDOMsg(SerialApp_TaskID,Match_Desc_rsp); }UINT16SerialApp_ProcessEvent(uint8task_id,UINT16events{(void //Intentionallyunreferencedpaif(events&SYS_EVENT_MSG{afIncomingMSGPacket_t*MS *)osal_msg_receive(*)osal_msg_receive(SerialApp_TaskID)){switch(MSGpkt->hdr.event{caseSerialApp_ProcessMSGCmd(MSGpktcaseSampleApp_NwkState=(devStates_t)(MSGpkt->hdr.status);if((SampleApp_NwkState==DEV_ZB_COORD)||(SampleApp_NwkState==||(SampleApp_NwkState==DEV_END_DEVICE){//Startsendingtheperiodicmessageinaregularinterval.HalLedSet(HAL_LED_1,HAL_LED_MODE_ON);if(SampleApp_NwkState!=DEV_ZB_COORD)SerialApp_DeviceConnect();}e{//Deviceisnolongerinthe}default:}osal_msg_deallocate((uint8*)MSGpkt}return(events^SYS_EVENT_MSG}caseSampleApp_NwkState=(devStates_t)(MSGpkt->hdr.status);if((SampleApp_NwkState==DEV_ZB_COORD)||(SampleApp_NwkState==||(SampleApp_NwkState==DEV_END_DEVICE){//Startsendingtheperiodicmessageinaregularinterval.HalLedSet(HAL_LED_1,HAL_LED_MODE_ON);if(SampleApp_NwkState!=DEV_ZB_COORD)SerialApp_DeviceConnect();}e{//Deviceisnolongerinthe}default:}osal_msg_deallocate((uint8*)MSGpkt}return(events^SYS_EVENT_MSG}if(eventsif(events&SERIALAPP_SEND_EVT{Seriareturn(events^SERIALAPP_SEND_EVT}if(events&SERIALAPP_RESP_EVT{Seri return(events^SERIALAPP_RESP_EVT}return(0 //Discardunknown}SerialApp_SendstaticvoidSerialApp_Send({#ifSERIAL_APP_LOOPBACK if(SerialApp_TxLenSERI{SerialApp_TxLen+=HalUARTRead(SERIAL_APP_PORT,SerialApp_TxBuf+SerialApp_TxLen+1,}if({(voi{SerialApp_TxLen=}{if(events&SERIALAPP_RESP_EVT{Seri return(events^SERIALAPP_RESP_EVT}return(0 //Discardunknown}SerialApp_SendstaticvoidSerialApp_Send({#ifSERIAL_APP_LOOPBACK if(SerialApp_TxLenSERI{SerialApp_TxLen+=HalUARTRead(SERIAL_APP_PORT,SerialApp_TxBuf+SerialApp_TxLen+1,}if({{SerialApp_TxLen=}{}}SerialApp_TxLen0SerialApp_TxLen0SerialApp_TxLen0if(!SerialApp_TxLen HalUARTRead(SERIAL_APP_PORT, SERIAL_{//Pre-pendsequencenumbertotheTxmessage.SerialApp_TxBuf[0]=++SerialApp_TxSeq;}if { (afStatus_SUCCESS (endPointDesc_t*)&SerialApSerialApp_TxLen+1,SerialApp_TxBuf,&SerialApp_MsgID,0,AF_DEFAULT_RADIUS)){}}}

osal_set_event(SerialApp_TaskID,SERIALAPP_SEND_EVT//發(fā)送失敗則重?fù)?jù),voidSerialApp_ProcessMSGCmd(afIncomingMSGPacket_t*pkt{uint8stat;uint8seqnb;uint8switch(pkt->clusterId{Amessagewithaserialdatablocktobetransmittedontheserialport.caseSERIALAPP_CLUSTERID1://Storetheaddressforsendingandosal_memcpy(&SerialApp_RxAddr,&(pkt->srcAddr),sizeof(afAddrType_t));seqnb=pkt->cmd.Data[0];//Keepmessageifnotarepeatif((seqnb>SerialApp_RxSeq)|| //Normal((seqnb<0x80)&&(SerialApp_RxSeq>0x80)))//Wrap-around{TransmitthedataontheserialportPC HalUARTWrite( SERIAL_APP_PORT, (pkt->cmd.DataLength-1)){//SavefornextincomingmessageSerialApp_RxSeq=seqnb;stat=}e{stat=}}els{stat=}}}if(!SerialApp_TxLen HalUARTRead(SERIAL_APP_PORT, {//Pre-pendsequencenumbertotheTxmessage.SerialApp_TxBuf[0]=++SerialApp_TxSeq;}if { (afStatus_SUCCESS (endPointDesc_t*)&SerialApSerialApp_TxLen+1,SerialApp_TxBuf,&SerialApp_MsgID,0,AF_DEFAULT_RADIUS)){}}}

進行數(shù)據(jù)重發(fā)。上次數(shù)據(jù)沒有發(fā)完的話,即使串口有了新數(shù)據(jù)也不重新讀取串口里的新數(shù)據(jù),而是//SelectapproproiateOTAflow-control//Build&sendOTAresponseSerialApp_RspBuf[0]=stat;SerialApp_RspBuf[1]=seqnSerialApp_RspBuf[2]=LO_UINT16(delay);SerialApp_RspBuf[3]=HI_UINT16(delayosal_set_event(SerialApp_TaskID,SERIALAPP_RESP_EVT);osal_stop_timerEx(SerialApp_TaskID,SERIALAPP_RESP_EVT);break;caseif((pkt->cmd.Data[1]==SerialApp_TxSeq)((pkt->cmd.Data[0]==OTA_SUCCESS)||(pkt->cmd.Data[0]==OT{SerialApp_TxLen=osal_stop_timerEx(SerialApp_TaskID,SERIALAPP_}els{//Re-starttimeoutaccordingtodelaysentfromotherdevice.delay=BUILD_UINT16(pkt->cmd.Data[2],pkt->cmd.Data[3]);osal_start_timerEx(SerialApp_TaskID,SERIALAPP_SEND_EVT,delay}breakcaseSERIALAPP_CONNECTREQ_caseSERIALAPP_CONNECTRSP_voidSerialApp_ProcessMSGCmd(afIncomingMSGPacket_t*pkt{uint8stat;uint8seqnb;uint8switch(pkt->clusterId{Amessagewithaserialdatablocktobetransmittedontheserialport.caseSERIALAPP_CLUSTERID1://收到發(fā)送過來的數(shù)據(jù)通過串口輸出到電腦顯示//Storetheaddressforsendingandseqnb=pkt->cmd.Data[0];//Keepmessageifnotarepeatif((seqnb>SerialApp_RxSeq)|| //Normal((seqnb<0x80)&&(SerialApp_RxSeq>0x80)))//Wrap-{TransmitthedataontheserialportPC HalUARTWrite( SERIAL_APP_PORT, (pkt->cmd.DataLength-1)){//SavefornextincomingmessageSerialApp_RxSeq=seqnb;stat=}e{stat=}}els{defabre}}分別編譯下載到協(xié)調(diào)器、終端,兩個節(jié)點用USB與電腦相連,打開sscom32軟件設(shè)串口為:1152008N1stat

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論