爱招飞帮助手册 爱招飞帮助手册
首页
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 系统工具
    • 系统管理
    • 数据库工具
    • 专用模板
    • 外部功能
    • 开发流程
    • 函数代码
  • 开发手册
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 开发手册
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 开发手册
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • 报表设计
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • RestAPI
    • WebSocket
  • 学习手册

    • 安装配置
    • 快速上手
    • 程序架构
    • 界面介绍
    • 功能介绍
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • 预设资料
    • RestAPI说明
    • WebSocket说明
    • MQTT说明
    • Python说明
    • 自定程序
    • 运行卫士
    • 自动化作业
    • 函数程序
    • 控件使用
  • 开发手册
  • FastERP
  • FastWeb
  • Smart
  • PinToo
  • Flying
  • TARS
  • 通用功能

    • Report
    • Script
    • Echarts
    • Chart
    • DB Install
    • HiDesk
    • HiNAT
    • FastBPM
    • ReportBuilder
首页
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 系统工具
    • 系统管理
    • 数据库工具
    • 专用模板
    • 外部功能
    • 开发流程
    • 函数代码
  • 开发手册
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 开发手册
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 开发手册
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • 报表设计
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • RestAPI
    • WebSocket
  • 学习手册

    • 安装配置
    • 快速上手
    • 程序架构
    • 界面介绍
    • 功能介绍
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • 预设资料
    • RestAPI说明
    • WebSocket说明
    • MQTT说明
    • Python说明
    • 自定程序
    • 运行卫士
    • 自动化作业
    • 函数程序
    • 控件使用
  • 开发手册
  • FastERP
  • FastWeb
  • Smart
  • PinToo
  • Flying
  • TARS
  • 通用功能

    • Report
    • Script
    • Echarts
    • Chart
    • DB Install
    • HiDesk
    • HiNAT
    • FastBPM
    • ReportBuilder
  • 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,\"www.isoface.cn                  \"");
     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://fastweb.isoface.cn:1443";
     //如果基础地址后有其它的相对地址,可加至此。
     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
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式