基于AT89C52網(wǎng)絡(luò)監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
(2)下位機(jī)狀態(tài)字:
本文引用地址:http://m.butianyuan.cn/article/173783.htm
b0:登陸請求1,無登陸請求0;
b1:已登陸狀態(tài)標(biāo)志1,未登陸狀態(tài)標(biāo)志0;
b2:已收卷狀態(tài)標(biāo)志1,未收卷狀態(tài)標(biāo)志0;
b3:開始答題狀態(tài)標(biāo)志1,未開始答題狀態(tài)標(biāo)志O;
b4:交卷請求標(biāo)志1,無交卷請求標(biāo)志0;
b5:已交卷標(biāo)志1,未交卷標(biāo)志O;
b6:答題中止標(biāo)志l,答題恢復(fù)標(biāo)志O。
4 通信過程
上位機(jī)開機(jī)啟動程序,上位機(jī)進(jìn)入輪詢過程。此時(shí),下位機(jī)開機(jī)登陸,在輪詢到自己時(shí),發(fā)出登陸信息,上位機(jī)收到后,進(jìn)行必要的登陸處理。在所有下位機(jī)登陸完畢后或監(jiān)考老師認(rèn)為收到所有考生的登陸信息后,按下發(fā)卷按鈕,對每一個(gè)登陸下位機(jī)依次發(fā)卷。發(fā)卷完畢后,由監(jiān)考老師按下開考按鈕,以廣播方式發(fā)出考試開始指令,下位機(jī)顯示考試題目,系統(tǒng)開始計(jì)時(shí)。在考試進(jìn)行過程中,監(jiān)考老師可查詢?nèi)我粋€(gè)下位機(jī)的狀態(tài)(包括考生考試情況);甚至可以啟動自動巡考指令,自動巡視每個(gè)考生的答題情況??荚囘^程中考生答題完畢可交卷,在考生按下交卷按鈕后交卷,發(fā)出交卷信息,上位機(jī)接收,并發(fā)出正確接收的回復(fù)信息。考試過程中,監(jiān)考老師發(fā)現(xiàn)有學(xué)生作弊,可隨時(shí)按下中止考試按鈕,中止此下位機(jī)的運(yùn)行,考試記零分。考試時(shí)間到,系統(tǒng)自動判斷是否仍有考生沒有交卷,中止考生答卷,并取回相應(yīng)下位機(jī)的答題信息。上下位機(jī)基本輪詢及通信動作示意圖如圖3所示。
上下位機(jī)通信動作過程如下:
①上位機(jī)作為網(wǎng)絡(luò)主控端,以一定時(shí)間間隔dtl進(jìn)行輪詢。輪詢過程是這樣的:首先上位機(jī)查詢上位機(jī)狀態(tài)字,判斷是否存在通訊請求,如果沒有,就對輪詢到的下位機(jī)發(fā)出通訊授權(quán)標(biāo)志,若在延遲短暫時(shí)間后下位機(jī)無應(yīng)答,置此地址下位機(jī)不在線標(biāo)志,并中止此次輪詢;若有應(yīng)答則置與此下位機(jī)通訊的通道標(biāo)志。
②下位機(jī)發(fā)出指令:表明下位機(jī)回復(fù)查詢指令,根據(jù)狀態(tài)字判斷下位機(jī)狀態(tài)。
③上位機(jī)發(fā)出指令:表明上位機(jī)根據(jù)下位機(jī)的狀態(tài)字及上位機(jī)狀態(tài)字,按上位機(jī)有優(yōu)先原則,發(fā)出上位機(jī)準(zhǔn)備接收信息。
④下位機(jī)發(fā)出指令:上位機(jī)根據(jù)功能指令解析數(shù)據(jù),完成相應(yīng)的顯示及確認(rèn)回復(fù)。
⑤上位機(jī)發(fā)出指令:在從下位機(jī)向上位機(jī)傳輸信息過程中出現(xiàn)錯(cuò)誤時(shí),上位機(jī)將向下位機(jī)發(fā)出重發(fā)功能指令,重發(fā)次數(shù)確定根據(jù)調(diào)試過程確定。
在設(shè)計(jì)RS 485通信軟件時(shí),要注意對RS 485控制端的軟件編程。為了保證數(shù)據(jù)收發(fā)可靠,在RS 485總線狀態(tài)切換時(shí)需要加適當(dāng)?shù)难訒r(shí),延時(shí)一般控制在1 ms左右,再進(jìn)行數(shù)據(jù)的收發(fā)。經(jīng)過這樣處理后,使總線在狀態(tài)切換時(shí)有一個(gè)穩(wěn)定的工作過程。
5 上位機(jī)通信軟件的設(shè)計(jì)
上位機(jī)通信是采用一個(gè)專門針對串行通信的CSerial類進(jìn)行程序設(shè)計(jì)的,該方法功能較強(qiáng),只要理解這種類的幾個(gè)成員函數(shù),就能方便使用。以下是幾個(gè)常用的成員函數(shù):
評論