基于GPRS與TCP的車輛載重?cái)?shù)據(jù)管理系統(tǒng)設(shè)計(jì)
5.2 TCP通信
系統(tǒng)和車載終端不是一個(gè)局域網(wǎng),所以首先要穿透局域網(wǎng),這里采用“TCP打孔”,“TCP打孔”與其他的方法相比較,具有較易實(shí)現(xiàn)、效率高等優(yōu)點(diǎn),基本原理是:處于局域網(wǎng)的用戶先與公網(wǎng)上的一個(gè)連接服務(wù)器建立輔助連接,在呼叫發(fā)生時(shí),通過(guò)連接服務(wù)器的協(xié)助在呼叫雙方間建立TCP直連。
VC進(jìn)行網(wǎng)絡(luò)通信要插入CSocket類,CSocket支持同步操作,可以單獨(dú)使用,通常情況下與CSocketFile、CArchive類一起實(shí)現(xiàn)數(shù)據(jù)的發(fā)送和接收。
TCP接收數(shù)據(jù)程序:
6 數(shù)據(jù)傳輸設(shè)計(jì)
6.1 數(shù)據(jù)發(fā)送設(shè)計(jì)
在載重查詢模塊中,用戶通過(guò)車牌號(hào)對(duì)貨車載重查詢時(shí),發(fā)送數(shù)據(jù)。具體過(guò)程是:當(dāng)輸入查詢的車牌號(hào)時(shí),通過(guò)在貨車信息表(TABMESS AGE)查詢車牌號(hào),將對(duì)應(yīng)的關(guān)聯(lián)字符作為查詢命令,發(fā)送出去。數(shù)據(jù)發(fā)送過(guò)程如圖4所示。
6.2 數(shù)據(jù)接收設(shè)計(jì)
在載重查詢模塊和超載處理模塊中,系統(tǒng)接收數(shù)據(jù),具體過(guò)程是:系統(tǒng)接受的每一個(gè)數(shù)據(jù)是由兩部分組成,關(guān)聯(lián)字符+貨車載重,先將數(shù)據(jù)分開,通過(guò)關(guān)聯(lián)字符在貨車信息表(TABMESSAGE)查詢出對(duì)應(yīng)的車牌號(hào),再根據(jù)車牌號(hào)在貨車載重表(TABLOAD)中查找,將貨車載重的數(shù)據(jù)修改或者新建。
同時(shí)通過(guò)關(guān)聯(lián)字符在貨車信息表(TABMESSAGE)查詢出對(duì)應(yīng)的載重,比較數(shù)據(jù)表中的載重值和接收到的載重值大小,決定是否將得到時(shí)間保存到貨車超載表(TABOVERLOAD)中。數(shù)據(jù)接受過(guò)程如圖5所示。
6.3 對(duì)話框界面設(shè)計(jì)
界面主要包括串口連接部分、發(fā)送數(shù)據(jù)部分和接受數(shù)據(jù)部分。串口部分的參數(shù)選擇由組合框提供,要發(fā)送的數(shù)據(jù)有編輯框輸入發(fā)送,接收的數(shù)據(jù)和接受數(shù)據(jù)的時(shí)間保存在列表框中,對(duì)話框的界面如圖6所示。
例:在貨車信息表中,車牌號(hào)為“陜A00000”,對(duì)應(yīng)的關(guān)聯(lián)字符為“SHAN0000”,載重為“20”。當(dāng)查詢此貨車載重時(shí),在文本框中輸入“陜A00000”,通過(guò)貨車信息表查到關(guān)聯(lián)字符“SHAN0000”。
將關(guān)聯(lián)字符發(fā)送出去。當(dāng)接受到字符“SHAN000025.000”時(shí),先將字符分開成“SHAN0000”與“25.000”,在貨車信息表中查找關(guān)聯(lián)字符,得到車牌號(hào)和載重,比較載重和字符“25.000”大小,得到超載,然后將車牌號(hào)和超載字符“25.000”保存到貨車超載表中。
7 結(jié)束語(yǔ)
文中闡述了使用Visual C++6.0和SQL server 2000設(shè)計(jì)一個(gè)管理系統(tǒng)的實(shí)現(xiàn)思想和管理方法,以及詳細(xì)介紹了對(duì)外界進(jìn)行數(shù)據(jù)通信,達(dá)到了系統(tǒng)對(duì)車載終端的檢測(cè),以及對(duì)貨車信息的管理,滿足了高可靠、高穩(wěn)定的要求。
c++相關(guān)文章:c++教程
評(píng)論