基于Delphi的第三方串行通訊組件實(shí)現(xiàn)TH2817數(shù)字電橋儀器擴(kuò)展應(yīng)用
摘要:串行通訊是測(cè)試儀器必備的工業(yè)口,為了能更好的利用測(cè)試儀器的擴(kuò)展功能,通過使用Delphi的第三方串行通訊組件,來實(shí)現(xiàn)PC機(jī)軟件與測(cè)試儀器的串行通訊,進(jìn)而對(duì)測(cè)試儀器的擴(kuò)展功能得以利用,使測(cè)試人員通過簡(jiǎn)單的界面操作和數(shù)據(jù)設(shè)置就能對(duì)測(cè)試儀器進(jìn)行操作,免去了解儀器復(fù)雜操作的環(huán)節(jié),同時(shí)也能實(shí)現(xiàn)對(duì)相關(guān)測(cè)試數(shù)據(jù)的電子處理和保存。
關(guān)鍵詞:Delphi;串行通訊;數(shù)字電橋儀器;CommDriver組件
在測(cè)試儀器不斷日新月異的當(dāng)今,工業(yè)接口(串行口)卻是測(cè)試儀器必備的,利用工業(yè)接口快速開發(fā)出適合自己的PC上位機(jī)軟件,對(duì)于開發(fā)測(cè)試儀器的擴(kuò)展功能、實(shí)現(xiàn)儀器的智能控制和數(shù)據(jù)電子化有明顯的實(shí)際應(yīng)用意義。
1 數(shù)字電橋儀器與軟件開發(fā)工具
1.1 數(shù)字電橋簡(jiǎn)介
TH2817數(shù)字電橋儀器介紹是一種高精度、寬測(cè)試范圍的阻抗測(cè)量?jī)x器,可通過RS232C接口為儀器與計(jì)算機(jī)聯(lián)網(wǎng)通訊。
1.2 開發(fā)工具介紹
DelDhi是Windows平臺(tái)下著名的快速應(yīng)用程序開發(fā)工具(Rapid Application Development,簡(jiǎn)稱RAD)。它的前身,即是DOS時(shí)代盛行一時(shí)的“Borland Turbo Pascal”,最早的版本由美國Borlancl(寶蘭)公司于1995年開發(fā)。主創(chuàng)者為AndersHejlsberg。經(jīng)過數(shù)年的發(fā)展,此產(chǎn)品也轉(zhuǎn)移至Embarcadero公司旗下。Delphi是一個(gè)集成開發(fā)環(huán)境(IDE),使用的核心是由傳統(tǒng)Pascal語言發(fā)展而來的Object Pascal,以圖形用戶界面為開發(fā)環(huán)境,透過IDE、VCL工具與編譯器,配合連結(jié)數(shù)據(jù)庫的功能,構(gòu)成一個(gè)以面向?qū)ο蟪绦蛟O(shè)計(jì)為中心的應(yīng)用程序開發(fā)工具。對(duì)于工業(yè)口的開發(fā)可以利用其封裝好的控制組件來完成,不僅節(jié)省了開發(fā)時(shí)間,也能很好的得到支持服務(wù),而其成熟的IDE對(duì)于界面化的開發(fā)也能起到加速作用。
2 軟件開發(fā)
2.1 軟件實(shí)現(xiàn)功能及數(shù)字電橋儀器串行數(shù)據(jù)格式
為了簡(jiǎn)化復(fù)雜的儀器操作,實(shí)現(xiàn)儀器測(cè)試信息的集中自動(dòng)化管理,利用PC上位機(jī)通用、高速的軟件編程能力來實(shí)現(xiàn)。通過RS232C可實(shí)現(xiàn)對(duì)儀器的測(cè)試設(shè)置,顯示設(shè)置,打印設(shè)置,并能接收來自儀器的測(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è)置命令。
2.2 PC軟件設(shè)計(jì)
PC軟件設(shè)計(jì)的初衷就是為了簡(jiǎn)單快捷的通過PC機(jī)實(shí)現(xiàn)對(duì)數(shù)字電橋儀器的控制,并能實(shí)現(xiàn)其結(jié)果的電子存檔?;诖薖C需要實(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硬件訪問機(jī)制
Windows操作系統(tǒng)的機(jī)制禁止應(yīng)用程序直接訪問硬件,但它提供了豐富的API函數(shù),可以支持大多數(shù)的硬件和協(xié)議,并隱藏了許多底層的處理,為編程人員編制程序提供了方便,免除了編程人員對(duì)有關(guān)硬件的調(diào)試麻煩。但是利用API進(jìn)行串口通訊編程較為復(fù)雜,需要掌握大量的通訊知識(shí),相比較下利用組件進(jìn)行程序開發(fā)則較為方便。而大多數(shù)開發(fā)語言的編程環(huán)境均支持組件,Delphi亦是如此。
Delphi的串口通訊需要利用第三方開發(fā)的組件,使用免費(fèi)的組件CommDriver,其包含了串口通訊需求的基本操作。
2.2.2 開發(fā)步驟
1)需要利用組件對(duì)串行口的基本參數(shù)進(jìn)行設(shè)置,這些參數(shù)的設(shè)置均可以通過組件的屬性進(jìn)行設(shè)置:ComPort為串口號(hào)設(shè)置,此組件僅支持4個(gè)串口號(hào)的設(shè)置,而這在一般的應(yīng)用中足夠了,這一屬性設(shè)置可以通過選擇列表進(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è)置等。由于開發(fā)的針對(duì)性以及儀器本身設(shè)置的固有屬性,所以這些基本參數(shù)無需作為軟件使用用戶的設(shè)置項(xiàng)出現(xiàn),可直接設(shè)定好固化在軟件中。
2)采用如下步驟進(jìn)行串口數(shù)據(jù)的接收和發(fā)送:
①利用組件的Connect事件打開串口通訊;
②進(jìn)行數(shù)據(jù)的接收和發(fā)送,CommDriver接收數(shù)據(jù)是通過ReceiveData事件執(zhí)行的,當(dāng)接收到數(shù)據(jù)后需要將其進(jìn)行緩存,通過對(duì)緩存的數(shù)據(jù)進(jìn)行分析處理來實(shí)現(xiàn)對(duì)儀器的數(shù)據(jù)解析,發(fā)送數(shù)據(jù)通過SendData事件來完成;
③使用組件的DisConnect事件來關(guān)閉串口。
然后,再根據(jù)用戶的操作習(xí)慣進(jìn)行相關(guān)的界面的編程即可實(shí)現(xiàn)對(duì)測(cè)試儀器的訪問。
2.3 程序主要源代碼
接收串行數(shù)據(jù)源碼:利用串行組件的接收事件(Receive Data)來處理串行口的數(shù)據(jù)接收。
串行口接收數(shù)據(jù)處理源碼(部分):
為了保證儀器串口發(fā)送的數(shù)據(jù)能及時(shí)得到PC的響應(yīng)處理,將通過組件接收的存放在緩沖區(qū)中的數(shù)據(jù),按照測(cè)試儀器的發(fā)送時(shí)間要求,將其在定時(shí)器事件中進(jìn)行處理。
儀器參數(shù)設(shè)置源碼(部分):這部分代碼是向儀器寫控制參數(shù),可以通過菜單或者按鈕來實(shí)現(xiàn)。
2.4 軟件實(shí)現(xiàn)后的界面
3 結(jié)束語
利用第3方控件進(jìn)行串行通訊的PC軟件開發(fā),不僅縮短了編程人員的開發(fā)時(shí)間,而且也利于軟件的調(diào)試、維護(hù),開發(fā)者僅需了解基本的通訊知識(shí),通過簡(jiǎn)單的代碼編程設(shè)囂即可完成相關(guān)功能。同時(shí),用戶通過軟件操作可以省去復(fù)雜的儀器設(shè)置操作,也為測(cè)試儀器的有效利用以及測(cè)量數(shù)據(jù)的電子化提供了便利。