3. 2 通信程序設(shè)計(jì)
系統(tǒng)通信程序包括路燈與路燈節(jié)點(diǎn)之間的通信及其路燈節(jié)點(diǎn)與監(jiān)控中心之間的通信兩部分。
1) 路燈節(jié)點(diǎn)之間的通信實(shí)現(xiàn)。
路燈節(jié)點(diǎn)之間實(shí)現(xiàn)通信,一方面是為了了保證路燈在夜間沒(méi)有行人或車輛通過(guò)時(shí)處于節(jié)電狀態(tài),即微亮狀態(tài),另一方面是當(dāng)路燈節(jié)點(diǎn)檢測(cè)到道路上有行人或車輛通過(guò)時(shí),使該路燈轉(zhuǎn)為全亮,并通知下一盞路燈轉(zhuǎn)為全亮,以確保行人或車輛的出行安全。
路燈節(jié)點(diǎn)之間采用串口通信,通信參數(shù)配置為異步通信、8 位數(shù)據(jù)、無(wú)奇偶校驗(yàn)、一個(gè)停止位及無(wú)倍速。串口的發(fā)送程序采用查詢方式,接收程序采用中斷接收方式。
路燈節(jié)點(diǎn)控制器之間的發(fā)送程序?yàn)椋?/p>
sysDRFarr [0] = 0xfd; / /點(diǎn)對(duì)點(diǎn)數(shù)據(jù)傳輸指令
sysDRFarr [1] = 1; / /數(shù)據(jù)長(zhǎng)度
sysDRFarr [2] = sysAddress [( LEDNumber )* 11 + 1]; / /目標(biāo)地址高
sysDRFarr [3] = sysAddress [( LEDNumber )* 11 + 2]; / /目標(biāo)地址低
sysDRFarr [4] = 0; / /數(shù)據(jù)
put_ arr ( sysDRFarr,5) ; / /發(fā)送一串?dāng)?shù)據(jù)幀
接收處理程序?yàn)椋?/p>
void PointToPointRecive ( void)
{
LEDPWM_ Adjust ( usartReceiveBuf [3 ]) ;
/ /接收到的數(shù)據(jù)
sysDRFarrShortAddress [0] = usartReceiveBuf[4]; / /來(lái)源地址高
sysDRFarrShortAddress [1] = usartReceiveBuf[5]; / /來(lái)源地址低
usartReceive_ Init ( ) ; / /串口數(shù)據(jù)初始化
}
2) 路燈節(jié)點(diǎn)與監(jiān)控中心之間的通信。
路燈節(jié)點(diǎn)與監(jiān)控中心之間的通信一方面可以通過(guò)上位機(jī)為路燈節(jié)點(diǎn)配置相關(guān)信息、發(fā)送控制指令,另一方面可以接收來(lái)自路燈節(jié)點(diǎn)的現(xiàn)場(chǎng)運(yùn)行信息,實(shí)現(xiàn)系統(tǒng)在監(jiān)控室進(jìn)行路燈系統(tǒng)操控和故障查詢、報(bào)警等功能。
采用PC 機(jī)串口與網(wǎng)絡(luò)協(xié)調(diào)器相連,實(shí)現(xiàn)讀取路燈節(jié)點(diǎn)信息或控制路燈運(yùn)行狀態(tài)。例如PC 機(jī)要讀取當(dāng)前系統(tǒng)路燈信息,利用串口調(diào)試工具觀察PC機(jī)向無(wú)線網(wǎng)絡(luò)發(fā)送和接收數(shù)據(jù),如圖2 所示。發(fā)送指令格式為: FB + 02 + 14 + 路燈編號(hào)( 本系統(tǒng)中路燈編號(hào)為01,02,03),表示讀取編號(hào)為01、02、03 的路燈節(jié)點(diǎn)當(dāng)前信息; 路燈節(jié)點(diǎn)做出回應(yīng),通過(guò)無(wú)線網(wǎng)絡(luò)返回路燈信息格式為: 環(huán)境光強(qiáng)+ 路燈光強(qiáng)+ 故障情況。路燈節(jié)點(diǎn)1 返回的信息表明當(dāng)前所處環(huán)境光強(qiáng)度為E2(由強(qiáng)到弱范圍: FE ~ 00)、路燈亮度FB ( 由滅到全亮范圍:FE ~ 00) 、無(wú)故障00( 有故障為01) 。
圖2 串口調(diào)試界面
評(píng)論