通訊控制元件
# 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