RS232電子秤讀數
# TaskRunner 自定程式 - RS232電子秤讀數
# 1. 說明
- 任務運行器 TaskRunner 通過自定程式,以通訊埠通訊的方式讀取電子秤的讀數,並解析顯示。
- 示例使用的電子秤型號為耀華XK3190-A12+E,外觀如下圖所示。
- 地磅與秤頭按照上圖所示的內容進行連線,電子秤的外接通訊埠端與USB通訊埠轉接線的通訊埠端相連,另外一端與PC的USB埠連線,打開電子秤的開關,待連線確認后,打開Windows中的設備管理器,檢視埠號資訊,在範例中會使用到此埠號。
# 2. 設計程式
TaskRunner 的初始示例已包含 RS232電子秤讀數
自定程式。下面介紹建立自定程式的流程。
- 點選
自定程式
選項卡,在自定程式界面中點選新建
按鈕,打開新建程式界面。 - 在新建程式界面,填寫要設計的自定程式的基本資訊。如下圖所示。填寫完成點選
儲存
按鈕。
- 返回自定程式列表界面,選擇剛才建立的
JS012
自定程式,點選功能表欄中的設計
按鈕,打開程式設計器界面。 - 在程式設計器界面中輸入自定程式程式碼,程式碼示例如下。完成後,點選
儲存
按鈕。
{
//定義變數
var d1,d2,v1,v2,D,COM;
var c = new TComPort(nil);
COM = iif(UgParams.Values["device"] =="","COM3",UgParams.Values["device"]);
try
{
//定義通訊埠
TComPort(C).BaudRate = br9600;
TComPort(C).DeviceName = COM;
TComPort(C).DataBits = db8;
TComPort(C).StopBits = sb1;
TComPort(C).Parity = paNone;
TComPort(C).Open;
//判斷通訊埠是否被啟用
if (TComPort(C).Active)
{
//發送讀取數據指令
TComPort(C).WriteChar("R");
//延時0.1秒後讀取
sleep(100);
Text = copy(TComPort(C).ReadUtf8, 1, 12);
if (Length(Text) != 12)
Exit;
if (Text == "")
{
D = "0.00";
exit;
}
v1 = copy(Text, 4, 1);
v2 = copy(Text, 5, 7);
if (v1 == "+")
d1 = StrToFloat(v2)*0.0001
else if (v1 == "-")
d1 = -1 * StrToFloat(v2)*0.0001;
if (v2=="0000.00")
{
d1 = 0;
D = floattostr(d1);
}
if (d1 == 0) Exit;
D = floattostr(d1);
//Showmessage("電子稱讀數為:"+D+" KG");
//寫入到動態日誌
UGMM.AddLog("電子稱讀數為:"+D+" KG");
}
}
//釋放對像
finally
{
c.free;
}
}
1
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
42
43
44
45
46
47
48
49
50
51
52
53
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
42
43
44
45
46
47
48
49
50
51
52
53
- 如需要測試效果,可在程式設計器界面中點選
運行
按鈕進行測試。在測試前可先將 43 行取消註釋,確認第 5 行的通訊埠埠號是否一致。運行后可讀取到電子秤的讀數資訊。
程式中定義的參數說明如下:
名稱 | 說明 | 是否必填 | 預設值 |
---|---|---|---|
device | 設備使用的埠號 | 是 | COM3 |
# 3. 呼叫執行
設計完成的自定程式可使用以下方式來呼叫執行。
# 3.1. RestAPI
使用瀏覽器或RestAPI 客戶端,訪問以下地址,執行自定程式呼叫。請將 {ip}
修改爲運行 TaskRunner 主機的IP地址,{port}
修改爲 TaskRunner WebSocket 服務端監聽的地址。
http://{ip}:{port}?restapi=script&taskname=JS012&evaluate=D
1
如需要自定義參數,參照以下方式執行。其中將 {device}
替換為設備的埠編號。
http://{ip}:{port}?restapi=script&taskname=JS012&evaluate=D&device={device}
1
# 3.2. WebSocket
使用WebSocket客戶端,連線至 TaskRunner 中的 WebSocket 服務端。向 WebSocket 服務端發送以下文字實現自定程式的呼叫。
{"action":"script","taskname":"JS012"}
1
如需要自定義參數,參照以下方式執行。其中將 {device}
替換為設備的埠編號。
{"action":"script","taskname":"JS012","params":[{"name":"device","value":"{device}"}]}
1
注意
讀取到的數據不能直接通過 WebSocket 直接傳給客戶端,此方法僅適用於中間環節的數據處理過程。
# 3.3. MQTT
使用 MQTT 客戶端,連線至 TaskRunner 連線的 MQTT 伺服器。MQTT 客戶端向 TaskRunner 訂閱的主題發送以下文字實現自定程式的呼叫。
{"action":"script","taskname":"JS012"}
1
如需要自定義參數,參照以下方式執行。其中將 {device}
替換為設備的埠編號。
{"action":"script","taskname":"JS012","params":[{"name":"device","value":"{device}"}]}
1
注意
讀取到的數據不能直接通過 MQTT 直接傳給客戶端,此方法僅適用於中間環節的數據處理過程。