亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        C++Builder環(huán)境下測溫系統(tǒng)后臺軟件的實(shí)現(xiàn)

        2008-04-12 00:00:00王兆瑋范寒柏
        現(xiàn)代電子技術(shù) 2008年24期

        摘 要:溫度作為一項(xiàng)重要的物理參數(shù),廣泛應(yīng)用于海洋氣象、水文、漁業(yè)、電力及各種工業(yè)控制領(lǐng)域。該后臺軟件旨在Wingdows XP操作系統(tǒng)下,以C++Builder這種高效開發(fā)環(huán)境為平臺,通過ADO方式連接后端 Microsoft Access 2003數(shù)據(jù)庫,實(shí)現(xiàn)集RS 232串口測溫系統(tǒng)中的實(shí)時(shí)數(shù)據(jù)采集、實(shí)時(shí)曲線繪制與數(shù)據(jù)庫管理于一體的后臺軟件的快速、高效開發(fā)。實(shí)際運(yùn)行表明,該后臺軟件以實(shí)時(shí)曲線繪制的方式形象、直觀的顯示了采集的溫度數(shù)據(jù),運(yùn)行良好。

        關(guān)鍵詞:RS 232串口;實(shí)時(shí)曲線;C++Builder;ADO

        中圖分類號:TP311文獻(xiàn)標(biāo)識碼:B

        文章編號:1004-373X(2008)24-067-04

        Software for Temperature Acquisition System Based on C++Builder

        WANG Zhaowei,F(xiàn)AN Hanbai

        (North China Electric Power University,Baoding,071003,China)

        Abstract:Temperature as an important physics parameter is extensive applied in many fields.This software is designed in Windows XP system based on C++Builder,it connects Microsoft Access2003 by ADO,establishes a communication between PC and slave computer throungh RS 232.realizes a rapid,efficient way to develop a software,which integerates real-time data′s effective aqcuisition,database management and the curve drawing.It is applied to a temperature acquisition system.It prves thatthe real-time data in a visual and intuition way to the operaters.Practical runs well.

        Keywords:RS 232 serials port;real-time curve;C++Builder;ADO

        隨著現(xiàn)代信息技術(shù)的發(fā)展,通信技術(shù)已經(jīng)日趨成熟,其在探測領(lǐng)域得到了廣泛的應(yīng)用,相較

        于探測結(jié)果的原始數(shù)據(jù)顯示,經(jīng)過后臺處理后形成的曲線給人更直觀的印象,而便捷的數(shù)據(jù)庫管理賦予數(shù)據(jù)更大的科學(xué)性和使用價(jià)值。因此制作集數(shù)據(jù)的接收、擬合、曲線繪制和數(shù)據(jù)庫管理的后臺軟件成為需要。在C++Builder環(huán)境下針對一款測溫系統(tǒng)進(jìn)行后臺軟件設(shè)計(jì)。溫度作為一項(xiàng)重要的物理參數(shù),對其的測量應(yīng)用范圍很廣。而本系統(tǒng)的RS 232與PC的通信模式,只要對通信協(xié)議部分的代碼稍做修改,即可應(yīng)用到其他的以串口測溫的系統(tǒng),具有一定的通用性。

        1 系統(tǒng)概述

        該后臺軟件在Windows XP操作系統(tǒng)下以C++ Builder為開發(fā)平臺,通過ADO方式連接后端Microsoft Access2003數(shù)據(jù)庫,應(yīng)用于測溫系統(tǒng)中的實(shí)時(shí)數(shù)據(jù)采集與處理。如圖1所示,其主要包含與下位機(jī)通信、實(shí)時(shí)數(shù)據(jù)處理、歷史數(shù)據(jù)查詢和報(bào)表打印4大部分。后臺軟件以RS 232方式與下位機(jī)進(jìn)行通信。對接收數(shù)據(jù)的進(jìn)行溫度擬合和溫度曲線繪制后可在每次測溫結(jié)束后自動將所有數(shù)據(jù)存儲到數(shù)據(jù)庫中。操作人員可以通過精確與模糊2種方式對歷史數(shù)據(jù)進(jìn)行查詢,并根據(jù)需要生成報(bào)表,進(jìn)行打印。

        2 PC機(jī)與RS 232的串口通信

        2.1 串口控件的安裝

        采用www.cppfans.com網(wǎng)站針對C++Builder開發(fā)的開源免費(fèi)VCL控件VICTOR與下位機(jī)的RS 232的通信, 因?yàn)槭轻槍++Builder開發(fā)的所以安裝與其他VCL一樣,十分方便。安裝步驟如下:

        (1) 打開project/option/packages/Add/Browse 選項(xiàng)卡, 選擇VICTOR/VCL目錄下的yb_base_c6.bpl和 yb_comm_c6.bpl文件,確定;

        (2) 打開project/(Directories/Conditionals)選項(xiàng)卡,在Include Path 和Library Path項(xiàng)目中,分點(diǎn)擊右方的省略號,選擇VICTOR/VCL,確定;

        (3) 在我的電腦→屬性→高級→環(huán)境變量→系統(tǒng)變量的Path中填加包含 *.bpl 文件的文件夾,注意與之前已存在的其他文件夾以分號分隔。

        通過以上操作,此時(shí)VICTOR空間已經(jīng)出現(xiàn)在控制面板中。

        2.2 串口數(shù)據(jù)的初始化

        在添加了VICTOR控件后,采集工作之前還要對串口進(jìn)行必要的初始化的工作。初始化工作實(shí)質(zhì)上就是要在計(jì)算機(jī)和數(shù)據(jù)終端間建立起一個共同遵守的協(xié)議,以使兩者在接收和發(fā)送數(shù)據(jù)上保持協(xié)調(diào)一致。比如在初始化工作中有一項(xiàng)為關(guān)于數(shù)據(jù)傳輸?shù)牟ㄌ芈试O(shè)置,在這項(xiàng)工作中,計(jì)算機(jī)作為接收數(shù)據(jù)端,它接收數(shù)據(jù)的速度應(yīng)與數(shù)據(jù)終端傳送數(shù)據(jù)的速度一致。如果設(shè)置不一致,就會造成數(shù)據(jù)的丟失等異常情況。不同于其他控件,VICTOR提供了串口初始化的窗口,只需在事件中添加語句就可以彈出初始化窗口(如圖2所示)。無需自己編寫額外代碼。

        YbCommDevice1->SettingsDialog(this,true);//顯示串口初始化窗口

        2.3 串口數(shù)據(jù)讀入

        當(dāng)數(shù)據(jù)采集裝置在串口被打開后,會自動將采集得到的數(shù)據(jù)送入計(jì)算機(jī)。本后臺軟件采取事件驅(qū)動方式,事件驅(qū)動方式相當(dāng)于一般程序設(shè)計(jì)中的中斷方式。

        當(dāng)串口發(fā)生事件或錯誤時(shí),VICTOR控件就會產(chǎn)生YbCommDevice1CommNotify事件,用戶程序可以捕獲該事件并進(jìn)行相應(yīng)處理。此后臺軟件與下位機(jī)的通信協(xié)議較簡單,1條數(shù)據(jù)包含6個字節(jié)。以EB90為報(bào)頭,第3,4個字節(jié)為發(fā)送數(shù)據(jù)的序列號,第5,6個字節(jié)為采集的電壓值。后臺軟件根據(jù)此協(xié)議提取數(shù)據(jù)即可。

        其讀入方式如下:

        YbCommDevice1->Active = true;//打開串口

        unsigned charinQue[8192];//輸入緩存

        YbCommDevice1->Read(inQue,8192);//放入緩沖區(qū)

        …//數(shù)據(jù)提取代碼

        3 溫度曲線繪制

        3.1 實(shí)時(shí)溫度曲線的繪制

        由于C++Builder自帶的Tchart控件功能十分強(qiáng)大,因此曲線的繪制十分簡單,且控件本身可以實(shí)現(xiàn)曲線的局部放大和縮小,無需額外代碼,大大加快了軟件的開發(fā)時(shí)間。在實(shí)時(shí)數(shù)據(jù)處理過程中只需在YbCommDevice1CommNotify事件中添加如下代碼即可。

        Form1→Series1→AddXY(Xvalue,Yvalue,String(Yvalue),clRed);

        該語句的作用是在Tchart中添加一條紅色的曲線,并以Yvalue的值來標(biāo)定點(diǎn),如圖3所示。

        3.2 歷史溫度曲線的繪制

        歷史數(shù)據(jù)的顯示同樣使用Tchart控件,與實(shí)時(shí)數(shù)據(jù)曲線繪制不同的是,數(shù)據(jù)的添加不再依靠YbCommDevice1CommNotify事件,而是從數(shù)據(jù)的存儲文件中讀取數(shù)據(jù)放入一自定義的數(shù)據(jù)結(jié)構(gòu)中,利用該數(shù)據(jù)結(jié)構(gòu)將數(shù)據(jù)添加到Tchart中,其效果與圖2相同,只是為了加以區(qū)別 ,歷史曲線的顯示顏色設(shè)置為了綠色。代碼實(shí)現(xiàn)片斷如下:

        typedef struct {

        float nIndex;

        float fValue;

        }tagTData;

        tagTData TD[20000];

        …//讀取文件數(shù)據(jù) 存入結(jié)構(gòu)體數(shù)組

        for(int i=0; i<文件中數(shù)據(jù)個數(shù); i++)

        {

        Form1->Series1->AddXY(nIndex,fValue,String(fValue ),clGreen);

        }

        4 數(shù)據(jù)庫的操作

        4.1 與加密的Access2003數(shù)據(jù)庫的連接

        基于一定安全性的考量,Access2003設(shè)有密碼,當(dāng)操作人員不具備操作權(quán)限或企圖直接操作.mdb文件時(shí)會要求其輸入密碼。而對于具有操作權(quán)限的人員,數(shù)據(jù)庫的密碼是透明的。在需要ADOQuery(ADOTable的實(shí)現(xiàn)方式也是這樣)控件的窗體的構(gòu)造函數(shù)中添加如下的代碼即可:

        __fastcall TForm1::Tform1(TComponent* Owner)

        : TForm(Owner)

        {

        ADOQuery->ConnectionSring=\"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=BDAdata.mdb:Persist Security Info=False;Jet OLEDB:Database Password=123\";

        ADOQuery->Active = true;

        }

        其中BDAdata.mdb為所要連接的數(shù)據(jù)庫名稱, 123為此數(shù)據(jù)庫的密碼。數(shù)據(jù)庫的名稱并沒有使用絕對路徑,這樣做的目的是,只要保證數(shù)據(jù)庫文件放在應(yīng)用程序所在的文件夾即可成功連接,提高了程序的可移植性。

        4.2 數(shù)據(jù)庫的刪除、查詢的實(shí)現(xiàn)

        4.2.1 數(shù)據(jù)庫的刪除

        考慮到測溫系統(tǒng)實(shí)時(shí)性和數(shù)據(jù)2大的特點(diǎn),采集的測量數(shù)據(jù)并未放入數(shù)據(jù)庫中,而是以二進(jìn)制的方式,用以測量時(shí)間為文件名存入位于應(yīng)用程序所在目錄的Data文件夾中,這樣只需在數(shù)據(jù)庫中記錄文件的名稱,即可在查詢時(shí)方便的還原為絕對路徑,提高了程序的可移植性。數(shù)據(jù)庫文件中只包含1個表,記錄試驗(yàn)時(shí)間、操作人員、備注以及前面提到的記錄文件名稱。因此相應(yīng)的刪除、修改、查詢實(shí)現(xiàn)起來十分簡單,只需最基本的SQL指令即可實(shí)現(xiàn)。惟一的難點(diǎn)在于將數(shù)據(jù)庫中記錄的刪除、修改,生效于其指向的二進(jìn)制文件。下面僅以數(shù)據(jù)的刪除為例,說明其實(shí)現(xiàn)方法:

        //1。根據(jù)數(shù)據(jù)庫的數(shù)據(jù)記錄獲得數(shù)據(jù)文件的存放路徑

        String FileName;

        FileName=DBGrid1->DataSource->DataSet->Field-

        Values[\"sy_record\"];

        FileName=ExtractFilePath(Application->ExeName)+FileName;

        //2。確認(rèn)是否刪除

        if(MessageBox(Handle,(\"真的要刪\"+FileName+文件嗎?\").c_str(),\"刪除確認(rèn)\",

        MB_OKCANCEL|MB_ICONWARNING)==IDOK)

        {

        DeleteFile(FileName.c_str()) ;

        }

        //3。刪除數(shù)據(jù)庫中紀(jì)錄

        qq->Delete();

        4.2.2 數(shù)據(jù)庫的查詢

        查詢的部分提供了任意字段的精確查詢與任意字段的模糊查詢2種方式,如圖4所示。以一個CheckBox在2種模式間進(jìn)行切換,當(dāng)CheckBox的狀態(tài)為True時(shí)。進(jìn)行任意字段的模糊與時(shí)間段查詢。反之,則實(shí)現(xiàn)任意字段的精確查詢,下面給出任意字段模糊查詢的SQL語句生成片斷:

        mysql=\"select * from sytable where 1=1 \";

        if(CheckBox1->Checked ) //任意字段模糊查詢

        {

        if (czshj1->Text !=\"\"czshj2->Text!=\"\")

        {

        mysql=mysql+\" and sy_time between #\" +czshj1->Text +\" 00::00::00# and #\"+czshj2->Text +\" 23::59::59#\";

        }

        if (czyy->Text !=\"\")

        {

        mysql=mysql+\" and sy_name like \" + \"'%\"+ Edit1->Text +\"%'\";

        }

        …//以同樣方式加入其他的查詢單項(xiàng)

        }

        這部分需要注意的是,在C++Builder中進(jìn)行時(shí)間查詢時(shí),時(shí)、分、秒之間是以“::”分隔,而不是標(biāo)準(zhǔn)SQL語言中的 “:”。

        5 報(bào)表的生成

        除測量人員和測量說明等少數(shù)數(shù)據(jù)庫信息,溫度測量值與測量序列號都以二進(jìn)制方式存儲在文件中。因此常用的數(shù)據(jù)庫報(bào)表控件FastReport并不適合用于生成該系統(tǒng)的報(bào)表。加之客戶要求生成TXT格式的報(bào)表。最終該系統(tǒng)決定運(yùn)用TMemo的SaveToFile屬性來實(shí)現(xiàn)報(bào)表的生成。在生成報(bào)表的窗體中添加一個Memo,將其Visible屬性設(shè)置為1,將需要生成報(bào)表的信息利用Tmemo中Lines 屬性的Add()方法添加到Memo中。信息輸入完畢后調(diào)用SaveToFile方法即可在制定的文件夾生成TXT文件。其關(guān)鍵實(shí)現(xiàn)代碼如下:

        Memo2->Clear() ;

        Memo2->Lines->Add(\"http://這是測溫系統(tǒng)的數(shù)據(jù)報(bào)表\");

        Memo2->Lines->Add(\"http://********\");

        Memo2->Lines->Add(//測量名稱:\" + clmch) ;

        … //添加修要聲稱報(bào)表的文件

        Memo2->Lines->SaveToFile(ExtractFilePath(Application->ExeName)+\"Report//\"+str);

        ShellExecute(Sender,\"open\",str.c_str() ,NULL,

        NULL,SW_SHOW);

        其中的clmch和str 分別為存儲數(shù)據(jù)庫中讀出的測量名稱和文件名稱的變量。ShellExecute()用來顯示生成的報(bào)表。經(jīng)實(shí)際應(yīng)用,生成含兩萬溫度值的報(bào)表時(shí)間不超過秒。其完全合乎需要,且十分方簡單,易于更改以應(yīng)對不同需求。

        6 結(jié) 語

        由于篇幅所限,該文章并未給出測溫系統(tǒng)的詳細(xì)實(shí)現(xiàn)過程,只針對開發(fā)過程中遇到的一些不同于其他系統(tǒng)的地方做了描述,并給出了代碼片斷。C++Builder是一種方便、高效的開發(fā)環(huán)境。其出色的窗體開發(fā)能力,以及豐富的VCL控件,大大縮短了系統(tǒng)的開發(fā)周期和代碼量。該測溫系統(tǒng)目前已應(yīng)用于某物理化學(xué)實(shí)驗(yàn),實(shí)驗(yàn)者感到操作方便,數(shù)據(jù)處理快速準(zhǔn)確,并且和手工方式相比,本軟件極大地減低了工作量,提高了工作效率。

        參考文獻(xiàn)

        [1]Victor Chen.Victor 串口 VCL 控件[EB/OL].http://www.cppfans.com/d_vcl_files/yb_comm_133.asp,2006.

        [2]王晟.C++ Builder數(shù)據(jù)庫開發(fā)經(jīng)典案例解析[M].北京:清華大學(xué)出版社,2005.

        [3]曾棕根.C++ Builder數(shù)據(jù)庫開發(fā)實(shí)用教程[M].北京:清華大學(xué)出版社,2006.

        [4]蒙祖強(qiáng).C++Builder程序員成長攻略[M].北京:中國水利水電出版社,2007.

        [5]袁輝.C++Builder實(shí)用教程[M].成都:電子科技大學(xué)出版社,1998.

        [6]梅成剛.C++Builder項(xiàng)目開發(fā)實(shí)踐[M].北京:中國鐵道出版社,2003.

        [7]求是科技.Delphi串口通信工程開發(fā)實(shí)例導(dǎo)航[M].北京:人民郵電出版社,2003.

        [8]同志工作室.C++Builder5.0 API函數(shù)開發(fā)與實(shí)例.北京:人民郵電出版社,2002.

        [9]劉濱.C++Builder5.0高級編程實(shí)例精解[M].北京:國防工業(yè)出版社,2001.

        [10]李幼儀,甘志.C++Builder高級應(yīng)用指南[M].北京:清華大學(xué)出版社,2002.

        作者簡介 王兆瑋 1983年出生,碩士研究生。主要研究方向?yàn)榍度胧较到y(tǒng)。

        范寒柏 1963年出生,副教授。主要研究方向?yàn)榍度胧较到y(tǒng)。

        亚洲中文字幕第一第二页| 男女性高爱潮免费观看| 久久久国产精品樱花网站| 国产人妖在线免费观看| 丝袜美腿视频一区二区| 婷婷色香五月综合激激情| 中文在线天堂网www| 久久国产亚洲中文字幕| 美女脱了内裤洗澡视频| 亚洲日韩av一区二区三区中文 | 国产精品毛片无码| 日韩欧美精品有码在线观看| 国产91精品一区二区麻豆亚洲| 久久96国产精品久久久| 无遮高潮国产免费观看| 国产精品美女久久久久浪潮AVⅤ| 国产情侣亚洲自拍第一页| 综合色区亚洲熟妇另类| 手机看片久久国产免费| 台湾自拍偷区亚洲综合| 不卡的av网站在线观看| 草草久久久无码国产专区| 亚洲欧美日韩国产精品网| 激情五月开心五月av| 无码人妻精品一区二区三| а中文在线天堂| 手机av男人天堂免费网址| 森中文字幕一区二区三区免费| 免费无码一区二区三区蜜桃大| 巨臀中文字幕一区二区| 精品亚洲一区二区三洲| 亚洲人成人无码www影院| 亚洲自拍另类制服在线| 熟女乱乱熟女乱乱亚洲| 日韩av无码社区一区二区三区 | 日韩国产欧美| 少妇人妻在线伊人春色| 欧美老熟妇乱xxxxx| 女人被做到高潮免费视频| 日韩人妻系列在线视频| 中文字幕亚洲精品一区二区三区|