何江科,羅友哲,劉 旸
(陜西省電子信息產(chǎn)品監(jiān)督檢驗(yàn)院 陜西 西安 710004)
在測(cè)試儀器不斷日新月異的當(dāng)今,工業(yè)接口(串行口)卻是測(cè)試儀器必備的,利用工業(yè)接口快速開(kāi)發(fā)出適合自己的PC上位機(jī)軟件,對(duì)于開(kāi)發(fā)測(cè)試儀器的擴(kuò)展功能、實(shí)現(xiàn)儀器的智能控制和數(shù)據(jù)電子化有明顯的實(shí)際應(yīng)用意義。
TH2817數(shù)字電橋儀器介紹是一種高精度、寬測(cè)試范圍的阻抗測(cè)量?jī)x器,可通過(guò)RS232C接口為儀器與計(jì)算機(jī)聯(lián)網(wǎng)通訊。
Delphi是Windows平臺(tái)下著名的快速應(yīng)用程序開(kāi)發(fā)工具(Rapid Application Development,簡(jiǎn)稱 RAD)。它的前身,即是DOS時(shí)代盛行一時(shí)的“Borland Turbo Pascal”,最早的版本由美國(guó)Borland(寶蘭)公司于1995年開(kāi)發(fā)。主創(chuàng)者為Anders Hejlsberg。經(jīng)過(guò)數(shù)年的發(fā)展,此產(chǎn)品也轉(zhuǎn)移至Embarcadero公司旗下。Delphi是一個(gè)集成開(kāi)發(fā)環(huán)境(IDE),使用的核心是由傳統(tǒng)Pascal語(yǔ)言發(fā)展而來(lái)的Object Pascal,以圖形用戶界面為開(kāi)發(fā)環(huán)境,透過(guò)IDE、VCL工具與編譯器,配合連結(jié)數(shù)據(jù)庫(kù)的功能,構(gòu)成一個(gè)以面向?qū)ο蟪绦蛟O(shè)計(jì)為中心的應(yīng)用程序開(kāi)發(fā)工具。對(duì)于工業(yè)口的開(kāi)發(fā)可以利用其封裝好的控制組件來(lái)完成,不僅節(jié)省了開(kāi)發(fā)時(shí)間,也能很好的得到支持服務(wù),而其成熟的IDE對(duì)于界面化的開(kāi)發(fā)也能起到加速作用。
為了簡(jiǎn)化復(fù)雜的儀器操作,實(shí)現(xiàn)儀器測(cè)試信息的集中自動(dòng)化管理,利用PC上位機(jī)通用、高速的軟件編程能力來(lái)實(shí)現(xiàn)。通過(guò)RS232C可實(shí)現(xiàn)對(duì)儀器的測(cè)試設(shè)置,顯示設(shè)置,打印設(shè)置,并能接收來(lái)自儀器的測(cè)試信息,擴(kuò)展儀器功能。
數(shù)字電橋儀器的串行通訊數(shù)據(jù)格式:發(fā)送數(shù)據(jù)格式包括了43個(gè)字節(jié)的信息,其中1-2字節(jié)為起始識(shí)別信息,中間字節(jié)信息均為儀器的測(cè)量數(shù)據(jù)信息,第43個(gè)字節(jié)為結(jié)束字符,也即在PC端接收數(shù)據(jù)時(shí),每幀數(shù)據(jù)包括43個(gè)字節(jié)。接收數(shù)據(jù)格式包括了2個(gè)起始字符1個(gè)接收字符及2-9個(gè)字符的設(shè)置命令。
PC軟件設(shè)計(jì)的初衷就是為了簡(jiǎn)單快捷的通過(guò)PC機(jī)實(shí)現(xiàn)對(duì)數(shù)字電橋儀器的控制,并能實(shí)現(xiàn)其結(jié)果的電子存檔。基于此PC需要實(shí)現(xiàn)接收數(shù)字電橋的串行口數(shù)據(jù),并能向串行口發(fā)送控制命令(數(shù)據(jù)),并能實(shí)現(xiàn)將數(shù)字電橋儀器的串行數(shù)據(jù)結(jié)果進(jìn)行保存的打印。所以整個(gè)軟件的核心在于其串行數(shù)據(jù)的接收及發(fā)送。
2.2.1 Windows硬件訪問(wèn)機(jī)制
Windows操作系統(tǒng)的機(jī)制禁止應(yīng)用程序直接訪問(wèn)硬件,但它提供了豐富的API函數(shù),可以支持大多數(shù)的硬件和協(xié)議,并隱藏了許多底層的處理,為編程人員編制程序提供了方便,免除了編程人員對(duì)有關(guān)硬件的調(diào)試麻煩。但是利用API進(jìn)行串口通訊編程較為復(fù)雜,需要掌握大量的通訊知識(shí),相比較下利用組件進(jìn)行程序開(kāi)發(fā)則較為方便。而大多數(shù)開(kāi)發(fā)語(yǔ)言的編程環(huán)境均支持組件,Delphi亦是如此。
Delphi的串口通訊需要利用第三方開(kāi)發(fā)的組件,使用免費(fèi)的組件CommDriver,其包含了串口通訊需求的基本操作。
2.2.2 開(kāi)發(fā)步驟
1)需要利用組件對(duì)串行口的基本參數(shù)進(jìn)行設(shè)置,這些參數(shù)的設(shè)置均可以通過(guò)組件的屬性進(jìn)行設(shè)置:ComPort為串口號(hào)設(shè)置,此組件僅支持4個(gè)串口號(hào)的設(shè)置,而這在一般的應(yīng)用中足夠了,這一屬性設(shè)置可以通過(guò)選擇列表進(jìn)行設(shè)置;ComPortDataBit用于設(shè)置數(shù)據(jù)位數(shù),根據(jù)測(cè)試儀器的通訊設(shè)置進(jìn)行選擇,一般應(yīng)用中使用8 bit;ComPortSpeed用于設(shè)置波特率;ComPortParity用于設(shè)置校驗(yàn)位;ComPortStopBit用于設(shè)置停止位。這些參數(shù)需要根據(jù)測(cè)試儀器情況,設(shè)置成與之相對(duì)應(yīng)的數(shù)據(jù),而其他參數(shù)可以使用默認(rèn)設(shè)置等。由于開(kāi)發(fā)的針對(duì)性以及儀器本身設(shè)置的固有屬性,所以這些基本參數(shù)無(wú)需作為軟件使用用戶的設(shè)置項(xiàng)出現(xiàn),可直接設(shè)定好固化在軟件中。
2)采用如下步驟進(jìn)行串口數(shù)據(jù)的接收和發(fā)送:
①利用組件的Connect事件打開(kāi)串口通訊;
③使用組件的DisConnect事件來(lái)關(guān)閉串口。
然后,再根據(jù)用戶的操作習(xí)慣進(jìn)行相關(guān)的界面的編程即可實(shí)現(xiàn)對(duì)測(cè)試儀器的訪問(wèn)。
接收串行數(shù)據(jù)源碼:利用串行組件的接收事件(Receive-Data)來(lái)處理串行口的數(shù)據(jù)接收。
串行口接收數(shù)據(jù)處理源碼(部分):
為了保證儀器串口發(fā)送的數(shù)據(jù)能及時(shí)得到PC的響應(yīng)處理,將通過(guò)組件接收的存放在緩沖區(qū)中的數(shù)據(jù),按照測(cè)試儀器的發(fā)送時(shí)間要求,將其在定時(shí)器事件中進(jìn)行處理。
儀器參數(shù)設(shè)置源碼(部分):這部分代碼是向儀器寫控制參數(shù),可以通過(guò)菜單或者按鈕來(lái)實(shí)現(xiàn)。
圖1 軟件實(shí)現(xiàn)后的界面Fig.1 Software realized interface
利用第3方控件進(jìn)行串行通訊的PC軟件開(kāi)發(fā),不僅縮短了編程人員的開(kāi)發(fā)時(shí)間,而且也利于軟件的調(diào)試、維護(hù),開(kāi)發(fā)者僅需了解基本的通訊知識(shí),通過(guò)簡(jiǎn)單的代碼編程設(shè)置即可完成相關(guān)功能。同時(shí),用戶通過(guò)軟件操作可以省去復(fù)雜的儀器設(shè)置操作,也為測(cè)試儀器的有效利用以及測(cè)量數(shù)據(jù)的電子化提供了便利。
[1]李存斌,汪冰.Delphi深度編程及其項(xiàng)目應(yīng)用開(kāi)發(fā)[M].北京:中國(guó)水利水電出版社,2002.
[2]江義華.Delphi7完美經(jīng)典[M].北京:中國(guó)鐵道出版社,2003.
[3]張海卿,張占軍.Delphi7編程技巧與實(shí)例精解[M].北京:國(guó)防工業(yè)出版社,2003.
[4]Marco Cantù.Delphi 2010 Handbook[EB/OL].(2010).http://www.marcocantu.com/dh2010
[5]百度百科.Delphi[EB/OL].(2012).http://baike.baidu.com/view/3297.htm.
[6]Marco Cocco.ComDrv32.pas[EB/OL].Italy:(1997).http://www.mdlive.com/d3k.
[7]王錚一,鄭文杰.基于基因表達(dá)式編程的變壓器故障診斷[J].陜西電力,2012(04):82-85.WANG Zheng-yi,ZHENG Wen-jie.GEP-based transformer fault diagnosis[J].Shaanxi Electric Power,2012(04):82-85.