EM200在分布式探測(cè)站組網(wǎng)通信的應(yīng)用
進(jìn)程3負(fù)責(zé)從RAM緩沖區(qū)中截取一段之前串口0接收到的數(shù)據(jù),并按AT指令TCP發(fā)送格式打包并發(fā)送給EM200模塊,然后檢測(cè)AT指令暫存緩沖區(qū)中的應(yīng)答響應(yīng)結(jié)果,判斷是否立即發(fā)出下一輪TCP發(fā)送指令給EM200,如圖10所示。進(jìn)程3對(duì)串口1執(zhí)行發(fā)送操作,實(shí)時(shí)性相對(duì)進(jìn)程1和進(jìn)程2要求更低,因此進(jìn)程3的優(yōu)先級(jí)可設(shè)為三者中最低一級(jí)。本文引用地址:http://butianyuan.cn/article/155305.htm
4.2.2 接收端軟件設(shè)計(jì)
接收端也分為三個(gè)進(jìn)程,依靠RTOS的調(diào)度機(jī)制,MCU在三個(gè)進(jìn)程之間切換執(zhí)行,實(shí)現(xiàn)接收端對(duì)來(lái)自CDMA網(wǎng)絡(luò)數(shù)據(jù)包的接收并將解析后的有效數(shù)據(jù)發(fā)送給融合中心。
鑒于EM200收到自CDMA網(wǎng)絡(luò)數(shù)據(jù)后會(huì)直接經(jīng)串口將數(shù)據(jù)包輸出的特性(不同于其他模塊會(huì)將數(shù)據(jù)暫存在模塊內(nèi)部,只有當(dāng)收到AT指令讀命令后才會(huì)輸出數(shù)據(jù)包),因此最高優(yōu)先級(jí)進(jìn)程1的任務(wù)就是通過(guò)串口1接收自EM200的數(shù)據(jù)包并將其壓入在RAM開(kāi)辟的緩沖區(qū)。如圖11接收端的進(jìn)程1架構(gòu)與發(fā)送端進(jìn)程1類似。
由于進(jìn)程1中收到的數(shù)據(jù)包含有部分無(wú)效字符,因此中等優(yōu)先級(jí)進(jìn)程2負(fù)責(zé)解析緩沖區(qū)數(shù)據(jù)包中的有效數(shù)據(jù),若檢測(cè)到緩沖區(qū)中無(wú)完整的數(shù)據(jù)包,則調(diào)用RTOS提供的OSTimeDlyHMSM函數(shù)延時(shí)一定時(shí)間,在延時(shí)期內(nèi)主動(dòng)釋放MCU的使用權(quán),若檢測(cè)到一個(gè)以上的完整數(shù)據(jù)包,則在解析處理后將有效數(shù)據(jù)送入在內(nèi)存中開(kāi)辟的串口0發(fā)送緩沖區(qū),該進(jìn)程架構(gòu)如圖12所示。
低優(yōu)先級(jí)的進(jìn)程3負(fù)責(zé)檢測(cè)串口0的發(fā)送緩沖區(qū)是否為空,若不為空則通過(guò)串口0將緩沖區(qū)中數(shù)據(jù)發(fā)送出去,如圖13所示。
只有在進(jìn)程2延時(shí)期內(nèi)且進(jìn)程1處于掛起狀態(tài),負(fù)責(zé)串口0發(fā)送任務(wù)的進(jìn)程3才得以執(zhí)行。由于采用了延時(shí)的方式主動(dòng)釋放對(duì)MCU的使用權(quán),因此延時(shí)的大小決定了進(jìn)程3每次的執(zhí)行時(shí)間,延時(shí)若設(shè)得過(guò)大可能會(huì)造成數(shù)據(jù)包解析不及時(shí)從而導(dǎo)致串口1收到的數(shù)據(jù)包在接收緩沖區(qū)中大量堆積,使得實(shí)時(shí)性大大降低。延時(shí)若設(shè)得過(guò)小則會(huì)導(dǎo)致進(jìn)程3在發(fā)送一段較長(zhǎng)的數(shù)據(jù)時(shí)被經(jīng)常打斷,微控制器的處理資源被浪費(fèi)在頻繁的進(jìn)程切換上,綜合考慮此處將延時(shí)設(shè)定為50ms。
5 結(jié)語(yǔ)
本文介紹了一套基于EM200模塊的CDMA數(shù)據(jù)收發(fā)系統(tǒng),利用該系統(tǒng)組建的分布式探測(cè)網(wǎng)絡(luò)可適應(yīng)各種地理環(huán)境,結(jié)合CDMA系統(tǒng)較短的傳輸時(shí)延配以合理的軟硬件設(shè)計(jì),能夠確保整個(gè)網(wǎng)絡(luò)較高的實(shí)時(shí)性能,滿足分布式無(wú)源探測(cè)信息融合系統(tǒng)組網(wǎng)通信要求。
評(píng)論