通訊埠電子秤
# FastWeb 通訊埠電子秤
# 1. 說明
本範例採用通訊埠通訊協議,控制駁接在設備上的電子秤。PC端發送讀取指令,電子秤返回稱重重量的資訊;PC端發送去皮與置零的指令,電子秤端執行相應的操作。電子秤是工業生產過程中經常使用到的設備,現如今大部分近期生產的工業用電子秤都已經預留了通訊埠通訊的介面。在本範例中使用的電子秤也具有該功能。
本範例使用到的電子秤為耀華XK3190-A12+E,其秤頭的外觀如下圖所示。
地磅與秤頭按照上圖所示的內容進行連線,電子秤的外接通訊埠端與USB通訊埠轉接線的通訊埠端相連,另外一端與PC的USB埠連線,打開電子秤的開關,待連線確認后,打開Windows中的設備管理器,檢視該通訊埠埠號與通訊埠設備名稱,在本範例中會使用到該埠號。
通過本範例學習,可以掌握通訊埠的基本通訊原理,並結合電子秤進行數據讀取的功能。
# 2. 設計明細
開啟FastWeb設計器,分別加入下插圖之控制元件。或者點選左上角的[匯入]
選擇模板檔案來打開對應模板。
1:TUgLabel元件,控制元件名稱為UgLabel01
。
2:TUgImage元件,控制元件名稱為 UgImage01
。
3:TUgPanel元件,控制元件名稱為 UgPanel01
。
4:TUgWebSerial元件,控制元件名稱為 UgWebSerial01
。
5:TUgFSButton元件,控制元件名稱為 UgFSButton01
。
6:TUgFSButton元件,控制元件名稱為 UgFSButton04
。
7:TUgFSButton元件,控制元件名稱為 UgFSButton02
。
8:TUgFSButton元件,控制元件名稱為 UgFSButton03
。
UgWebRunFrame屬性設定
Height
:設定頁面高度=640
。Width
:設定頁面寬度=480
。
1:UgLabel01屬性設定
Alignment
:設定對齊方式,設定為taCenter
。AutoSize
:設定控制元件尺寸是否跟隨文字自動變化,設定為False
。Font
:設定字型,點選右側的[√]
打開字型編輯視窗,按照下圖的樣式進行設定。
Text
:設定標籤顯示的文字=通訊埠電子秤
。
2:UgImage01屬性設定
Picture
:設定要顯示的圖片,點選右側的[√]
按鈕,打開影象編輯器,選擇編輯的影象。Stretch
:設定影象是否跟隨空間進行自適應拉伸,設定為True
。
3:UgPanel01屬性設定
Alignment
:設定對齊的方式,設定為taRightJustify
。Caption
:設定顯示的字幕=0.00
。Color
:設定控制元件的背景顏色,設定為clBlack
。Font
:設定字型,點選右側的[√]
打開字型設定對話方塊,設定字型,示例如下。
5:UgFSButton01屬性設定
Caption
:設定按鈕上顯示的文字,設定為打開通訊埠
。StyleButton
:設定按鈕顯示的樣式,設定為GoogleGreenRound
。
6:UgFSButton04屬性設定
Caption
:設定按鈕上顯示的文字,設定為讀數
。StyleButton
:設定按鈕顯示的樣式,設定為GoogleBlueRound
。
7:UgFSButton02屬性設定
Caption
:設定按鈕上顯示的文字,設定為去皮
。StyleButton
:設定按鈕顯示的樣式,設定為GoogleBlueRound
。
8:UgFSButton03屬性設定
Caption
:設定按鈕上顯示的文字,設定為清零
。StyleButton
:設定按鈕顯示的樣式,設定為GoogleBlue3Round
。
# 3. 程式設計
點選程式設計界面右下角的按鈕,切換至單元選擇界面,勾選需要使用的單元,該程式的程式不需要引用單元。
# 3.1. 程式初始設定
該程式程式初始設定。
//JScript
{
ugWebSerial01.Visible = False;
}
2
3
4
//PasScript
Begin
ugWebSerial01.Visible := False;
End.
2
3
4
// Make sure to add code blocks to your code group
# 3.2. 事件設定
- 5:UgFSButton01-OnClick事件
點選以啟用通訊埠選擇界面。
//JScript
function UgFSButton01OnClick(sender)
{
ugWebSerial01.Request();
}
2
3
4
5
//PasScript
procedure UgFSButton01OnClick(sender: tobject);
begin
ugWebSerial01.Request;
end;
2
3
4
5
// Make sure to add code blocks to your code group
- 6:UgFSButton04-OnClick事件
點選以開啟通訊埠讀數。
//JScript
function UgFSButton04OnClick(sender)
{
ugWebSerial01.Open(0);
}
2
3
4
5
//PasScript
procedure UgFSButton04OnClick(sender: tobject);
begin
ugWebSerial01.Open(0);
end;
2
3
4
5
// Make sure to add code blocks to your code group
- 4:UgWebSerial01-OnReceived事件
當通訊埠接收到數據時,獲取數據並顯示。
//JScript
function ugWebSerial01OnReceived(adata)
//連續模式下的讀數獲取方式
{
var text,v1,v2,d1;
if (copy(adata, 1, 2) == "wn")
{
//wn000.530kg
Text = adata;
//UgEdit01.Text =adata;
if (Text == "")
{
UgPanel01.Caption = "0.00";
exit;
}
v1 = copy(Text, 3, 1);
if (v1 == "0")
{
v2 = copy(Text, 3, 7);
d1 = StrToFloat(v2);
}
else if(v1 == "-"){
v2 = copy(Text, 4, 7);
d1 = StrToFloat(v2) * (-1);
}
UgPanel01.Caption = floattostr(d1);
if (Text=="wn000.000kg"){
d1 = 0;
UgPanel01.Caption = "0.00";
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//PasScript
procedure ugWebSerial01OnReceived(const adata: string);
//連續模式下的讀數獲取方式
var
Text: String;
v1, v2: string;
d1: Double;
begin
if copy(adata, 1, 2) = 'wn' Then
Begin
//wn000.530kg
Text := adata;
//UgEdit01.Text :=adata;
if (Text = '') then
begin
UgPanel01.Caption := '0.00';
exit;
end;
v1 := copy(Text, 3, 1);
if v1 = '0' then
begin
v2 := copy(Text, 3, 7);
d1 := StrToFloat(v2);
end
else if v1 = '-' then
begin
v2 := copy(Text, 4, 7);
d1 := StrToFloat(v2) * (-1);
end;
UgPanel01.Caption := floattostr(d1);
if Text='wn000.000kg' then
begin
d1 := 0;
UgPanel01.Caption := '0.00';
end;
end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// Make sure to add code blocks to your code group
7:UgFSButton02屬性設定
此項僅在電子秤處於連續讀數模式下有效,用於向電子秤發送去皮的指令。
//JScript
function UgFSButton02OnClick(sender)
//去皮(連續模式下此項無效)
{
ugWebSerial01.WriteLines("T");
}
2
3
4
5
6
//PasScript
procedure UgFSButton02OnClick(sender: tobject);
//去皮(連續模式下此項無效)
begin
ugWebSerial01.WriteLines('T');
end;
2
3
4
5
6
// Make sure to add code blocks to your code group
8:UgFSButton03屬性設定
此項僅在電子秤處於連續讀數模式下有效,用於向電子秤發送置零的指令。
//JScript
function UgFSButton03OnClick(sender)
//置零(連續模式下此項無效)
{
ugWebSerial01.WriteLines("Z");
}
2
3
4
5
6
//PasScript
procedure UgFSButton03OnClick(sender: tobject);
//置零(連續模式下此項無效)
begin
ugWebSerial01.WriteLines('Z');
end;
2
3
4
5
6
// Make sure to add code blocks to your code group
# 4. 運行結果
使用滑鼠在FastWeb功能表,點選[儲存至資料庫]
按鈕,將其儲存至資料庫,點選[除錯運行]
確認能夠正常打開。
如果是首次使用,點選 [打開通訊埠]
,選擇要打開的通訊埠后,顯示目前的讀數資訊。在首次配對后,運行時可點選 [讀數]
按鈕,可自動獲取讀數資訊。