摘要:本文主要介紹了DELPHI串行通信,以及怎樣使用Delphi語言編程實現溫度的實時采集以及處理顯示。
引言
溫度是一個十分重要的物理量,對它的測量與控制有著十分重要的意義,在現代工業生產中溫度也是常見的工藝參數之一,任何物理變化和化學反應過程都與溫度密切相關,隨著時代的不斷發展,現代工農業技術的不斷進步,人們對生活環境要求的提高,使得對于溫度的測量和控制的要求越來越高,迫切需要檢測與
控制溫度。
1、系統總體介紹
本系統主要包括三個模塊:下位機硬件設計部分、下位機軟件設計部分和上位機軟件設計部分。本文涉及的主要是上位機軟件程序設計部分,使用語言Delphi編制上位機監控程序,并通過RS-232串行通信口與下位機系統實現實時通信。同時為了操作方便,系統還附加了遙控器部分。其中系統的原理框圖如圖1所示:
圖1系統的原理框圖
2、主要控件介紹:
2.1TComm控件:
用Delphi實現串口通訊,常用的幾種方法為:使用控件如TComm,使用API函數或者在Delphi中調用其它串口通訊程序。下面詳細介紹TComm的使用。
a)TComm的主要屬性
Name:對象的名稱,對象放置完成后,是*個必須要設置的屬性。
CommPort:通信端口的選擇。
PortOpen:打開或關閉通信端口。
BaudRate:傳輸速度的選擇。
b)TComm的主要事件
ONReceiveData:當接收到數據時觸發。
OnReceiveError:當接收數據錯誤時觸發。
OnModemSTateChange:當引腳的電壓發生變化時觸發。
d)TComm的主要方法
OutputString:輸出文字數據到串行端口。
OutputByte:輸出字節數據到串行端口。
ReadInputByte:以字節方式讀取緩沖區內的數據。
2.2TChart組件:
TChart是Delphi里面一個標準的圖形顯示控件。它可以靜態設計(atdesigntime)也可以動態生成。TChart的實時繪制對機器性能要求比較高,因此在編程的時候要注意:
(1)使用2d圖形;⑵Chart盡可能包含少的點。
a)TChart組件的主要事件
OnPageChange:當改變頁的時候,此事件發生。
OnMouseDown:當鼠標按下時產生。
OnAfterDraw事件:該事件是在繪制所有的Series時發生的。
OnClick事件:該事件是在用戶單擊Series點時發生的。
OnZoom事件:該事件是在圖表放大時觸發。
b)TChart組件的主要方法
ActiveSeriesLegend函數:該函數用于返回當前活動的Series,如果所有的Series都是活動的,需要為該函數確定要返回Series的序號。
AddSeries過程:該過程用于添加一個Series對象。
3、系統各具體模塊設計
3.1系統主界面設計
用戶登錄到主界面之后,在主界面中,可以實現通過面板或者菜單來設置溫度的上下限,系統實時顯示測試時間,同時在面板上通過狀態燈顯示當前系統的工作狀態。
圖2系統主界面
同時在主界面的菜單中,可以進行通信端口的選擇、通信波特率的選擇、修改密碼、幫助以及退出系統。
3.2修改密碼模塊設計
為了系統的安全,系統增加了修改密碼模塊。如果要修改密碼,首先要輸入原來的密碼,而后輸入新密碼,zui后重新輸入新密碼并確定,如果輸入的兩次新密碼相同,則修改密碼成功,如果輸入的兩次新密碼不同,則修改密碼失敗,則重新輸入新密碼。
3.3通信模塊的設計
本次設計使用RS232轉RS485轉換器實現遠程監控的,采用的是半雙工的數據傳輸方式和異步通信方式,串行口工作于模式1。
傳輸數據的格式如下:首先上位機發送FF給下位機,下位機檢測到時,將溫度傳送給上位機。向單片機發送上限溫度命令,格式:FE,XX;向單片機發送下限溫度命令,格式:FD,XX;設置監控,格式:FC;取消監控,格式:FB;向單片機發送點擊上限按鈕,格式:FA;向單片機發送點擊下限按鈕,格式:F9。
)接收數據
上位機采用事件驅動方式接收數據。當下位機傳送一幀數據上來輸入緩存時,將觸發TCOMM組件的OnReceiveData事件,對數據進行接收。然后對接收的數據進行判斷,分別轉相應的處理程序。下面是數據接收的程序段:
begin
try
count:=form1.Comm1.ReadInputByte(pt);
if((count+1)mod4<>0)then
begin
form1.Comm1.DataCount:=0;
exit;
end;
fori:=0to3do
begin
re[i]:=pt^;
inc(pt);
end;
…//數據處理部分
b)發送數據
發送數據采用異步I/O方式,即將要發送的數據用WriteCommData方法發送到寫線程,然后立即返回。該方法所有的操作均在后臺進行,如果發送成功,返回True,發送失敗,返回False。下面是發送數據的主要程序段:
form1.Comm1.PortOpen:=true;
form1.Comm1.OutputByte(send);
timedelay(300);
3.4系統初始化模塊設計
本系統初始化部分設計程序如下:
begin
Position:=poscreencenter;
form1.Comm1.DataCount:=0;
form1.Comm1.RThreshold:=1;
form1.Comm1.PortOpen:=true;//串行口初始化
form1.sys_ini();//系統參數初始化
…
3.5參數設置模塊設計
為了系統的操作方便,在菜單中加入了參數的設置,可以選擇串行口,選擇通信的波特率等等。
4、結束語
系統經過一個多月的觀察測試,該軟件系統運行穩定,使用操作方便,測量精度高。