国产精品久久人妻互换毛片,国产av国片偷人妻麻豆,国产精品第12页,国产高清自产拍av在线,潮喷大喷水系列无码久久精品

技術(shù)頻道

使用D21DM模塊并基于C++Builder的城市路燈無線監(jiān)控軟件設(shè)計(jì)

城市路燈自動(dòng)監(jiān)控系統(tǒng)以計(jì)算機(jī)為核心,通過無線通信技術(shù)實(shí)現(xiàn)公布式數(shù)控采集監(jiān)控的系統(tǒng),其監(jiān)控系統(tǒng)結(jié)構(gòu)如圖1所示。中心控制計(jì)算機(jī)(主控站)和終端控制器(分控點(diǎn))是各自獨(dú)立的系統(tǒng),同時(shí)它們又通過數(shù)傳電臺(tái)聯(lián)系起來構(gòu)成三遙系統(tǒng),即遙測(cè)、遙控、遙信。

     

按此在新窗口瀏覽圖片
圖1城市路燈監(jiān)控系統(tǒng)結(jié)構(gòu)圖

1、系統(tǒng)實(shí)現(xiàn)的功能

城市路燈監(jiān)控系統(tǒng)是以城市地圖為主顯示界面,其主要功能有

  1)控制功能。系統(tǒng)提供開/關(guān)燈控制功能,主控站自動(dòng)將每天的燈控時(shí)間傳送給分控點(diǎn),分控點(diǎn)根據(jù)收到的燈控時(shí)間進(jìn)行開關(guān)燈控制。主控站可手動(dòng)執(zhí)行群控   開/關(guān)燈,也可全天候?qū)θ我唤K端執(zhí)行開/關(guān)燈。主控站通過GPS對(duì)時(shí)功能獲得準(zhǔn)確的時(shí)間并自動(dòng)對(duì)分控點(diǎn)校對(duì),保證節(jié)點(diǎn)有統(tǒng)一的時(shí)間基準(zhǔn)。

  2)數(shù)據(jù)采集功能。主控站根據(jù)數(shù)據(jù)采集周期自動(dòng)采集各個(gè)分控點(diǎn)的數(shù)據(jù),這些數(shù)據(jù)包括三相電壓、支路電流、支路燈的開關(guān)狀態(tài)、支路的報(bào)警信息(電流高高   限、電流高限、電流低限、支路短路、開關(guān)跳閘、電壓缺相、電壓上限和電壓下限)、電度計(jì)量等。如果分站點(diǎn)出現(xiàn)報(bào)警,則分站向主控站提出報(bào)警,主控   站中斷當(dāng)前巡檢,處理報(bào)警信息。

  3)統(tǒng)計(jì)管理功能。系統(tǒng)具有完善的數(shù)據(jù)統(tǒng)計(jì)、分析、管理功能。分控點(diǎn)采集的上述數(shù)據(jù)通過數(shù)傳電臺(tái)發(fā)理后,以直觀的圖形或表格形式提供給用戶。這些數(shù)據(jù)   包括亮燈率統(tǒng)計(jì)、線路狀態(tài)顯示、報(bào)警列表、各種數(shù)據(jù)自動(dòng)保存到數(shù)據(jù)庫中,對(duì)所需的數(shù)據(jù)自動(dòng)形成各類所需格式報(bào)表,報(bào)表可以顯示和打印。

  4)圖形顯示功能。整個(gè)城市的路燈控制點(diǎn)以地圖方式顯示,在地圖上表示分控點(diǎn)的位置和分控點(diǎn)的狀態(tài)(開燈狀態(tài)和報(bào)警狀態(tài)),界面直觀方便。點(diǎn)擊各站點(diǎn)   標(biāo)記,可以直接查看分控點(diǎn)當(dāng)前信息。

  5)參數(shù)設(shè)置功能。參數(shù)設(shè)置包括分控點(diǎn)參數(shù)、系統(tǒng)參數(shù)、分控點(diǎn)標(biāo)志管理、用戶管理和燈控時(shí)間等。

2 軟件設(shè)計(jì)主要實(shí)現(xiàn)方法

  該系統(tǒng)軟件采用C++Builder5.0可視化開發(fā)工具編寫,C++Builder具有和Delphi一樣的組件庫,但編譯語言采用C++編譯器,是快速應(yīng)用程序開發(fā)工具。下面是軟件主要部分實(shí)現(xiàn)方法。

  1)無線通信。城市路燈監(jiān)控系統(tǒng)是通過數(shù)傳電臺(tái)實(shí)現(xiàn)數(shù)據(jù)采集和控制的。數(shù)傳電臺(tái)與計(jì)算機(jī)連接采用的是RS232接口,因此程序需要實(shí)現(xiàn)串行通信。C++Builder沒有提供串行通信控件,可以采用Windows-Apl編程方法控制串口或使用第三方串口控件,采用控件方法實(shí)現(xiàn)串行通信簡單,同時(shí)也符合可視化編程思想。本系統(tǒng)使用SPCOmm控件,SPCOmm控件是用Delphi編寫的控件,可以在C++Builder中安裝使用,SPCOmm控件提供的屬性、方法和事件主要有:

DtrControl:Dtr信號(hào)控制屬性

SendDataEmpty:發(fā)送緩沖區(qū)空標(biāo)志

StartComm:打開串口

StopComm:關(guān)閉串口

WriteCommData:向串口寫數(shù)據(jù)

OnReceiveData串口有接收數(shù)據(jù)時(shí)的事件

  數(shù)傳電臺(tái)間的點(diǎn)對(duì)點(diǎn)通信是靠電臺(tái)的身份地址區(qū)分的。為實(shí)現(xiàn)對(duì)特定點(diǎn)的通信,主控機(jī)首先設(shè)置與分控點(diǎn)數(shù)傳電臺(tái)身份地址一致的主控站數(shù)傳電臺(tái)的目的地址,然后在向分控點(diǎn)發(fā)送數(shù)據(jù)和命令。數(shù)據(jù)通信程序?qū)崿F(xiàn)的主要代碼有:

  向電臺(tái)寫控制命令

Comm1->Dtrcontrol=DtrEnable;//控制串DTR端,表明串口數(shù)據(jù)為發(fā)送給電臺(tái)的命令

if(Comm1->SendDataEmpty)

Comm1->WriteCommData(SendBuffer,Length);//S-end-Buffer數(shù)據(jù)指針,Length為數(shù)據(jù)長度

發(fā)送數(shù)據(jù)或命令

Comm1->DtrControl=DtrDisable; //控制串口的DTR端,表明串口數(shù)據(jù)為通過電臺(tái)發(fā)送的數(shù)據(jù)

if(Comm1->SendDataEmpty)

Comm1->WriteCommData(SendBuffer,Length);

收到的串口數(shù)據(jù)在OnReceiveData事件中處理。

  2)城市地圖顯示。本系統(tǒng)的城市地圖文件采用位圖(BMP)格式,由于城市地圖位圖尺寸通常比顯示設(shè)備的顯示面積大,因此城市地圖的顯示采用漫游方式,即不用滾動(dòng)條,通過鍵盤或者鼠標(biāo)控制圖象的移動(dòng),從而在較小的顯示區(qū)域內(nèi)可以瀏覽圖象的任何部分。下面以鼠標(biāo)控制為例說明。在窗體中放置一個(gè)TPanel控件,在Tpanel控件是放置一個(gè)Tlmage控件,設(shè)置Tlmage控件的AutoSize屬性為True, Left屬性為O,Top屬性為O。TForm1的類定義中加兩個(gè)私有變量:int Ixt,Iyo;

響應(yīng)Tlmage控件的onMouseDown和onMouseMove事件.

Void__fastcall TFOrrm1::1mage1MouseDown?(Tobject Sender,TMouseButton,TshiftState?Shift int X,int Y)

{ixo=x; iYo=Y}

Void __fastcall?TFOrrm1::1mage1MouseMove (Tobject Sender,TshiftState Shift ,int X,int Y)

{int iDeltaX,iDeltaY;

if(Shift.Contains(ssLeft))

{

iDeltaX=X-ixo;

iDeltaY=Y-iyo;

if(iDeltaY﹠﹠ (!MoveFlag))

{

Maplmage->Left+=iDeltaX;

Maplmage->Top+=iDeltaY;

//控制地圖漫游不出界

if(Maplmage->Left<(ClientWidth-Maplmage->Width))

Maplmage->Left=ClientWidth-Maplmage->Width

If(Maplmage->Top=(ClientHeighT-Maplmage->Height))

Maplmage->Top=ClientHeighT-Maplmage->Height;

if(Maplmage->Top>O?Maplmage->Top =O

if(Maplmage->Left>O?Maplmage->Top =O ;)}

3)數(shù)據(jù)管理。數(shù)據(jù)管理包括數(shù)據(jù)的內(nèi)存管理和數(shù)據(jù)的存儲(chǔ),數(shù)據(jù)內(nèi)存管理采用C++Builder的TList對(duì)象實(shí)現(xiàn),Tlis對(duì)象用于維護(hù)各種類指針的索引,這些索引本身存有指向?qū)ο蟮闹羔?,是C++Builder中用于實(shí)現(xiàn)動(dòng)態(tài)鏈表的對(duì)象,能夠在運(yùn)行時(shí)修改。但Tlist索引對(duì)象的內(nèi)存分配和釋放都必須由程序員來完成。

聲明TList對(duì)象:

TList﹡DataList;//聲明一個(gè)TList對(duì)象

pData﹡Data;?//聲明一個(gè)指向特定數(shù)據(jù)結(jié)構(gòu)的指針在TList中動(dòng)態(tài)增加一個(gè)數(shù)據(jù)點(diǎn)方法

pData=new Data;

DataList->Add(Pdatd);//將數(shù)據(jù)點(diǎn)指針加到TList鏈表未尾在TList中同刪除一個(gè)數(shù)據(jù)點(diǎn)方法

PData=((Data﹡)DataList->ltems[i];//獲得第I個(gè)TList 元素指針

DataList->Delete(i); //從Tlist中刪除這個(gè)元素

delete pData;// 釋放數(shù)據(jù)點(diǎn)所占的內(nèi)存

  路燈監(jiān)控系統(tǒng)的各種數(shù)據(jù)包括站點(diǎn)參數(shù)、實(shí)時(shí)數(shù)據(jù)、報(bào)警數(shù)據(jù)、亮燈率數(shù)據(jù)、燈控時(shí)間和值班記錄數(shù)據(jù)都保存在數(shù)據(jù)庫,數(shù)據(jù)庫采用 中的中的 數(shù)據(jù)庫,數(shù)據(jù)庫引擎采用 數(shù)據(jù)庫引擎,是直接在 下的一個(gè)層次,允訢不同數(shù)據(jù)庫格式無縫地使用 對(duì)數(shù)據(jù)庫格式可以直接處理,因此處理速度快,使用方便。采用數(shù)據(jù)庫方式進(jìn)行數(shù)據(jù)存儲(chǔ),對(duì)數(shù)據(jù)的查詢、增加、刪除等操作也容易實(shí)現(xiàn),便于實(shí)現(xiàn)系統(tǒng)的功能。

2 結(jié)束語

  以上是城市路燈監(jiān)控系統(tǒng)軟件關(guān)鍵部分的實(shí)現(xiàn)方法,要設(shè)計(jì)完成整個(gè)軟件系統(tǒng),還有許多其它任務(wù)要做,這包括日出日落時(shí)間計(jì)算 、報(bào)表的顯示和打印、報(bào)警的處理、用戶管理、值班日志管理、時(shí)間調(diào)度和系統(tǒng)安全設(shè)計(jì)等。

文章版權(quán)歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。