愛招飛幫助手冊 愛招飛幫助手冊
  • FastERP-1
  • Smart
  • PinToo
  • FastWeb
  • FastERP-2 企業管理系統 (opens new window)
  • 印染業ERP (opens new window)
  • 工廠終端機 (opens new window)
  • TARS
  • MARS
  • TaskRunner
  • Flying
  • FastDesk
  • HiDesk
  • HiNAT
  • FastBPM
  • 設備故障診斷 (opens new window)
  • 設備最佳運轉效益 (opens new window)
  • 企業智能助手SmeGPT (opens new window)
  • 燈號管理 (opens new window)
  • 戰情室 (opens new window)
  • 能源管理 (opens new window)
  • 人車定位 (opens new window)
  • 戰情指揮系統 (opens new window)
  • FastERP-1
  • FastWeb
  • Smart
  • PinToo
  • Flying
  • TARS
  • 通用功能

    • Report
    • Script
    • Echarts
    • Chart
    • DB Install
  • FastERP-1
  • Smart
  • PinToo
  • FastWeb
  • FastERP-2 企業管理系統 (opens new window)
  • 印染業ERP (opens new window)
  • 工廠終端機 (opens new window)
  • TARS
  • MARS
  • TaskRunner
  • Flying
  • FastDesk
  • HiDesk
  • HiNAT
  • FastBPM
  • 設備故障診斷 (opens new window)
  • 設備最佳運轉效益 (opens new window)
  • 企業智能助手SmeGPT (opens new window)
  • 燈號管理 (opens new window)
  • 戰情室 (opens new window)
  • 能源管理 (opens new window)
  • 人車定位 (opens new window)
  • 戰情指揮系統 (opens new window)
  • FastERP-1
  • FastWeb
  • Smart
  • PinToo
  • Flying
  • TARS
  • 通用功能

    • Report
    • Script
    • Echarts
    • Chart
    • DB Install
  • TaskRunner幫助主頁
  • 學習手冊

    • 安裝配置
    • 快速上手
    • 界面介紹
    • 功能介紹
    • 預設資料
    • RestAPI說明
    • WebSocket說明
    • MQTT說明
    • Python說明
    • 自定程式
    • 公共單元
    • 工作流
    • 運行衛士
    • 自定報表
    • 自動化作業
    • 控制元件使用
      • 1. 通訊埠
      • 2. ModbusTCP
      • 3. RestAPI
      • 4. WebSocket
      • 5. MQTT
      • 6. 數據連線
        • 6.1. 引用資料庫設定
        • 6.2. 連線TARS
        • 6.3. TFastDataSet
      • 7. 郵件
      • 8. 遠端列印
      • 9. Python使用
    • 函式程式

  • 開發手冊

目录

控制元件使用

# TaskRunner 控制元件使用

  TaskRunner對物聯網設備控制,監聽等需要依賴於物聯網控制元件來實現,下面將會列出TaskRunner內建的物聯網控制元件,對物聯網控制元件的基本使用方法進行說明。

# 1. 通訊埠

  TaskRunner通訊埠控制元件的使用示例如下:

//連線電子秤的示例
{
   //定義變數,建立控制元件
   var c = new TComPort(nil);
   try
   {     
     //定義通訊埠基本資訊
     //傳輸速率
     TComPort(C).BaudRate = br9600;
     //埠號
     TComPort(C).DeviceName = "COM3";
     //數據位數
     TComPort(C).DataBits = db8;
     //停止位數
     TComPort(C).StopBits = sb1;
     //打開通訊埠
     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 == "0")
         d1 = StrToFloat(v2)*0.0011
       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
54
55
56
57
58
59
60
61
62
//連線通訊埠印表機的示例
{
   //定義變數
   var s = new TStringList();
   var c = new TComPort(nil);
   var p;
   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,\"商品清單               \"");
     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 = "COM3";
     //數據位數
     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
49
50
51
52
53
54

# 2. ModbusTCP

  ModbusTCP控制元件的使用示例如下:

{
  //定義變數
  var v;
  var m = new TModbusTCPClient(nil);
  
  //設定參數
  //Modbus從機的IP地址
  TModbusTCPClient(m).Host = "127.0.0.1";
  //Modbus從機的埠號
  TModbusTCPClient(m).Port = 502;
  TModbusTCPClient(m).UnitID = 255;
  
  //讀取保持暫存器  
  if (TModbusTCPClient(m).ReadHoldingRegister(1,v))
  {
    if (v == 0)
      //寫暫存器
      TModbusTCPClient(m).WriteRegister(1,1)
    else
      TModbusTCPClient(m).WriteRegister(1,0); 
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

  關於ModbusTCP的可用方法請參考ModbusTCPClient。

# 3. RestAPI

  TaskRunner中的RestAPI控制元件作為客戶端使用,可向其它服務發送請求。使用的示例如下:

//回撥事件,接收返回的資訊
function OnRestAPIResultData(Sender,AResult)
{
  //Showmessage("GUID:"+AResult); 
  UGMM.AddLog("GUID:" + AResult);
}
//主程式
{
   var rest = new TRestAPI(nil);
   try{
     //邦定事件
     TRestAPI(rest).OnResultData = &OnRestAPIResultData;
     //屬性賦值
     //API的描述資訊
     TRestAPI(rest).Caption = "獲取GUID";
     //設定RestAPI伺服器,格式如下,埠號後面不要加 '/'
     TRestAPI(rest).Server  = "https://web.diylogi.com";
     //如果基礎地址後有其它的相對地址,可加至此。
     TRestAPI(rest).Url = "";
     //期望返回的內容型別
     TRestAPI(rest).ContentType = "text/html";
     //請求方法 rmPOST、rmGET、rmPUT、rmDELETE
     TRestAPI(rest).Method = rmGET;
     //URL參數定義,如有多個參數則分成多行,如下所示。
     TRestAPI(rest).Params.Add("restapi=script");
     TRestAPI(rest).Params.Add("apiname=guid");
     //呼叫
     TRestAPI(rest).Send;
   }
   finally
   {
     //釋放
     rest.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

# 4. WebSocket

  WebSocket部分的資訊詳見WebSocket說明。

# 5. MQTT

  MQTT部分的資訊詳見MQTT說明。

# 6. 數據連線

數據連線可使用以下模式來實現。

# 6.1. 引用資料庫設定

  var D,V,O,DB;
  D = new TFDQuery(nil);
  //使用資料庫設定的連線
  DB = UGMM.GetDBConnection("FastERP");
  D.Connection = DB;
  //使用預設SQL
  D.SQL.Text = UGMM.GetSQL("SQL001");
  D.Open;
  //數據集轉換
  V = TFDQuery(D).ToJSONArray;
  O = new TJSONObject();
  O.AddPair("status","ok");
  O.AddPair("message","success");
  O.AddPair("records",TJSONNumber.Create(D.RecordCount));
  O.AddPair("data",V);
  return(O.ToString);
  D.Free;
  V.Free;
  O.Free;
  DB.Free;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 6.2. 連線TARS

  以下部分為TARS資料庫連線的方式:

  var D,S;
  try
  {
    //建立資料庫連線
    D= new TRFConnection(nil);
    D.ConnectionDefName = "FastERP";
    D.ServerAddr = "127.0.0.1";
    D.ServerPort = "8809";
    D.LoginOptions.UserName = "admin";
    D.LoginOptions.Password = "admin";
    D.LoginOptions.MD5Salt = "";
    D.ForceEncryption = true;
    D.SecureKey = "123456";
    //建立數據集
    S= new TRFDataSet(nil);
    TRFDataSet(S).Connection = D;
    TRFDataSet(S).SQL.Text = "SELECT * FROM Basic_WHS";
    TRFDataSet(S).Open;
    //輸出數據集JSON
    Showmessage(TRFDataSet(S).ToJSONArrayString);
  }
  finally{      
    //釋放對像
    FreeAndNil(D);
    FreeAndNil(S);
  } 
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

# 6.3. TFastDataSet

  TFastDataSet是本機數據集控制元件,可用於數據集快速處理。使用此控制元件前,需在資料庫設定界面中設定資料庫連線。

  var D,V,O;
  D = new TFastDataSet(nil);
  TFastDataSet(d).ConnectionDefName = "FastERP";
  TFastDataSet(D).CommandText = "SELECT * FROM Basic_WHS";
  TFastDataSet(D).Open;
  //數據集轉換
  V = TFastDataSet(D).ToJSONArray;
  O = new TJSONObject();
  O.AddPair("status","ok");
  O.AddPair("message","success");
  O.AddPair("records",TJSONNumber.Create(D.RecordCount));
  O.AddPair("data",V);
  return(O.ToString);
  D.Free;
  V.Free;
  O.Free;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 7. 郵件

  郵件發送可使用系統預設設定中提供的地址,也可使用 TEmailMsg 元件來發送郵件,使用的示例如下:

{
  var Email;
  Email = new TEmailMsg(nil);
  //郵箱伺服器地址
  TEmailMsg(Email).Host = "smtp.example.com";
  //郵箱埠
  TEmailMsg(Email).Port = 25;
  //發件人(郵箱)
  TEmailMsg(Email).Username = "sampleuser@example.com";
  //郵箱密碼
  TEmailMsg(Email).Password = "password";
  //收件人郵箱地址
  TEmailMsg(Email).Address = "receiveuser@example.com";
  //主題
  TEmailMsg(Email).Subject = "TaskRunner Email Test";
  //正文
  TEmailMsg(Email).Body = "<p><font color = \"red\">hello</font></p>";
  //if Use HTML 
  TEmailMsg(Email).BodyHtml = True;
  //發送郵件
  if(TEmailMsg(Email).SendEmail){
     UGMM.AddLog("Email Send Success");
  }
  Email.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

# 8. 遠端列印

  遠端列印功能由Flying提供,TaskRunner中提供了客戶端控制元件TFlying,方便使用者在自定程式中使用。

  在使用前,請先參考Flying 報表設計說明設計定義數據源格式,以及需要使用的報表格式。

  TaskRunner中使用的示例如下:

//配合FastERP2中的遠端列印自定按鈕實現遠端列印的功能
{
  var F,DA,DB,D;
  //建立TFlying控制元件
  F = new TFlying(nil);
  DA = new TFDQuery(nil);
  DB = new TFDQuery(nil);
  D = UGMM.GetDBConnection("fasterp2");
  try{
    DA.Connection = D;
    DB.Connection = D;
    //此處的SQL查詢,查詢的結果中包含的欄位與報表設計環節定義的數據源的欄位一致
    DA.SQL.Text = "select * from SdShipOrder where shipno = :shipno";
    DB.SQL.Text = "select * from SdShipPart where shipno = :shipno";
    //從自定程式的URL參數中獲取參數值,並賦值
    DA.ParamByName("shipno").AsString = UGParams.Values["shipno"];
    DB.ParamByName("shipno").AsString = UGParams.Values["shipno"];
    DA.Open;
    DB.Open;
    
    if((DA.RecordCount > 0) && (DB.RecordCount > 0)){
      //使用HTTP列印模式
      TFlying(F).PrintOptions.PrintType = HTTP;
      //設定為報表設計環節指定的報表檔名稱
      TFlying(F).PrintOptions.ReportName = "fasterp2_shiporder.fr3";
      //HTTP列印服務的主機地址
      TFlying(F).HTTPOptions.Host = "127.0.0.1";
      //HTTP列印服務的埠號
      TFlying(F).HTTPOptions.Port = 8801;
      
      //要按照順序,與報表設計環節定義的數據源順序保持一致
      TFlying(F).PrintOptions.Data.Add("\"AData\":"+ DA.ToJSONArrayString);
      TFlying(F).PrintOptions.Data.Add("\"BData\":"+ DB.ToJSONArrayString);
      //執行列印
      TFlying(F).Print;
    }
  }
  finally{
    //執行完成,釋放記憶體
    DA.Free;
    DB.Free;
    D.Free;
    F.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

# 9. Python使用

  TaskRunner中提供了Python運用的元件,可以通過這些元件使用Python的相關功能。請參考Python說明。

自動化作業
系統函式

← 自動化作業 系統函式→

Copyright © 2021-2025 愛招飛IsoFace | ALL Rights Reserved
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式