近年來(lái)路橋收費(fèi)管理系統(tǒng)不斷地向自動(dòng)化、智能化的方向發(fā)展,它除了要完成基本的收費(fèi)功能外,還需要對(duì)一些外部設(shè)備進(jìn)行管理。這些外部設(shè)備是收費(fèi)站與車輛司乘人員最直接的交流窗口,它不僅要控制車輛的放行和禁止,而且還要能夠給出有關(guān)車輛的車型、收費(fèi)金額等提示信息。這些信息的給出是由信號(hào)燈、led顯示屏、數(shù)碼管顯示器、語(yǔ)音報(bào)價(jià)器等外設(shè)來(lái)完成的。
在我們所設(shè)計(jì)的路橋收費(fèi)管理系統(tǒng)中,道口工作站對(duì)這些外部設(shè)備的控制是通過(guò)兩者之間的串行通信實(shí)現(xiàn)的。下面我們僅以led顯示屏為例,介紹工作站與外設(shè)的串行通信實(shí)現(xiàn)方案以及l(fā)ed顯示字符點(diǎn)陣數(shù)據(jù)的提取方法。 1道口工作站與led顯示屏的串行通信
為了實(shí)現(xiàn)道口工作站和led顯示屏的串行通信,我們首先在兩者之間定義了一個(gè)通信協(xié)議 。在本協(xié)議中主控器即道口工作站的pc機(jī)程序由vb語(yǔ)言編寫(xiě),被控器單片機(jī)程序由c51語(yǔ)言編寫(xiě)。該串行通信是在pc機(jī)的rs-232串行口和mcs-51系列單片機(jī)的uart串行口之間進(jìn)行的。下面首先給出通信協(xié)議的定義。
1.1通信協(xié)議
(1)通信常量的定義
通信常量的定義見(jiàn)表1。
當(dāng)主控器或被控器發(fā)送命令時(shí),對(duì)前幾個(gè)需要發(fā)送的字節(jié)作異或處理得到bcc校驗(yàn)碼 ,并將該校驗(yàn)碼作為最后一個(gè)字節(jié)發(fā)送。接收命令時(shí),接收方對(duì)收到的所有字節(jié)進(jìn)行異或處理,若為零,則表示數(shù)據(jù)傳輸無(wú)誤,否則進(jìn)行出錯(cuò)處理。
(2)主控器寫(xiě)命令執(zhí)行方式
主:
(若末收到被控器發(fā)出的ack或收到的bcc校驗(yàn)出錯(cuò),該命令重發(fā)一次,共允許重發(fā)三次)
(若收到被控器發(fā)出的nac或接收的bcc校驗(yàn)出錯(cuò),該命令重發(fā)一次,共允許重發(fā)三次)
(4)錯(cuò)誤定義
信息傳輸失。褐骺仄靼l(fā)出一條信息后收到被控器的錯(cuò)誤應(yīng)答(包括校驗(yàn)出錯(cuò)),計(jì)為一次傳輸失敗。
超時(shí):主控器發(fā)出一條信息后,過(guò)0.5s被控器無(wú)回音;被控器發(fā)出一條信息后,過(guò)0.1s主控器無(wú)回音。 超數(shù):一條信息傳輸失敗,重試三次仍失敗。
(5)錯(cuò)誤處理
當(dāng)主控器收到被控器的錯(cuò)誤應(yīng)答(包括校驗(yàn)出錯(cuò))時(shí),在不超數(shù)的情況下,主控器將重新發(fā)送命令。若被控器超時(shí)一次,計(jì)為信息傳輸失敗一次。若被控器超數(shù),則丟失本次傳輸所有數(shù)據(jù),回到正常工作狀態(tài)。
1.2 通信程序的編寫(xiě)
根據(jù)通信協(xié)議,我們使用vb語(yǔ)言在主控器pc機(jī)的通信窗體**編寫(xiě)了三個(gè)函數(shù):通信的初始設(shè)置函數(shù)、主控器寫(xiě)命令函數(shù)、主控器讀命令函數(shù)。其中初始設(shè)置函數(shù)主要完成串口的打開(kāi)與關(guān)閉、通信端口號(hào)的設(shè)置以及波特率、校驗(yàn)方式、數(shù)據(jù)位、停止位的設(shè)置等。主控器寫(xiě)命令函數(shù)主要完成工作站的pc機(jī)向led顯示屏發(fā)送各種需要顯示的問(wèn)候語(yǔ)以及收費(fèi)金額、余額等信息。主控器讀命令函數(shù)主要用于讀取led顯示屏的狀態(tài)信息。
在該通信窗體中,我們使用了一個(gè)active x控件mscomm,該控件通過(guò)串行端口發(fā)送和接收數(shù)據(jù),下面是有關(guān)該控件的一些屬性說(shuō)明。
圖1給出了主控器寫(xiě)命令函數(shù)的程序流程圖。由圖1可知,在整個(gè)通信過(guò)程中,我們?cè)谥骺仄鱬c機(jī)的程序里設(shè)置了三個(gè)出錯(cuò)檢測(cè)點(diǎn):a)檢測(cè)被控器·發(fā)出的ack信號(hào)以及bcc校驗(yàn)是否正確;b)檢測(cè)被控器的響應(yīng)是否超時(shí);c)檢測(cè)信息傳輸失敗是否連續(xù)超過(guò)3次。經(jīng)過(guò)我們的實(shí)踐證明,該串行通信實(shí)現(xiàn)方案較好地保證了信息傳輸?shù)目煽啃?運(yùn)行也非常穩(wěn)定。