RS232通訊埠印表機
# TaskRunner 自定程式 - RS232通訊埠印表機
# 1. 說明
- 任務運行器 TaskRunner 通過自定程式,以通訊埠通訊的方式向通訊埠印表機寫入列印指令,實現列印的功能。
- 市面上的一些帶有通訊埠的標籤印表機使用的是TSPL(TSC標籤印表機的通訊埠列印程式語言),通過通訊埠輸入的內容需按照TSPL的規範進行。
- 範例使用到的是佳博GP-3120TN標籤印表機,該印表機帶有一個通訊埠介面,可用於接收TSPL指令進行列印操作,其外觀如下圖所示。
- 在使用前,先將USB通訊埠轉接線的通訊埠端與標籤印表機的通訊埠端連線,再將USB端與PC進行連線。印表機通電並打開印表機的電源開關,待PC端確認設備連線后,在Windows的設備管理器中檢視連線的通訊埠埠號,此埠號會在接下來的範例中使用到。
# 2. 設計程式
TaskRunner 的初始示例已包含 RS232通訊埠印表機
自定程式。下面介紹建立自定程式的流程。
- 點選
自定程式
選項卡,在自定程式界面中點選新建
按鈕,打開新建程式界面。 - 在新建程式界面,填寫要設計的自定程式的基本資訊。如下圖所示。填寫完成點選
儲存
按鈕。
- 返回自定程式列表界面,選擇剛才建立的
JS014
自定程式,點選功能表欄中的設計
按鈕,打開程式設計器界面。 - 在程式設計器界面中輸入自定程式程式碼,程式碼示例如下。完成後,點選
儲存
按鈕。
{
//定義變數
var s = new TStringList();
var c = new TComPort(nil);
var p;
var COM;
COM = iif(UgParams.Values["device"] == "","COM3",UgParams.Values["device"]);
try
{
//外部傳入列印的數據
p = UGParams.Values["data"];
//列印資料
TStringList(s).Add("SIZE 40 mm,40 mm");
TStringList(s).Add("CLS");
TStringList(s).Add("TEXT 50,30,\"TSS24.BF2\",0,1,1,\"ITEMS \"");
TStringList(s).Add("TEXT 50,45,\"4\",0,1,1,\"-------------------------------\"");
TStringList(s).Add("TEXT 50,70,\"TSS24.BF2\",0,1,1,\"NOODLES 1 15 15 \"");
TStringList(s).Add("TEXT 50,100,\"TSS24.BF2\",0,1,1,\"POTATO 1 15 15 \"");
TStringList(s).Add("TEXT 50,130,\"TSS24.BF2\",0,1,1,\"KNIFE 1 15 15 \"");
TStringList(s).Add("TEXT 50,160,\"TSS24.BF2\",0,1,1,\"CHICKENS 1 15 15 \"");
TStringList(s).Add("TEXT 50,175,\"4\",0,1,1,\"------------------------------\"");
TStringList(s).Add("TEXT 50,200,\"TSS24.BF2\",0,1,1,\"SUM 4 60 60 \"");
TStringList(s).Add("QRCODE 50,230,L,4,A,0,\"isoface.net \"");
TStringList(s).Add("PRINT 1");
TStringList(s).Add("EOP");
//定義通訊埠
TComPort(C).BaudRate = br9600;
TComPort(C).DeviceName = COM;
TComPort(C).DataBits = db8;
TComPort(C).StopBits = sb1;
TComPort(C).Open;
//判斷通訊埠是否被啟用
if (TComPort(C).Active)
{
//如果外部傳入列印數據為空,則列印預設內容
if (p == "")
TComPort(C).WriteAnsiLine(s.Text)
else
TComPort(C).WriteAnsiLine(p);
}
}
//釋放對像
finally
{
c.free;
s.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
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
- 如需要測試效果,可在程式設計器界面中點選
運行
按鈕進行測試。確認第 7 行的通訊埠埠號是否一致。運行后可執行列印操作。
程式中定義的參數說明如下:
名稱 | 說明 | 是否必填 | 預設值 |
---|---|---|---|
device | 設備使用的埠號 | 是 | COM3 |
# 3. 呼叫執行
設計完成的自定程式可使用以下方式來呼叫執行。
# 3.1. RestAPI
使用瀏覽器或RestAPI 客戶端,訪問以下地址,執行自定程式呼叫。請將 {ip}
修改爲運行 TaskRunner 主機的IP地址,{port}
修改爲 TaskRunner WebSocket 服務端監聽的地址。
http://{ip}:{port}?restapi=script&taskname=JS014
1
如需要自定義參數,參照以下方式執行。其中將 {device}
替換為設備的埠編號。
http://{ip}:{port}?restapi=script&taskname=JS014&device={device}
1
# 3.2. WebSocket
使用WebSocket客戶端,連線至 TaskRunner 中的 WebSocket 服務端。向 WebSocket 服務端發送以下文字實現自定程式的呼叫。
{"action":"script","taskname":"JS014"}
1
如需要自定義參數,參照以下方式執行。其中將 {device}
替換為設備的埠編號。
{"action":"script","taskname":"JS014","params":[{"name":"device","value":"{device}"}]}
1
# 3.3. MQTT
使用 MQTT 客戶端,連線至 TaskRunner 連線的 MQTT 伺服器。MQTT 客戶端向 TaskRunner 訂閱的主題發送以下文字實現自定程式的呼叫。
{"action":"script","taskname":"JS014"}
1
如需要自定義參數,參照以下方式執行。其中將 {device}
替換為設備的埠編號。
{"action":"script","taskname":"JS014","params":[{"name":"device","value":"{device}"}]}
1