通讯控件
# FastWeb通讯控件
- 适用平台: WEB(桌面)
该组中的控件为通过工业通讯协定的设定,连接物联网设备采集资料的程序,进行数据的连接采集功能。
# 1. TUgNetHttpClient
此组件为Http服务请求使用的客户端组件。是作为TUgRestApi的基础组件存在,如需要使用完整的RestAPI请求功能请查阅 TUgRestApi,以下属性仅作简单说明。
# 1.1. 属性
# 1.1.1. Accept
property Accept: string;
用于设置客户端允许接收的内容类型,用于与服务端进行通信连接。
# 1.1.2. AcceptCharSet
property AcceptCharSet: string;
用于设置客户端允许接收的字符集类型。
# 1.1.3. AcceptEncoding
property AcceptEncoding: string;
用于设置客户端允许接收的内容编码压缩类型。
# 1.1.4. AcceptLanguage
property AcceptLanguage: string;
设置客户端优先响应的语言类型。
# 1.1.5. AllowCookies
property AllowCookies: Boolean;
设置客户端是否接受来自服务端的cookie信息。
# 1.1.6. Asynchronous
property Asynchronous: Boolean;
设置请求的方式是异步(True)还是同步(False)。
# 1.1.7. ConnectionTimeOut
property ConnectionTimeout: Integer;
建立 HTTP 客户端连接之前的超时数值,单位为ms(毫秒)。
# 1.1.8. ContentType
property ContentType: string;
设置请求的实体主体的媒体类型。
# 1.1.9. HandleRedirects
property HandleRedirects: Boolean;
如果此项设置为 True
,则客户端组件会自动处理重定向。否则不处理重定向信息。
# 1.1.10. MaxRedirects
property MaxRedirects: Integer;
设置客户端允许的最大重定向的次数。
# 1.1.11. RedirectsWithGET
property RedirectsWithGET: THTTPRedirectsWithGET;
设置允许的重定向类型。
# 1.1.12. ResponseTimeOut
property ResponseTimeout: Integer;
表示给定 HTTP 客户端请求中部分 HTTP 响应之间的最大超时,单位为毫秒。
# 1.1.13. SecureProtocols
property SecureProtocols: THTTPSecureProtocols;
设置客户端的连接安全协议类型。
# 1.1.14. UserAgent
property UserAgent: string;
设置用户代理标识,用于标识客户端的类型。
# 1.2. 事件
名称 | 触发条件 |
---|---|
OnAuthEvent | 当需要向代理验证用户名时触发事件 |
OnNeedClientCertificate | 需要客户端证书时触发事件 |
OnReceiveData | 在您的 HTTP 客户端接收请求的响应数据时会触发一次或者多次,它可以用于响应下载的进度 |
OnRequestCompleted | 在请求完成时触发事件 |
OnRequestError | 在请求发生错误时触发事件 |
OnValidateServerCertificate | 在检查服务器证书的有效性时触发事件 |
# 2. TUgNetHttpRequest
此组件为Http服务请求的模板组件。是作为TUgRestApi的基础组件存在,如需要使用完整的RestAPI请求功能请查阅 TUgRestApi,以下属性仅作简单说明。
# 2.1. 属性
# 2.1.1. Accept
property Accept: string;
用于设置客户端允许接收的内容类型,用于与服务端进行通信连接。
# 2.1.2. AcceptCharSet
property AcceptCharSet: string;
用于设置客户端允许接收的字符集类型。
# 2.1.3. AcceptEncoding
property AcceptEncoding: string;
用于设置客户端允许接收的内容编码压缩类型。
# 2.1.4. AcceptLanguage
property AcceptLanguage: string;
设置客户端优先响应的语言类型。
# 2.1.5. Asynchronous
property Asynchronous: Boolean;
设置请求的方式是异步(True)还是同步(False)。
# 2.1.6. Client
property Client: TUgNetHTTPClient
指定请求绑定的HTTP客户端组件。
# 2.1.7. ConnectionTimeOut
property ConnectionTimeout: Integer;
建立 HTTP 客户端连接之前的超时数值,单位为ms(毫秒)。
# 2.1.8. MethodString
property MethodString: string;
设置从请求中访问方法字符串的属性。
# 2.1.9. ResponseTimeOut
property ResponseTimeout: Integer;
表示给定 HTTP 客户端请求中部分 HTTP 响应之间的最大超时,单位为毫秒。
# 2.1.10. URL
property URL: string;
设置允许的URL链接。
# 2.2. 事件
名称 | 触发条件 |
---|---|
OnNeedClientCertificate | 需要客户端证书时触发事件 |
OnReceiveData | 在您的 HTTP 客户端接收请求的响应数据时会触发一次或者多次,它可以用于响应下载的进度 |
OnRequestCompleted | 在请求完成时触发事件 |
OnRequestError | 在请求发生错误时触发事件 |
OnValidateServerCertificate | 在检查服务器证书的有效性时触发事件 |
# 3. TUgIdHttp
该组件为Http服务的提供组件,用于设置并接收http请求,可作为HTTP请求的客户端使用。
# 3.1. 方法
# 3.1.1. Get
function Get(AURL: string): string;
设置GET的请求。返回响应的内容。
# 3.1.2. Post
function Post(AURL: string; ASource: TStringList): string;
通过Post方式发送请求。
# 3.1.3. Post1
function Post1(AURL: string; const ASourceFile: String): string;
通过Post方式,将来自文件的数据作为请求体发送到指定的URL。
//JScript
var Response;
try{
// 发送POST请求,并将来自文件的数据发送到指定的URL
Response = UgIdHTTP01.Post1("http://example.com/api", "path_to_folder\\path_to_file");
// 处理响应数据
}
except{
// 处理异常
}
2
3
4
5
6
7
8
9
10
//PasScript
var
Response: string;
begin
try
// 发送POST请求,并将来自文件的数据发送到指定的URL
Response := UgIdHTTP01.Post1('http://example.com/api', 'path_to_folder\path_to_file');
// 处理响应数据
except
on E: Exception do
begin
// 处理异常
end;
end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Make sure to add code blocks to your code group
# 3.1.4. Post2
function Post2(AURL: string; ASource: TStrings): string;
通过Post方式,将TStrings对象中的数据作为表单数据发送到指定的URL。当使用这种方式发送POST请求时,数据会以application/x-www-form-urlencoded
格式发送到服务器,这是HTTP POST请求的一种常见方式。
//JScript
var Params,Response;
Params = new TStringList();
try{
// 添加表单参数到TStrings对象中
Params.Add("param1=value1");
Params.Add("param2=value2");
// 发送POST请求,并将来自文件的数据发送到指定的URL
Response = UgIdHTTP01.Post2("http://example.com/api", Params);
// 处理服务器响应
// ...
}
finally{
Params.Free;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//PasScript
var
Params: TStringList;
Response: string;
begin
Params := TStringList.Create;
try
// 添加表单参数到TStrings对象中
Params.Add('param1=value1');
Params.Add('param2=value2');
// 发送POST请求,并将TStrings对象中的数据作为表单数据发送到指定的URL
Response := UgIdHTTP01.Post2('http://example.com/api', Params);
// 处理服务器响应
// ...
finally
Params.Free;
end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Make sure to add code blocks to your code group
# 3.1.5. Post3
function Post3(AURL: string; ASource: TStream): string;
通过Post方式,将TStream中的数据作为请求体发送到指定的URL。这种方法通常用于向服务器上传文件或其他二进制数据。
//JScript
var FileStream,Response;
// 创建要发送的数据流,只读模式
FileStream = new TFileStream("path_to_folder\\path_to_file", 0);
try{
// 发送POST请求,并将数据流中的内容作为请求体发送到指定的URL
Response = UgIdHTTP01.Post("http://example.com/api", FileStream);
// 处理服务器响应
// ...
}
finally{
FileStream.Free;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
//PasScript
var
FileStream: TFileStream;
Response: string;
begin
// 创建要发送的数据流,只读模式
FileStream := TFileStream.Create('path_to_folder\path_to_file', 0);
try
// 发送POST请求,并将数据流中的内容作为请求体发送到指定的URL
Response := UgIdHTTP01.Post('http://example.com/api', FileStream);
// 处理服务器响应
// ...
finally
FileStream.Free;
end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Make sure to add code blocks to your code group
# 3.1.6. Post4
function Post4(AURL: string; ASource: TIdMultiPartFormDataStream): string;
通过Post方式,将TIdMultiPartFormDataStream对象中的数据作为多部分表单数据发送到指定的URL。这在需要上传文件或发送包含文件和其他表单字段的表单时非常有用。
//JScript
var FormData,Response;
// 创建TIdMultiPartFormDataStream对象
FormData = new TIdMultiPartFormDataStream();
try{
// 添加要发送的表单字段
FormData.AddFormField("param1", "value1","","","");
FormData.AddFormField("param2", "value2","","","");
// 添加要上传的文件
FormData.AddFile("file1", "path_to_folder\\path_to_file1","application/octet-stream");
FormData.AddFile("file2", "path_to_folder\\path_to_file2","application/octet-stream");
// 发送POST请求,并将TIdMultiPartFormDataStream对象中的数据作为多部分表单数据发送到指定的URL
Response = UgIdHTTP01.Post4("http://example.com/api", FormData);
// 处理服务器响应
// ...
}
finally{
FormData.Free;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//PasScript
var
FormData: TIdMultiPartFormDataStream;
Response: string;
begin
// 创建TIdMultiPartFormDataStream对象
FormData := TIdMultiPartFormDataStream.Create;
try
// 添加要发送的表单字段
FormData.AddFormField('param1', 'value1','','','');
FormData.AddFormField('param2', 'value2','','','');
// 添加要上传的文件
FormData.AddFile('file1', 'path_to_folder\path_to_file1','application/octet-stream');
FormData.AddFile('file2', 'path_to_folder\path_to_file2','application/octet-stream');
// 发送POST请求,并将TIdMultiPartFormDataStream对象中的数据作为多部分表单数据发送到指定的URL
Response := UgIdHTTP01.Post4('http://example.com/api', FormData);
// 处理服务器响应
// ...
finally
FormData.Free;
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
// Make sure to add code blocks to your code group
# 3.1.7. Post5
procedure Post5(AURL: string; const ASourceFile: String; AResponseContent: TStream);
通过Post方式,将来自文件的数据作为请求体发送到指定的URL。这个方法还允许你将服务器的响应内容写入到指定的TStream中。这种方法适用于需要发送文件数据并且需要获取服务器响应内容的情况。
//JScript
var ResponseStream;
ResponseStream = new TMemoryStream();
try{
// 发送POST请求,并将来自文件的数据发送到指定的URL,同时将服务器的响应内容写入到ResponseStream中
UgIdHTTP01.Post5("http://example.com/api", "path_to_folder\\path_to_file", ResponseStream);
// 处理服务器响应内容,可以从ResponseStream中读取
// ...
}
finally{
ResponseStream.Free;
}
2
3
4
5
6
7
8
9
10
11
12
13
//PasScript
var
ResponseStream: TMemoryStream;
begin
ResponseStream := TMemoryStream.Create;
try
// 发送POST请求,并将来自文件的数据发送到指定的URL,同时将服务器的响应内容写入到ResponseStream中
UgIdHTTP01.Post5('http://example.com/api', 'path_to_file', ResponseStream);
// 处理服务器响应内容,可以从ResponseStream中读取
// ...
finally
ResponseStream.Free;
end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
// Make sure to add code blocks to your code group
# 3.1.8. Post6
procedure Post6(AURL: string; ASource: TStrings; AResponseContent: TStream);
通过Post方式,将TStrings对象中的数据作为表单数据发送到指定的URL。这个方法还允许你将服务器的响应内容写入到指定的TStream中。
//JScript
var Params,ResponseStream;
Params = new TStringList();
ResponseStream = new TMemoryStream();
try{
// 添加表单参数到TStrings对象中
Params.Add("param1=value1");
Params.Add("param2=value2");
// 发送POST请求,并将TStrings对象中的数据作为表单数据发送到指定的URL,同时将服务器的响应内容写入到ResponseStream中
UgIdHTTP01.Post6("http://example.com/api", Params, ResponseStream);
// 处理服务器响应内容,可以从ResponseStream中读取
// ...
}
finally{
Params.Free;
ResponseStream.Free;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//PasScript
var
Params: TStringList;
ResponseStream: TMemoryStream;
begin
Params := TStringList.Create;
ResponseStream := TMemoryStream.Create;
try
// 添加表单参数到TStrings对象中
Params.Add('param1=value1');
Params.Add('param2=value2');
// 发送POST请求,并将TStrings对象中的数据作为表单数据发送到指定的URL,同时将服务器的响应内容写入到ResponseStream中
IdHTTP1.Post('http://example.com/api', Params, ResponseStream);
// 处理服务器响应内容,可以从ResponseStream中读取
// ...
finally
Params.Free;
ResponseStream.Free;
end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Make sure to add code blocks to your code group
# 3.1.9. Post7
procedure Post7(AURL: string; ASource, AResponseContent: TStream);
通过Post方式,将TStream中的数据作为请求体发送到指定的URL。这个方法还允许你将服务器的响应内容写入到另一个TStream中。
//JScript
var FileStream, ResponseStream;
// 创建要发送的数据流,只读模式
FileStream = new TFileStream("path_to_folder\\path_to_file", 0);
ResponseStream = new TMemoryStream();
try{
// 发送POST请求,并将RequestStream中的数据作为请求体发送到指定的URL,同时将服务器的响应内容写入到ResponseStream中
UgIdHTTP01.Post7("http://example.com/api", FileStream, ResponseStream);
// 处理服务器响应内容,可以从ResponseStream中读取
// ...
}
finally{
FileStream.Free;
ResponseStream.Free;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//PasScript
var
FileStream: TFileStream
ResponseStream: TMemoryStream;
begin
// 创建要发送的数据流,只读模式
FileStream := TFileStream.Create('path_to_folder\path_to_file', 0);
ResponseStream := TMemoryStream.Create;
try
// 发送POST请求,并将FileStream中的数据作为请求体发送到指定的URL,同时将服务器的响应内容写入到ResponseStream中
UgIdHTTP01.Post7('http://example.com/api', FileStream, ResponseStream);
// 处理服务器响应内容,可以从ResponseStream中读取
// ...
finally
FileStream.Free;
ResponseStream.Free;
end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Make sure to add code blocks to your code group
# 3.1.10. Post8
procedure Post8(AURL: string; ASource: TIdMultiPartFormDataStream; AResponseContent: TStream);
通过Post方式,将TIdMultiPartFormDataStream对象中的数据作为多部分表单数据发送到指定的URL。这个方法还允许你将服务器的响应内容写入到另一个TStream中。这种方法适用于需要发送包含文件和其他表单字段的表单,并且需要获取服务器响应内容的情况。
//JScript
var FormData,ResponseStream;
// 创建TIdMultiPartFormDataStream对象
FormData = new TIdMultiPartFormDataStream();
ResponseStream = new TMemoryStream();
try{
// 添加要发送的表单字段
FormData.AddFormField("param1", "value1","","","");
FormData.AddFormField("param2", "value2","","","");
// 添加要上传的文件
FormData.AddFile("file1", "path_to_folder\\path_to_file1","application/octet-stream");
FormData.AddFile("file2", "path_to_folder\\path_to_file2","application/octet-stream");
// 发送POST请求,并将TIdMultiPartFormDataStream对象中的数据作为多部分表单数据发送到指定的URL,同时将服务器的响应内容写入到ResponseStream中
UgIdHTTP01.Post8("http://example.com/api", FormData,ResponseStream);
// 处理服务器响应
// ...
}
finally{
FormData.Free;
ResponseStream.Free;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//PasScript
var
FormData: TIdMultiPartFormDataStream;
ResponseStream: TMemoryStream;
begin
// 创建TIdMultiPartFormDataStream对象
FormData := TIdMultiPartFormDataStream.Create;
ResponseStream := TMemoryStream.Create;
try
// 添加要发送的表单字段
FormData.AddFormField('param1', 'value1','','','');
FormData.AddFormField('param2', 'value2','','','');
// 添加要上传的文件
FormData.AddFile('file1', 'path_to_folder\path_to_file1','application/octet-stream');
FormData.AddFile('file2', 'path_to_folder\path_to_file2','application/octet-stream');
// 发送POST请求,并将TIdMultiPartFormDataStream对象中的数据作为多部分表单数据发送到指定的URL,同时将服务器的响应内容写入到ResponseStream中
UgIdHTTP01.Post8('http://example.com/api', FormData,ResponseStream);
// 处理服务器响应
// ...
finally
FormData.Free;
ResponseStream.Free;
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
// Make sure to add code blocks to your code group
# 4. TUgIdFTP
此控件为FTP发送的基础控件。
FTP 是一种促进共享文件、高效上传和下载文件以及隔离远程主机计算机文件系统差异的协议。
TUgIdFTP 提供了 FTP 协议解释器的封装,该解释器充当 FTP 命令及其特定 FTP 回复交换的控制通道或通信路径。 几个关键属性和方法用于为 FTP 会话建立控制通道,包括:Host
、Port
、UserName
、Password
、ClientInfo
、ProxySettings
、UseTLS
、AutoLogin
、Connect
、Login
、Quit
。
使用 Connect 或 Login 创建控制通道连接后,可以使用以下属性检查 FTP 回复的内容和在此过程中检测到的设置:Greeting
、LoginMsg
、SystemDesc
、TZInfo
、UsingSFTP
、LastCmdResult
、LangsSupported
。
# 4.1. 属性
属性 | 说明 |
---|---|
Account | FTP登录的用户账户信息 |
AUTHCmd | 指示登录到 FTP 服务器时执行身份验证时使用的机制 |
AutoLogin | 表示FTP 客户端在FTP 服务器连接打开时是否自动登录 |
ClientInfo | 有关 FTP CLNT 命令的 FTP 客户端软件、修订版和平台的附加信息 |
DataPort | 表示结合用于FTP客户端会话的数据信道时使用的端口号 |
DataPortMax | FTP客户端绑定活动数据通道时允许的端口号上限 |
DataPortMin | FTP客户端绑定活动数据通道时允许的端口号下限 |
DataPortProtection | 指示 FTP 客户端中数据通道连接所需的安全级别 |
ExternalIP | 指定客户端在基于 NAT 的防火墙后面发送 FTP PORT 或 EPRT 命令时使用的 IP 地址 |
Host | 表示远程 FTP 服务器的 IP 地址或主机名 |
Passive | FTP 数据通道连接方式是否为被动模式 |
Password | 登录 FTP 服务器时使用的身份验证凭据 |
Port | 控制通道连接到远程 FTP 服务器的端口号 |
ProxySettings | 指示用于使用 FTP 代理服务器打开的连接的设置 |
ReadTimeout | 等待 FTP 协议响应的毫秒数 |
TransferTimeout | FTP 客户端数据通道上读取操作的超时值 |
TransferType | 文件传输类型 |
TryNATFastTrack | 表示使用“快速路径”连接来穿越防火墙和 NAT |
UseCCC | 指示 FTP 客户端是否需要使用清除命令通道 (CCC) 命令 |
UseExtensionDataPort | 指示是否在 FTP 协议交换中使用端口和被动设置的 IPv6 扩展 |
UseMLIS | 指示 FTP MLST 和 MLSD 命令是否用于目录列表 |
UserName | 登录 FTP 服务器时使用的身份验证身份 |
# 4.1.1. Account
property Account: string;
设置FTP登录的用户账户信息。
# 4.1.2. AUTHCmd
property AUTHCmd: TAuthCmd;
指示登录到 FTP 服务器时执行身份验证时使用的机制。
tAuthSSL
:使用SSL认证。tAuthTLS
:使用TLS认证。tAuthTLSC
:使用TLSC认证。tAuthTLSP
:使用TLSP认证。
# 4.1.3. AutoLogin
property AutoLogin: Boolean;
表示FTP 客户端在FTP 服务器连接打开时是否自动登录。
# 4.1.4. ClientInfo
property ClientInfo: TIdFTPClientIdentifier;
有关 FTP CLNT 命令的 FTP 客户端软件、修订版和平台的附加信息。
- ClientName:客户端的名称。
- ClientVersion:客户端的版本。
- PlatformDescription:平台的描述信息。
# 4.1.5. DataPort
property DataPort: Integer;
表示结合用于FTP客户端会话的数据信道时使用的端口号。
# 4.1.6. DataPortMax
property DataPortMax: Integer;
FTP客户端绑定活动数据通道时允许的端口号上限。
# 4.1.7. DataPortMin
property DataPortMin: Integer;
# 4.1.8. DataPortProtection
property DataPortProtection: TIdFTPDataPortSecurity;
指示 FTP 客户端中数据通道连接所需的安全级别。
ftpdpsClear
:清除个人信息的安全级别。ftpdpsPrivate
:开启个人模式的安全级别。
# 4.1.9. ExternalIP
property ExternalIP: String;
指定客户端在基于 NAT 的防火墙后面发送 FTP PORT 或 EPRT 命令时使用的 IP 地址。
# 4.1.10. Host
property Host;
表示远程 FTP 服务器的 IP 地址或主机名。
# 4.1.11. Passive
property Passive: boolean;
FTP 数据通道连接方式是否为被动模式。
# 4.1.12. Password
property Password;
登录 FTP 服务器时使用的身份验证凭据。
# 4.1.13. Port
property Port;
控制通道连接到远程 FTP 服务器的端口号。
# 4.1.14. ProxySettings
property ProxySettings: TIdFtpProxySettings;
指示用于使用 FTP 代理服务器打开的连接的设置。
- Host:代理服务器的地址。
- Password:代理服务器的连接密码。
- Port:代理服务器的连接端口号。
- ProxyType:代理连接的类型。
取值 | 说明 |
---|---|
fpcmNone | 发送在 FTP 客户端中找到的用户名和可选密码 |
fpcmUserSite | 在 ProxySettings 中发送用户名和可选密码,紧接着是在 FTP 客户端中找到的用户名和可选密码 |
fpcmSite | 发送 ProxySettings 中的用户名和可选密码、SITE 命令和 Host 属性中的值,以及 FTP 客户端中的用户名和可选密码 |
fpcmOpen | 发送 ProxySettings 中的用户名和可选密码,发送带有 Host 值的 OPEN 命令,以及 FTP 客户端的用户名和可选密码 |
fpcmUserPass | 使用命令 USER user@proxyuser@host 调用 SendCmd,使用命令 PASS pwd@proxypwd 或可选的 PASS pwd 调用 SendCmd |
fpcmTransparent | 发送 ProxySettings 用户名和可选密码,紧接着是 FTP 客户端用户名和可选密码 |
fpcmHttpProxyWithFtp | 目前未实现 |
fpcmCustomProxy | 向 OnCustomFTPProxy 事件处理程序发出信号以执行 FTP 协议交换 |
- UserName:代理服务器连接使用的用户名称。
# 4.1.15. ReadTimeout
property ReadTimeout: Integer;
等待 FTP 协议响应的毫秒数。
# 4.1.16. TransferTimeout
property TransferTimeout: Integer;
FTP 客户端数据通道上读取操作的超时值。
# 4.1.17. TransferType
property TransferType: TIdFTPTransferType;
文件传输类型。
ftBinary
:二进制传输。ftASCII
:ASCII码传输。
# 4.1.18. TryNATFastTrack
property TryNATFastTrack: Boolean;
表示使用“快速路径”连接来穿越防火墙和 NAT。
# 4.1.19. UseCCC
property UseCCC: Boolean;
指示 FTP 客户端是否需要使用清除命令通道 (CCC) 命令。
# 4.1.20. UseExtensionDataPort
property UsingExtDataPort: Boolean;
指示是否在 FTP 协议交换中使用端口和被动设置的 IPv6 扩展 。
# 4.1.21. UseMLIS
property UseMLIS: Boolean;
指示 FTP MLST 和 MLSD 命令是否用于目录列表。
# 4.1.22. UserName
property Username;
登录 FTP 服务器时使用的身份验证身份。
# 4.2. 事件
事件名称 | 说明 |
---|---|
OnAfterClientLogin | 当客户端登录后触发事件 |
OnAfterGet | 当获取服务器上的内容后触发事件 |
OnAfterPut | 当向服务器上传内容后触发事件 |
OnBeforeGet | 当客户端获取内容前触发事件 |
OnBeforePut | 当客户端上传内容前触发事件 |
OnConnected | 当客户端连接后触发事件 |
OnDisconnected | 当客户端断开连接时触发事件 |
OnNeedAccount | 当需要账户时触发事件 |
# 4.3. 方法
# 4.3.1. Allocate
procedure Allocate(AAllocateBytes: Integer);
在上传文件之前在 FTP 服务器上预先分配空间。
# 4.3.2. ChangeDir
procedure ChangeDir(const ADirName: string);
切换 FTP 服务器文件系统上的当前目录。
# 4.3.3. ChangeDirUp
procedure ChangeDirUp;
切换为 FTP 服务器上的父目录。
# 4.3.4. Connect
procedure Connect;
为 FTP 会话打开与服务器的连接。
# 4.3.5. CRC
function CRC(const AFIleName: string; const AStartPoint: Int64; const AEndPoint: Int64): Int64
计算 FTP 服务器上指定文件的循环冗余校验(或 CRC)。
# 4.3.6. Delete
procedure Delete(const AFilename: string);
删除 FTP 服务器文件系统上的文件。
# 4.3.7. FileDate
function FileDate(const AFileName: string; const AsGMT: Boolean): TDateTime
检索上次在远程系统上修改文件的日期和时间。
# 4.3.8. Get
procedure Get(const ASourceFile: string; ADest: TStream; AResume: Boolean)
procedure Get(const ASourceFile: string; const ADestFile: string; const ACanOverwrite: Boolean; AResume: Boolean)
2
使用 FTP 协议检索文件。
# 4.3.9. List
procedure List
procedure List(const ASpecifier: string; ADetails: Boolean)
procedure List(ADest: TStrings; const ASpecifier: string; ADetails: Boolean)
2
3
获取列表信息。
# 4.3.10. Login
procedure Login;
验证与 FTP 服务器的客户端连接。
# 4.3.11. MakeDir
procedure MakeDir(const ADirName: string);
在 FTP 服务器上创建一个目录。
# 4.3.12. Noop
procedure Noop;
向 FTP 服务器发送 Keep-Alive 信号。
# 4.3.13. Put
procedure Put(const ASource: TStream; const ADestFile: string; const AAppend: Boolean; const AStartPos: Int64)
procedure Put(const ASourceFile: string; const ADestFile: string; const AAppend: Boolean; const AStartPos: Int64)
2
将文件上传到 FTP 服务器。
# 4.3.14. Quit
procedure Quit;
结束连接并退出。
# 4.3.15. RemoveDir
procedure RemoveDir(const ADirName: string)
删除 FTP 服务器上的目录。
# 4.3.16. ReName
procedure Rename(const ASourceFile: string; const ADestFile: string);
更改 FTP 服务器文件系统上的文件名。
# 4.3.17. RetrieveCurrentDir
function RetrieveCurrentDir: string;
获取 FTP 服务器上的当前目录名称。
# 4.3.18. SetModTime
procedure SetModTime(const AFileName: string; const ALocalTime: TDateTime);
设置指定文件的最后修改时间。
# 4.3.19. SetModTimeGMT
procedure SetModTimeGMT(const AFileName: string; const AGMTTime: TDateTime)
设置指定文件的最后修改时间。
# 4.3.20. Size
function Size(const AFileName: string): Int64;
从 FTP 服务器获取文件大小信息。
# 5. TUgEmailMsg
此控件用于设置邮件发送相关的参数,通过控件配置的方式可快速完成邮件参数信息的配置。
# 5.1. 属性
属性 | 说明 |
---|---|
Address | 邮件发送的目标地址邮箱 |
Attachments | 附件的地址列表 |
Body | 邮件的正文内容 |
BodyHtml | 邮件的正文是否使用HTML格式解析 |
CCAdressList | 设置抄送的邮箱的列表 |
Host | 邮件服务器的地址 |
Password | 邮件发件邮箱的密码 |
Port | 邮件服务器的通讯端口号 |
Receipt | 设置是否发送邮件的已读回执 |
ReceiptAddress | 设置已读回执的传输地址 |
Subject | 设置邮箱的标题 |
Username | 设置用户名 |
# 5.2. 方法
function SendEmail: Boolean;
设置发送邮件,并反馈发送是否成功的信息。
# 6. TUgRestApi
该组件为客户端向服务端发送请求使用的组件,可通过其接收到的信息进行解析操作。在界面中双击控件,可打开RestApi管理器界面。

在上述界面中,点击左侧的API列表,选择要使用的API,有条件的API可在右侧修改相关信息,使用右侧的[Send]
按钮测试返回的结果。点击[OK]
按钮确认并将参数信息回传至RestAPI控件中。
# 6.1. 属性
属性 | 说明 |
---|---|
Body | 请求主体的内容 |
ContentType | 请求的内容类型 |
GUID | 在RestAPI管理器中记录的选择项的值 |
Headers | 请求头的值的类型 |
Method | 请求的类型 |
Params | 请求的参数内容 |
Script | 请求的脚本内容 |
Server | 请求的服务器的地址信息 |
Url | 请求的除服务器以外的地址的信息 |
# 6.1.1. Body
property Body: TStringList;
设置请求体中的内容,点击属性右侧的按钮以打开文本编辑框,向其中输入信息,通常可在其中输入格式化的JSON文本或者key=value
类型的文本或者纯文本信息,根据API的需求进行填写。
当ContentType设置为application/json
时,Body处填写的是格式化的JSON文本;当ContentType设置为application/x-www-form-urlencoded
时,Body处填写的是key=value
键值对。
# 6.1.2. ContentType
property ContentType: string;
设置请求内容的类型。通常有以下几种类型:
text/html
:带有html标记的文本类型。application/json
:格式化的json文本类型。application/xml
:格式化的xml文本类型。application/octet-stream
:未知类型,默认表示为二进制的数据流类型。application/x-www-form-urlencoded
:key=value类型的文本编码方式。
# 6.1.3. GUID
property GUID: string;
此处的GUID用来记录在管理器界面选择的RestAPI。
# 6.1.4. Headers
property Headers: TStringList;
设置发送请求的请求头的信息。
# 6.1.5. Method
property Method: TRequestMethod;
设置请求的发送方式。
rmGET
:以GET的方式发送请求。rmPOST
:以POST的方式发送请求。rmDELETE
:以DELETE的方式发送请求。rmPUT
:以PUT的方式发送请求。
# 6.1.6. Params
property Params: TStringList;
设置发送的请求中带有的参数信息。以key=value
的方式设置,每行设置一个。此部分的参数在发送中会使用URL编码的方式附加在URL后进行发送。
比如在Params中设置的参数为:
key1=value1
key2= value2
2
请求的地址为http://192.168.1.1/
,则在经过URL编码后请求的地址形式如下:
http://192.168.1.1/?key1=value1&key2=value2
在请求的Rest地址与第一个参数中间使用?
分隔,其余的参数与参数之间使用&
进行分隔。
# 6.1.7. Script
property Script: TStringList;
用于设置API返回的JSON信息中将会使用的提取特定数值的脚本信息。可使用的有以下几项内容。
GetJSONString
:获取JSON中特定值的文本。GetJSONNumber
:获取JSON中特定值的数值。GETJSONInteger
:获取JSON中特定值的整数值信息。GETJSONObject
:获取JSON中特定的对象GETJSONBool
:获取JSON中特定值的布尔值信息。GETJSONObject
:获取JSON中指定名称的对象信息。GETJSONArray
:获取JSON中指定名称的对象数组信息。GETJSONPair
:获取JSON中指定名称的键值对的信息。
具体的使用方式如下:
{
"$user":{
"auth_token": "ABDEDEEDEDEED",
"number": 1,
"float": 3.2,
"bool": true
},
"status":[
{"ok": true},
{"ok": false}
]
}
2
3
4
5
6
7
8
9
10
11
12
如果我们要从中取出auth_token
的值,在脚本信息中可以使用下述方式获取:
方式一:写路径获取
GETJSONString=$user.auth_token
方式二:分层单步获取
GETJSONString=$user
GETJSONString=auth_token
2
如果是取特定数组中的对象,使用以下方式来获取:
数组有名称
GETJSONBool=status[0].ok
数组无名称:数组无名称通常使用在起始的位置。表示方式如下:
[
{"bad": "AA"},
{"bad": "BB"}
]
2
3
4
上述写法如下:
GETJSONString=[0].bad
如果要取JSON中表示的各种数据类型的数值或者对象,使用下述方式:
文本类型
GETJSONString=$user.auth_token
数值类型(返回类型为文本)
GETJSONNumber=$user.number
整数
GETJSONInteger=$user.number
浮点数
GETJSONFloat=$user.float
布尔值
GETJSONBool=$user.bool
对象
GETJSONObject=$user
数组
GETJSONArray=status
值对
GETJSONPair=$user
# 6.1.8. Server
property Server: string;
设定API厂商的服务地址,此服务地址可从API服务管理界面进行设置。
# 6.1.9. Url
property Url: string;
设定处服务地址外的具体Url路径信息。首位不需要带地址分隔符号。
# 6.2. 事件
# 6.2.1. ResultData
procedure UgRestApiResultData(sender: tobject;aresult: string);
设置当接收到RestAPI返回的消息时触发事件,在aresult
中显示返回的文本。
示例:假设从返回的结果中获取auth_token
,可使用下述的方式来获取。
//JScript
function UgRestApi01ResultData(sender,aresult)
var
vJSON: TJSONObject;
vValue: TJSONValue;
{
var vJSON,vValue;
UgMemo01.Lines.Add(aresult);
vJSON = new TJSONObject();
Try{
vValue = vJSON.ParseJSONValue(aresult,False,False);
vValue = TJSONObject(vValue).GetValue("$user");
vToken = TJSONObject(vValue).GetValue("auth_token").Value;
}
Finally{
vJSON.Free;
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//PasScript
procedure UgRestApi01ResultData(sender: tobject;aresult: string);
Var
vJSON: TJSONObject;
vValue: TJSONValue;
begin
UgMemo01.Lines.Add(aresult);
vJSON := TJSONObject.Create();
Try
vValue := vJSON.ParseJSONValue(aresult,False,False);
vValue := TJSONObject(vValue).GetValue('$user');
vToken := TJSONObject(vValue).GetValue('auth_token').Value;
Finally
vJSON.Free;
End;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Make sure to add code blocks to your code group
# 6.3. 方法
# 6.3.1. Send
procedure Send;
设置发送请求。
# 6.3.2. Init
procedure Init(AGUID: string);
设置对连接信息初始化操作。AGUID
表示为其连接使用的GUID字段的名称。通过引用后可将对应字段的RestApi设置引入到界面中来。
# 7. TUgModbusTCPClient
该组件为ModbusTCP组件,用于与设备建立ModbusTCP连接。连接的发起是以FastWeb服务端为基准,不是以客户端的方式呈现。
# 7.1. 属性
属性 | 功能说明 |
---|---|
AutoConnect | 是否进行自动连接 |
ConnectTimeOut | 设置连接超时的时间 |
Host | 指定一个Modbus设备的IP地址 |
Port | 指定一个Modbus设备的端口号 |
ReadTimeOut | 设置读取超时的时间 |
UnitID | 设置Modbus从机的ID |
# 7.1.1. Host
property Host: string;
Host是指ModbusTCP设备的IP地址。如:192.168.1.100。
//JScript
UgModbusTCPClient01.Host = "192.168.1.100";
2
//PasScript
UgModbusTCPClient01.Host := '192.168.1.100';
2
// Make sure to add code blocks to your code group
# 7.1.2. Port
property Port: Word;
Port是指ModbusTCP设备的端口号。默认502。
//JScript
UgModbusTCPClient01.Port = 502;
2
//PasScript
UgModbusTCPClient01.Port := 502;
2
// Make sure to add code blocks to your code group
# 7.2. 方法
# 7.2.1. Connect
procedure Connect;
连接设备。
//JScript
UgModbusTCPClient01.Connect;
2
//PasScript
UgModbusTCPClient01.Connect;
2
// Make sure to add code blocks to your code group
# 7.2.2. ReadCoil
function ReadCoil(const RegNo: Word; out Value: Boolean): Boolean;
读取单个线圈寄存器的数值。
//JScript
//读取DO数位信号输出
function btnReadCoilOnClick(Sender)
{
var v;
if (UgModbusTCPClient01.ReadCoil(1,v))
{
if (v){
UgMemo01.Lines.Add("ReadCoil Value->>> 1");
}
else{
UgMemo01.Lines.Add("ReadCoil Value->>> 0");
}
}
else{
UgMemo01.Lines.Add("ReadCoil->>> error!");
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//PasScript
//读取DO数位信号输出
Procedure btnReadCoilOnClick(Sender: TObject);
var
v:boolean;
Begin
if UgModbusTCPClient01.ReadCoil(1,v) then
begin
if v Then
UgMemo01.Lines.Add('ReadCoil Value->>> 1')
else
UgMemo01.Lines.Add('ReadCoil Value->>> 0');
End
else
UgMemo01.Lines.Add('ReadCoil->>> error!');
End;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Make sure to add code blocks to your code group
# 7.2.3. ReadCoils
function ReadCoils(const RegNo: Word; const Blocks: Word; out RegisterData: string): Boolean;
读取多个线圈寄存器的数值。
//JScript
var v;
UgModbusTCPClient01.ReadCoils(1,2,v);
2
3
//PasScript
var
v:string;
begin
UgModbusTCPClient01.ReadCoils(1,2,v);
end;
2
3
4
5
6
// Make sure to add code blocks to your code group
# 7.2.4. ReadHoldingRegister
function ReadHoldingRegister(const RegNo: Word; out Value: Word): Boolean;
读取单个保持寄存器的数值。
//JScript
//读取AO类比信号输出
function btnReadHoldingRegisterOnClick(Sender)
{
var v;
if (UgModbusTCPClient01.ReadHoldingRegister(1,v))
{
if (v){
UgMemo01.Lines.Add("ReadHoldingRegister Value->>> "+floattostr(v));
}
else{
UgMemo01.Lines.Add("ReadHoldingRegister Value->>> "+floattostr(v));
}
}
else{
UgMemo01.Lines.Add("ReadHoldingRegister->>> error!");
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//PasScript
//读取AO类比信号输出
Procedure btnReadHoldingRegisterOnClick(Sender: TObject);
var
v:word;
Begin
if UgModbusTCPClient01.ReadHoldingRegister(1,v) then
begin
if v Then
UgMemo01.Lines.Add('ReadHoldingRegister Value->>> '+floattostr(v))
else
UgMemo01.Lines.Add('ReadHoldingRegister Value->>> '+floattostr(v));
End
else
UgMemo01.Lines.Add('ReadHoldingRegister->>> error!');
End;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Make sure to add code blocks to your code group
# 7.2.5. ReadHoldingRegisters
function ReadHoldingRegisters(const RegNo: Word; const Blocks: Word; out RegisterData: string): Boolean;
读取多个保持寄存器的数值。
说明: 读取多个AO数位讯号输出。
**返回值:**Boolean字符型。
- ReadHoldingRegisters函数语法中各部分说明
部分 | 说明 |
---|---|
RegNo | 开始位址 |
Blocks | 资料长度 |
- 示例
//JScript
var v;
UgModbusTCPClient01.ReadHoldingRegisters(1,4,v);
2
3
//PasScript
var
v:String;
Begin
UgModbusTCPClient01.ReadHoldingRegisters(1,4,v);
End;
2
3
4
5
6
// Make sure to add code blocks to your code group
# 7.2.6. ReadInputBit
function ReadInputBit(const RegNo: Word; out Value: Boolean): Boolean;
读取单个离散输入寄存器的值。
//JScript
//读取DO数位信号输出
function btnReadInputBitOnClick(Sender)
{
var v;
if (UgModbusTCPClient01.ReadInputBit(1,v))
{
if (v){
UgMemo01.Lines.Add("ReadInputBit Value ->>> 1");
}
else{
UgMemo01.Lines.Add("ReadInputBit Value ->>> 0");
}
}
else{
UgMemo01.Lines.Add("ReadInputBit ->>> error!");
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 7.2.7. ReadInputBits
function ReadInputBits(const RegNo: Word; const Blocks: Word; out RegisterData: string): Boolean;
读取离散输入寄存器中的取值数值。
//JScript
var v;
UgModbusTCPClient01.ReadInputBits(1,2,v);
2
3
//PasScript
var
v:string;
begin
UgModbusTCPClient01.ReadInputBits(1,2,v);
end;
2
3
4
5
6
// Make sure to add code blocks to your code group
# 7.2.8. ReadInputRegister
function ReadInputRegister(const RegNo: Word; out Value: Word): Boolean;
读取单个输入寄存器的数值。
//JScript
//读取AI数位信号输入
function btnReadInputRegisterOnClick(Sender)
{
var v;
if (UgModbusTCPClient01.ReadInputRegister(1,v))
{
if (v){
UgMemo01.Lines.Add("ReadInputRegister Value->>> "+floattostr(v));
}
else{
UgMemo01.Lines.Add("ReadInputRegister Value->>> "+floattostr(v));
}
}
else{
UgMemo01.Lines.Add("ReadInputRegister->>> error!");
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//PasScript
//读取AI数位信号输入
Procedure btnReadInputRegisterOnClick(Sender: TObject);
var
v:word;
Begin
if UgModbusTCPClient01.ReadInputRegister(1,v) then
begin
if v Then
UgMemo01.Lines.Add('ReadInputRegister Value->>> '+floattostr(v))
else
UgMemo01.Lines.Add('ReadInputRegister Value->>> '+floattostr(v));
End
else
UgMemo01.Lines.Add('ReadInputRegister->>> error!');
End;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Make sure to add code blocks to your code group
# 7.2.9. ReadInputRegisters
function ReadInputRegisters(const RegNo: Word; const Blocks: Word; var RegisterData: string): Boolean;
读取多个输入寄存器的数值。
//JScript
var v;
UgModbusTCPClient01.ReadInputRegisters(1,2,v);
2
3
//PasScript
var
v:word;
begin
UgModbusTCPClient01.ReadInputRegisters(1,2,v);
end;
2
3
4
5
6
// Make sure to add code blocks to your code group
# 7.2.10. WriteCoil
function WriteCoil(const RegNo: Word; const Value: Boolean): Boolean;
写入单个线圈寄存器的数值。
//JScript
//控制DO数位信号输出
function btnWriteCoilOnClick(Sender)
{
var v;
v = false;
if (UgModbusTCPClient01.WriteCoil(1,v))
{
if (v){
UgMemo01.Lines.Add("WriteCoil Value->>> 1");
}
else{
UgMemo01.Lines.Add("WriteCoil Value->>> 0");
}
}
else{
UgMemo01.Lines.Add("WriteCoil->>> error!");
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//PasScript
//控制DO数位信号输出
Procedure btnWriteCoilOnClick(Sender: TObject);
var
v:boolean;
Begin
v := false;
if UgModbusTCPClient01.WriteCoil(1,v) then
begin
if v Then
UgMemo01.Lines.Add('WriteCoil Value->>> 1')
else
UgMemo01.Lines.Add('WriteCoil Value->>> 0');
End
else
UgMemo01.Lines.Add('WriteCoil->>> error!');
End;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Make sure to add code blocks to your code group
# 7.2.11. WriteCoils
function WriteCoils(const RegNo: Word; const Blocks: Word; const RegisterData: string): Boolean;
写入多个线圈寄存器的数值。
//JScript
var v,RegisterData;
RegisterData := "1,0";//1代表True,0代表False
v = UgModbusTCPClient01.WriteCoils(1,2,"1,0");
2
3
4
//PasScript
var
v:boolean;
RegisterData:string;
begin
RegisterData := '1,0';//1代表True,0代表False
v := UgModbusTCPClient01.WriteCoils(1,2,'1,0');
end;
2
3
4
5
6
7
8
// Make sure to add code blocks to your code group
# 7.2.12. WriteRegister
function WriteRegister(const RegNo: Word; const Value: Word): Boolean;
写入单个保持寄存器的数值。
//JScript
var v;
v = 123;
if (UgModbusTCPClient01.WriteRegister(1,v))
{
if (v){
UgMemo01.Lines.Add("WriteRegister Value->>> "+floattostr(v));
}
else{
UgMemo01.Lines.Add("WriteRegister Value->>> "+floattostr(v));
}
}
else{
UgMemo01.Lines.Add("WriteRegister->>> error!");
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//PasScript
var
v:word;
Begin
v := 123;
if UgModbusTCPClient01.WriteRegister(1,v) then
begin
if v Then
UgMemo01.Lines.Add('WriteRegister Value->>> '+floattostr(v))
else
UgMemo01.Lines.Add('WriteRegister Value->>> '+floattostr(v));
End
else
UgMemo01.Lines.Add('WriteRegister->>> error!');
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Make sure to add code blocks to your code group
# 7.2.13. WriteRegisters
function WriteRegisters(const RegNo: Word; const RegisterData: string; Modbus: TUgModbusTCPClient): Boolean;
写入多个保持寄存器的数值。
//JScript
var v,RegisterData;
RegisterData := "1,0";//指定1,0
v = UgModbusTCPClient01.WriteRegisters(1,2,"1,0");
2
3
4
//PasScript
var
v:boolean;
RegisterData:string;
begin
RegisterData := '1,0';//指定1,0
v := UgModbusTCPClient01.WriteRegisters(1,2,'1,0');
end;
2
3
4
5
6
7
8
// Make sure to add code blocks to your code group
# 8. TUgMQTTClient
MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。
# 8.1. 属性
属性 | 功能说明 |
---|---|
BrokerHostName | 是否自动开启订阅 |
BrokerHostName | 指定MQTT代理服务器地址 |
Port | 指定MQTT代理服务器端 |
ClientID | 指定客户端标识 |
Credentials | 指定MQTTBroker的用户登录信息 |
# 8.1.1. BrokerHostName
property BrokerHostName: string;
指定MQTT代理服务器地址。
# 8.1.2. BrokerPort
property BrokerPort: Integer;
指定MQTT代理服务器端。
# 8.1.3. ClientID
property ClientID:string read FClientID write SetClientID;
指定客户端标识。
# 8.2. 事件
事件 | 何时触发 |
---|---|
OnPublishRecerivedA | 当发布消息返回时触发该事件 |
# 8.2.1. OnPublishReceivedA事件
procedure UgMQTTClient01OnPublishReceivedA(asender: tobject;apacketid: word;atopic: string;apayload: string);
atopic
表示为接收到订阅消息的主题名称,apayload
表示为接收到订阅消息的主题内容。
# 8.3. 方法
方法 | 功能说明 |
---|---|
Connect | 连接MQTTBroker |
Disconnect | 断开与MQTTBroker的连接 |
Subscribe | 主题订阅 |
Unsubscribe | 取消主题订阅 |
PublishStr | 推送主题消息(字符串) |
PublishByte | 推送主题消息 (字节) |
# 8.3.1. Connect
procedure Connect;
启动与MQTTBroker的连接。
UgMQTTClient01.Connect;
# 8.3.2. Disconnect
procedure Disconnect;
断开与MQTTBroker的连接。
UgMQTTClient01.Disconnect;
# 8.3.3. Subscribe
function Subscribe(ATopic: string): Word;
说明: MQTT 订阅主题 返回值: Word类型
- Subscribe函数语法中各部分说明
部分 | 说明 |
---|---|
ATopic | 主题内容 |
- 示例
//JScript
//订阅LED主题
UgMQTTClient01.Subscribe("LED");
2
3
//PasScript
//订阅LED主题
UgMQTTClient01.Subscribe('LED');
2
3
// Make sure to add code blocks to your code group
# 8.3.4. UnSubscribe
function Unsubscribe(ATopic: string): Word;
说明: 注销MQTT主题 返回值: Word类型
- MQTTUnSubscribe函数语法中各部分说明
部分 | 说明 |
---|---|
ATopic | 主题内容 |
- 示例
//JScript
//注销LED主题
UgMQTTClient01.UnSubscribe("LED");
2
3
//PasScript
//注销LED主题
UgMQTTClient01.UnSubscribe('LED');
2
3
// Make sure to add code blocks to your code group
# 8.3.5. Publish
function Publish(ATopic: string; APayload: string): Word;
说明: MQTT推送消息 返回值: Word类型
- MQTTPublish函数语法中各部分说明
部分 | 说明 |
---|---|
ATopic | 主题内容 |
APayload | 推送的内容 |
- 示例
//JScript
//熄灭LED
UgMQTTClient01.Publish("LED","0");
2
3
//PasScript
//熄灭LED
UgMQTTClient01.Publish('LED','0');
2
3
// Make sure to add code blocks to your code group
# 9. TUgMQTTws
该组件为MQTT客户端的WebSocket实现,与TUgMQTTClient实现的功能相同,区别在于TUgMQTTws是通过浏览器端直接与MQTT Broker建立连接,无需经过FastWeb服务器中转,可以缩短显示响应的时间。
# 9.1. 属性
属性 | 功能说明 |
---|---|
MQTTOptions | 设置MQTT的相关选项 |
CleanSession | 是否保持干净连接 |
ClientID | 设置客户端ID,该ID与连接中的客户端ID不能重复 |
HostName | MQTT Broker的连接地址 |
Password | 设置连接到MQTT Broker的密码 |
Port | 设置MQTT Broker WebSocket连接的端口号 |
SSL | 是否启用SSL加密连接 |
Topic | 设置默认的订阅主题 |
UserName | 设置连接MQTT Broker的用户名称 |
# 9.2. 事件
事件 | 何时触发 |
---|---|
OnConnect | 当控件连接到MQTT Broker时触发该事件 |
OnMessage | 当控件接收到订阅主题的信息时触发该事件 |
OnConnectionLost | 当控件失去与MQTT Broker的连接时触发该事件 |
# 9.2.1. OnConnect
procedure ugMQTTws01OnConnect(const amessage: string);
当控件连接到MQTT Broker时触发该事件,其中的amessage
包含连接结果的相关信息。
# 9.2.2. OnMessage
procedure ugMQTTws01OnMessage(const atopic: string;apayload: string);
当控件接收到指定订阅主题的信息时触发该事件,其中的atopic
为订阅的主题名称,只有在客户端订阅了该主题后才能接收到该主题下的订阅信息。apayload
为订阅主题的信息内容。
# 9.2.3. OnConnectionLost
procedure ugMQTTws01OnConnectionLost(const amessage: string);
当控件与MQTT Broker的连接丢失时触发该事件,其中的amessage
包含连接丢失的相关信息。
# 9.3. 方法
# 9.3.1. SubScribe
procedure Subscribe(ATopic: string);
调用该方法,使控件订阅主题信息。注意在程序启动时订阅的信息需要在MQTTOptions.Topic
属性中定义,在脚本中定义的程序启动时订阅主题的方法是无效的。ATopic
为主题名称。
//JScript
ugMQTTws01.SubScribe("LED");
2
//PasScript
ugMQTTws01.SubScribe('LED');
2
// Make sure to add code blocks to your code group
# 9.3.2. UnSubScribe
procedure Unsubscribe(ATopic: string);
调用该方法,使控件取消订阅该主题。ATopic
为主题名称。
//JScript
ugMQTTws01.UnSubScribe("LED");
2
//PasScript
ugMQTTws01.UnSubScribe('LED');
2
// Make sure to add code blocks to your code group
# 9.3.3. Publish
procedure Publish(ATopic: string; APayload: string);
调用该方法,控件向指定主题发布信息。ATopic
为主题名称,APayload
为主题内容。
//JScript
ugMQTTws01.Publish("LED","0");
2
//PasScript
ugMQTTws01.Publish('LED','0');
2
// Make sure to add code blocks to your code group
# 10. TUgWebSerial
此组件为网页端的串口组件,可通过浏览器的串口通讯能力与客户端的串口通讯设备进行数据交互。
# 10.1. 属性
# 10.1.1. SerailOptions
property SerialOptions: TSerialOptions;
设置串口通讯的相关选项。
# 10.1.1.1. BaudRate
property BaudRate: Integer;
设置串口通讯的连接速率,单位为赫兹(Hz)。
# 10.1.1.2. BufferSize
property BufferSize: Integer;
用于设置串口通讯的缓存区域的大小,单位为字节(Byte)。
# 10.1.1.3. DataBits
property DataBits: Integer;
设置一次串口数据发送/接受的数据位数。单位为位(bit)。
# 10.1.1.4. Filters
property Filters: string;
设置需要过滤的字符信息。此处填写的内容为串口设备的供应商。
# 10.1.1.5. FlowControl
property FlowControl: TFlowControl;
设定是否开启串口的流控制模式,fNone
表示不启用,fHardware
表示启用硬件流控制。
# 10.1.1.6. Parity
property Parity: TParity;
设定数据校验的模式,pNone
表示为无校验,pEven
表示为偶校验,pOdd
表示为奇校验。
# 10.1.1.7. StopBits
property StopBits: Integer;
设定串口通讯停止位的数量,单位为位(bit)。
# 10.2. 事件
# 10.2.1. OnReceived
//JScript
function UgWebSerialOnReceived(adata){};
2
//PasScript
procedure ugWebSerialOnReceived(const adata: string);
2
// Make sure to add code blocks to your code group
当串口接收到数据时触发事件,接受到的数据以字符串的形式抛转出来。
# 10.3. 方法
# 10.3.1. Init
property Init;
设置控件的初始化。
# 10.3.2. Request
procedure Request;
设置打开浏览器的端口选择界面,用以选择端口信息。
# 10.3.3. Open
procedure Open(AProt: Integer);
调用此方法以打开指定序号的串口端口。
# 10.3.4. Close
procedure Close;
调用此方法以关闭串口。
# 10.3.5. Write
procedure Write(AData: string);
调用此方法可向串口写入数据。写入的数据以字符串的方式显示。
# 10.3.6. WriteLines
procedure WriteLines(AData: string);
调用此方法可向串口写入一行数据,写入的数据会自动包含回车控制符信息。
# 10.3.7. GetPorts
procedure GetPorts;
获取可使用的所有端口列表。
# 10.3.8. GetPortInfo
procedure GetPortInfo
获取端口的信息。
// Make sure to add code blocks to your code group