愛招飛幫助手冊 愛招飛幫助手冊
  • 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
  • FastWeb幫助主頁
  • 學習手冊

    • 基本入門

    • 功能介紹

    • 控制元件說明

      • 屬性與事件
      • 桌面控制元件

      • 移動控制元件

        • 標準控制元件
        • 附加控制元件
        • 數據控制控制元件
        • 圖表控制元件
        • 製圖控制元件
        • 儀表控制元件
        • 資料庫控制元件
        • 通訊控制元件
          • 1. TUgNetHttpClient
            • 1.1. 屬性
            • 1.1.1. Accept
            • 1.1.2. AcceptCharSet
            • 1.1.3. AcceptEncoding
            • 1.1.4. AcceptLanguage
            • 1.1.5. AllowCookies
            • 1.1.6. Asynchronous
            • 1.1.7. ConnectionTimeOut
            • 1.1.8. ContentType
            • 1.1.9. HandleRedirects
            • 1.1.10. MaxRedirects
            • 1.1.11. RedirectsWithGET
            • 1.1.12. ResponseTimeOut
            • 1.1.13. SecureProtocols
            • 1.1.14. UserAgent
            • 1.2. 事件
          • 2. TUgNetHttpRequest
            • 2.1. 屬性
            • 2.1.1. Accept
            • 2.1.2. AcceptCharSet
            • 2.1.3. AcceptEncoding
            • 2.1.4. AcceptLanguage
            • 2.1.5. Asynchronous
            • 2.1.6. Client
            • 2.1.7. ConnectionTimeOut
            • 2.1.8. MethodString
            • 2.1.9. ResponseTimeOut
            • 2.1.10. URL
            • 2.2. 事件
          • 3. TUgIdHttp
            • 3.1. 方法
            • 3.1.1. Get
            • 3.1.2. Post
            • 3.1.3. Post1
            • 3.1.4. Post2
            • 3.1.5. Post3
            • 3.1.6. Post4
            • 3.1.7. Post5
            • 3.1.8. Post6
            • 3.1.9. Post7
            • 3.1.10. Post8
          • 4. TUgRestApi
            • 4.1. 屬性
            • 4.1.1. Body
            • 4.1.2. ContentType
            • 4.1.3. GUID
            • 4.1.4. Headers
            • 4.1.5. Method
            • 4.1.6. Params
            • 4.1.7. Script
            • 4.1.8. Server
            • 4.1.9. Url
            • 4.2. 事件
            • 4.2.1. ResultData
            • 4.3. 方法
            • 4.3.1. Send
            • 4.3.2. Init
          • 5. TUgModbusTCPClient
            • 5.1. 屬性
            • 5.1.1. Host
            • 5.1.2. Port
            • 5.2. 方法
            • 5.2.1. Connect
            • 5.2.2. ReadCoil
            • 5.2.3. ReadCoils
            • 5.2.4. ReadHoldingRegister
            • 5.2.5. ReadHoldingRegisters
            • 5.2.6. ReadInputRegister
            • 5.2.7. ReadInputRegisters
            • 5.2.8. WriteCoil
            • 5.2.9. WriteCoils
            • 5.2.10. WriteRegister
            • 5.2.11. WriteRegisters
          • 6. TUgMQTTClient
            • 6.1. 屬性
            • 6.1.1. BrokerHostName
            • 6.1.2. BrokerPort
            • 6.1.3. ClientID
            • 6.2. 事件
            • 6.2.1. OnPublishReceivedA事件
            • 6.3. 方法
            • 6.3.1. Connect
            • 6.3.2. Disconnect
            • 6.3.3. Subscribe
            • 6.3.4. UnSubscribe
            • 6.3.5. Publish
          • 7. TUgAppMQTTws
            • 7.1. 屬性
            • 7.2. 事件
            • 7.2.1. OnConnect
            • 7.2.2. OnMessage
            • 7.2.3. OnConnectionLost
            • 7.3. 方法
            • 7.3.1. SubScribe
            • 7.3.2. UnSubScribe
            • 7.3.3. Publish
        • 伺服器控制元件
        • 多媒體控制元件
        • 3D-AI控制元件
        • 附控控制元件
    • 系統工具

    • 系統管理

    • 云服務工具

    • 資料庫工具

    • 專用模板

    • 外部功能

    • 開發流程

    • 函式程式

  • 開發手冊

目录

通訊控制元件

# FastWeb通訊控制元件

  • 適用平臺: APP(移動端)

  該組中的控制元件為通過工業通訊協定的設定,連線物聯網設備採集資料的程式,進行數據的連線採集功能。

# 1. TUgNetHttpClient

  此元件為Http服務請求使用的客戶端元件。是作為TUgRestApi的基礎元件存在,如需要使用完整的RestAPI請求功能請查閱 TUgRestApi,以下屬性僅作簡單說明。

# 1.1. 屬性

# 1.1.1. Accept

property Accept: string;
1

  用於設定客戶端允許接收的內容型別,用於與服務端進行通訊連線。

# 1.1.2. AcceptCharSet

property AcceptCharSet: string;
1

  用於設定客戶端允許接收的字符集型別。

# 1.1.3. AcceptEncoding

property AcceptEncoding: string;
1

  用於設定客戶端允許接收的內容編碼壓縮型別。

# 1.1.4. AcceptLanguage

property AcceptLanguage: string;
1

  設定客戶端優先響應的語言型別。

# 1.1.5. AllowCookies

property AllowCookies: Boolean;
1

  設定客戶端是否接受來自服務端的cookie資訊。

# 1.1.6. Asynchronous

property Asynchronous: Boolean;
1

  設定請求的方式是非同步(True)還是同步(False)。

# 1.1.7. ConnectionTimeOut

property ConnectionTimeout: Integer;
1

  建立 HTTP 客戶端連線之前的超時數值,單位為ms(毫秒)。

# 1.1.8. ContentType

property ContentType: string;
1

  設定請求的實體主體的媒體型別。

# 1.1.9. HandleRedirects

property HandleRedirects: Boolean;
1

  如果此項設定為 True,則客戶端元件會自動處理重定向。否則不處理重定向資訊。

# 1.1.10. MaxRedirects

property MaxRedirects: Integer;
1

  設定客戶端允許的最大重定向的次數。

# 1.1.11. RedirectsWithGET

property RedirectsWithGET: THTTPRedirectsWithGET;
1

  設定允許的重定向型別。

# 1.1.12. ResponseTimeOut

property ResponseTimeout: Integer;
1

  表示給定 HTTP 客戶端請求中部分 HTTP 響應之間的最大超時,單位為毫秒。

# 1.1.13. SecureProtocols

property SecureProtocols: THTTPSecureProtocols;
1

  設定客戶端的連線安全協議型別。

# 1.1.14. UserAgent

property UserAgent: string;
1

  設定使用者代理標識,用於標識客戶端的型別。

# 1.2. 事件

名稱 觸發條件
OnAuthEvent 當需要向代理驗證使用者名稱時觸發事件
OnNeedClientCertificate 需要客戶端證書時觸發事件
OnReceiveData 在您的 HTTP 客戶端接收請求的響應數據時會觸發一次或者多次,它可以用於響應下載的進度
OnRequestCompleted 在請求完成時觸發事件
OnRequestError 在請求發生錯誤時觸發事件
OnValidateServerCertificate 在檢查伺服器證書的有效性時觸發事件

# 2. TUgNetHttpRequest

  此元件為Http服務請求的模板元件。是作為TUgRestApi的基礎元件存在,如需要使用完整的RestAPI請求功能請查閱 TUgRestApi,以下屬性僅作簡單說明。

# 2.1. 屬性

# 2.1.1. Accept

property Accept: string;
1

  用於設定客戶端允許接收的內容型別,用於與服務端進行通訊連線。

# 2.1.2. AcceptCharSet

property AcceptCharSet: string;
1

  用於設定客戶端允許接收的字符集型別。

# 2.1.3. AcceptEncoding

property AcceptEncoding: string;
1

  用於設定客戶端允許接收的內容編碼壓縮型別。

# 2.1.4. AcceptLanguage

property AcceptLanguage: string;
1

  設定客戶端優先響應的語言型別。

# 2.1.5. Asynchronous

property Asynchronous: Boolean;
1

  設定請求的方式是非同步(True)還是同步(False)。

# 2.1.6. Client

property Client: TUgNetHTTPClient
1

  指定請求繫結的HTTP客戶端元件。

# 2.1.7. ConnectionTimeOut

property ConnectionTimeout: Integer;
1

  建立 HTTP 客戶端連線之前的超時數值,單位為ms(毫秒)。

# 2.1.8. MethodString

property MethodString: string;
1

  設定從請求中訪問方法字串的屬性。

# 2.1.9. ResponseTimeOut

property ResponseTimeout: Integer;
1

  表示給定 HTTP 客戶端請求中部分 HTTP 響應之間的最大超時,單位為毫秒。

# 2.1.10. URL

property URL: string;
1

  設定允許的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;
1

  設定GET的請求。返回響應的內容。

# 3.1.2. Post

function Post(AURL: string; ASource: TStringList): string;
1

  通過Post方式發送請求。

# 3.1.3. Post1

function Post1(AURL: string; const ASourceFile: String): string;
1

  通過Post方式,將來自檔案的數據作為請求體發送到指定的URL。

    //JScript
    var Response;
    try{
        // 發送POST請求,並將來自檔案的數據發送到指定的URL
        Response = UgIdHTTP01.Post1("http://example.com/api", "path_to_folder\\path_to_file");
        // 處理響應數據
    }
    except{
        // 處理異常
    }
    
    1
    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;
    
    1
    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;
    
    1

      通過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;
      }
      
      1
      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;
      
      1
      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;
      
      1

        通過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;
        }
        
        1
        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;
        
        1
        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;
        
        1

          通過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;
          }
          
          1
          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;
          
          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
          // Make sure to add code blocks to your code group

          # 3.1.7. Post5

          procedure Post5(AURL: string; const ASourceFile: String; AResponseContent: TStream);
          
          1

            通過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;
            }
            
            1
            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;
            
            1
            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);
            
            1

              通過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;
              }
              
              1
              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;
              
              1
              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);
              
              1

                通過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;
                }
                
                1
                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;
                
                1
                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);
                
                1

                  通過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;
                  }
                  
                  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
                  //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;
                  
                  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
                  // Make sure to add code blocks to your code group

                  # 4. TUgRestApi

                    該元件為客戶端向服務端發送請求使用的元件,可通過其接收到的資訊進行解析操作。在界面中雙擊控制元件,可打開RestApi管理器界面。

                    在上述界面中,點選左側的API列表,選擇要使用的API,有條件的API可在右側修改相關資訊,使用右側的[Send]按鈕測試返回的結果。點選[OK]按鈕確認並將參數資訊回傳至RestAPI控制元件中。

                  # 4.1. 屬性

                  屬性 說明
                  Body 請求主體的內容
                  ContentType 請求的內容型別
                  GUID 在RestAPI管理器中記錄的選擇項的值
                  Headers 請求頭的值的型別
                  Method 請求的型別
                  Params 請求的參數內容
                  Script 請求的指令碼內容
                  Server 請求的伺服器的地址資訊
                  Url 請求的除伺服器以外的地址的資訊

                  # 4.1.1. Body

                  property Body: TStringList;
                  
                  1

                    設定請求體中的內容,點選屬性右側的按鈕以打開文字編輯框,向其中輸入資訊,通常可在其中輸入格式化的JSON文字或者key=value型別的文字或者純文字資訊,根據API的需求進行填寫。

                    當ContentType設定為application/json時,Body處填寫的是格式化的JSON文字;當ContentType設定為application/x-www-form-urlencoded時,Body處填寫的是key=value鍵值對。

                  # 4.1.2. ContentType

                  property ContentType: string;
                  
                  1

                    設定請求內容的型別。通常有以下幾種型別:

                  • text/html:帶有html標記的文字型別。
                  • application/json:格式化的json文字型別。
                  • application/xml:格式化的xml文字型別。
                  • application/octet-stream:未知型別,預設表示為二進制的數據流型別。
                  • application/x-www-form-urlencoded:key=value型別的文字編碼方式。

                  # 4.1.3. GUID

                  property GUID: string;
                  
                  1

                    此處的GUID用來記錄在管理器界面選擇的RestAPI。

                  # 4.1.4. Headers

                  property Headers: TStringList;
                  
                  1

                    設定發送請求的請求頭的資訊。

                  # 4.1.5. Method

                  property Method: TRequestMethod;
                  
                  1

                    設定請求的發送方式。

                  • rmGET:以GET的方式發送請求。
                  • rmPOST:以POST的方式發送請求。
                  • rmDELETE:以DELETE的方式發送請求。
                  • rmPUT:以PUT的方式發送請求。

                  # 4.1.6. Params

                  property Params: TStringList;
                  
                  1

                    設定發送的請求中帶有的參數資訊。以key=value的方式設定,每行設定一個。此部分的參數在發送中會使用URL編碼的方式附加在URL後進行發送。

                    比如在Params中設定的參數為:

                  key1=value1
                  key2= value2
                  
                  1
                  2

                    請求的地址為http://192.168.1.1/,則在經過URL編碼后請求的地址形式如下:

                  http://192.168.1.1/?key1=value1&key2=value2
                  
                  1

                    在請求的Rest地址與第一個參數中間使用?分隔,其餘的參數與參數之間使用&進行分隔。

                  # 4.1.7. Script

                  property Script: TStringList;
                  
                  1

                    用於設定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}
                      ]
                  }
                  
                  1
                  2
                  3
                  4
                  5
                  6
                  7
                  8
                  9
                  10
                  11
                  12

                    如果我們要從中取出auth_token的值,在指令碼資訊中可以使用下述方式獲取:

                  方式一:寫路徑獲取

                  GETJSONString=$user.auth_token
                  
                  1

                  方式二:分層單步獲取

                  GETJSONString=$user
                  GETJSONString=auth_token
                  
                  1
                  2

                    如果是取特定陣列中的對象,使用以下方式來獲取:

                  陣列有名稱

                  GETJSONBool=status[0].ok
                  
                  1

                  陣列無名稱:陣列無名稱通常使用在起始的位置。表示方式如下:

                  [
                      {"bad": "AA"},
                      {"bad": "BB"}
                  ]
                  
                  1
                  2
                  3
                  4

                    上述寫法如下:

                  GETJSONString=[0].bad
                  
                  1

                    如果要取JSON中表示的各種數據型別的數值或者對象,使用下述方式:

                  文字型別

                  GETJSONString=$user.auth_token
                  
                  1

                  數值型別(返回型別為文字)

                  GETJSONNumber=$user.number
                  
                  1

                  整數

                  GETJSONInteger=$user.number
                  
                  1

                  浮點數

                  GETJSONFloat=$user.float
                  
                  1

                  布林值

                  GETJSONBool=$user.bool
                  
                  1

                  對像

                  GETJSONObject=$user
                  
                  1

                  陣列

                  GETJSONArray=status
                  
                  1

                  值對

                  GETJSONPair=$user
                  
                  1

                  # 4.1.8. Server

                  property Server: string;
                  
                  1

                    設定API廠商的服務地址,此服務地址可從API服務管理界面進行設定。

                  # 4.1.9. Url

                  property Url: string;
                  
                  1

                    設定處服務地址外的具體Url路徑資訊。首位不需要帶地址分隔符號。

                  # 4.2. 事件

                  # 4.2.1. ResultData

                  procedure UgRestApiResultData(sender: tobject;aresult: string);
                  
                  1

                    設定當接收到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;
                      }
                    }
                    
                    1
                    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;
                    
                    1
                    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

                    # 4.3. 方法

                    # 4.3.1. Send

                    procedure Send;
                    
                    1

                      設定發送請求。

                    # 4.3.2. Init

                    procedure Init(AGUID: string);
                    
                    1

                      設定對連線資訊初始化操作。AGUID表示為其連線使用的GUID欄位的名稱。通過引用后可將對應欄位的RestApi設定引入到界面中來。

                    # 5. TUgModbusTCPClient

                      該元件為ModbusTCP元件,用於與設備建立ModbusTCP連線。連線的發起是以FastWeb服務端為基準,不是以客戶端的方式呈現。

                    # 5.1. 屬性

                    屬性 功能說明
                    AutoConnect 是否進行自動連線
                    ConnectTimeOut 設定連線超時的時間
                    Host 指定一個Modbus設備的IP地址
                    Port 指定一個Modbus設備的埠號
                    ReadTimeOut 設定讀取超時的時間

                    # 5.1.1. Host

                    property Host: string;
                    
                    1

                      Host是指ModbusTCP設備的IP地址。如:192.168.1.100。

                      //JScript
                      UgModbusTCPClient01.Host = "192.168.1.100";
                      
                      1
                      2
                      //PasScript
                      UgModbusTCPClient01.Host := '192.168.1.100';
                      
                      1
                      2
                      // Make sure to add code blocks to your code group

                      # 5.1.2. Port

                      property Port: Word;
                      
                      1

                        Port是指ModbusTCP設備的埠號。預設502。

                        //JScript
                        UgModbusTCPClient01.Port = 502;
                        
                        1
                        2
                        //PasScript
                        UgModbusTCPClient01.Port := 502;
                        
                        1
                        2
                        // Make sure to add code blocks to your code group

                        # 5.2. 方法

                        # 5.2.1. Connect

                        procedure Connect;
                        
                        1

                          連線設備。

                          //JScript
                          UgModbusTCPClient01.Connect;
                          
                          1
                          2
                          //PasScript
                          UgModbusTCPClient01.Connect;
                          
                          1
                          2
                          // Make sure to add code blocks to your code group

                          # 5.2.2. ReadCoil

                          function ReadCoil(const RegNo: Word; out Value: Boolean): Boolean;
                          
                          1

                            讀取單個線圈暫存器的數值。

                            //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!");
                              }
                            }
                            
                            1
                            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;
                            
                            1
                            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

                            # 5.2.3. ReadCoils

                            function ReadCoils(const RegNo: Word; const Blocks: Word; out RegisterData: string): Boolean;
                            
                            1

                              讀取多個線圈暫存器的數值。

                              //JScript
                                var v;
                                UgModbusTCPClient01.ReadCoils(1,2,v);
                              
                              1
                              2
                              3
                              //PasScript
                              var
                                v:string;
                              begin
                                UgModbusTCPClient01.ReadCoils(1,2,v);
                              end;
                              
                              1
                              2
                              3
                              4
                              5
                              6
                              // Make sure to add code blocks to your code group

                              # 5.2.4. ReadHoldingRegister

                              function ReadHoldingRegister(const RegNo: Word; out Value: Word): Boolean;
                              
                              1

                                讀取單個保持暫存器的數值。

                                //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!");
                                  }
                                }
                                
                                1
                                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;
                                
                                1
                                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

                                # 5.2.5. ReadHoldingRegisters

                                function ReadHoldingRegisters(const RegNo: Word; const Blocks: Word; out RegisterData: string): Boolean;
                                
                                1

                                  讀取多個保持暫存器的數值。

                                說明: 讀取多個AO數位訊號輸出。

                                **返回值:**Boolean字元型。

                                • ReadHoldingRegisters函式語法中各部分說明
                                部分 說明
                                RegNo 開始位址
                                Blocks 資料長度
                                • 示例
                                  //JScript
                                    var v;
                                    UgModbusTCPClient01.ReadHoldingRegisters(1,4,v);
                                  
                                  1
                                  2
                                  3
                                  //PasScript
                                  var
                                    v:String;
                                  Begin
                                    UgModbusTCPClient01.ReadHoldingRegisters(1,4,v);
                                  End;
                                  
                                  1
                                  2
                                  3
                                  4
                                  5
                                  6
                                  // Make sure to add code blocks to your code group

                                  # 5.2.6. ReadInputRegister

                                  function ReadInputRegister(const RegNo: Word; out Value: Word): Boolean;
                                  
                                  1

                                    讀取單個輸入暫存器的數值。

                                    //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!");
                                      }
                                    }
                                    
                                    1
                                    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;
                                    
                                    1
                                    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

                                    # 5.2.7. ReadInputRegisters

                                    function ReadInputRegisters(const RegNo: Word; const Blocks: Word; var RegisterData: string): Boolean;
                                    
                                    1

                                      讀取多個輸入暫存器的數值。

                                      //JScript
                                        var v;
                                        UgModbusTCPClient01.ReadInputRegisters(1,2,v);
                                      
                                      1
                                      2
                                      3
                                      //PasScript
                                      var
                                        v:word;
                                      begin
                                        UgModbusTCPClient01.ReadInputRegisters(1,2,v);
                                      end;
                                      
                                      1
                                      2
                                      3
                                      4
                                      5
                                      6
                                      // Make sure to add code blocks to your code group

                                      # 5.2.8. WriteCoil

                                      function WriteCoil(const RegNo: Word; const Value: Boolean): Boolean;
                                      
                                      1

                                        寫入單個線圈暫存器的數值。

                                        //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!");
                                          }
                                        }
                                        
                                        1
                                        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;
                                        
                                        1
                                        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

                                        # 5.2.9. WriteCoils

                                        function WriteCoils(const RegNo: Word; const Blocks: Word; const RegisterData: string): Boolean;
                                        
                                        1

                                          寫入多個線圈暫存器的數值。

                                          //JScript
                                            var v,RegisterData;
                                            RegisterData := "1,0";//1代表True,0代表False
                                            v = UgModbusTCPClient01.WriteCoils(1,2,"1,0");
                                          
                                          1
                                          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;
                                          
                                          1
                                          2
                                          3
                                          4
                                          5
                                          6
                                          7
                                          8
                                          // Make sure to add code blocks to your code group

                                          # 5.2.10. WriteRegister

                                          function WriteRegister(const RegNo: Word; const Value: Word): Boolean;
                                          
                                          1

                                            寫入單個保持暫存器的數值。

                                            //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!");
                                              }
                                            
                                            1
                                            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;
                                            
                                            1
                                            2
                                            3
                                            4
                                            5
                                            6
                                            7
                                            8
                                            9
                                            10
                                            11
                                            12
                                            13
                                            14
                                            15
                                            // Make sure to add code blocks to your code group

                                            # 5.2.11. WriteRegisters

                                            function WriteRegisters(const RegNo: Word; const RegisterData: string; Modbus: TUgModbusTCPClient): Boolean;
                                            
                                            1

                                              寫入多個保持暫存器的數值。

                                              //JScript
                                                var v,RegisterData;
                                                RegisterData := "1,0";//指定1,0
                                                v = UgModbusTCPClient01.WriteRegisters(1,2,"1,0");
                                              
                                              1
                                              2
                                              3
                                              4
                                              //PasScript
                                              var
                                                v:boolean;
                                                RegisterData:string;
                                              begin
                                                  RegisterData := '1,0';//指定1,0
                                                  v := UgModbusTCPClient01.WriteRegisters(1,2,'1,0');
                                              end;
                                              
                                              1
                                              2
                                              3
                                              4
                                              5
                                              6
                                              7
                                              8
                                              // Make sure to add code blocks to your code group

                                              # 6. TUgMQTTClient

                                                MQTT是一個基於客戶端-伺服器的訊息發佈/訂閱傳輸協議。MQTT協議是輕量、簡單、開放和易於實現的,這些特點使它適用範圍非常廣泛。在很多情況下,包括受限的環境中,如:機器與機器(M2M)通訊和物聯網(IoT)。其在,通過衛星鏈路通訊感測器、偶爾撥號的醫療設備、智能家居、及一些小型化設備中已廣泛使用。

                                              # 6.1. 屬性

                                              屬性 功能說明
                                              BrokerHostName 是否自動開啟訂閱
                                              BrokerHostName 指定MQTT代理伺服器地址
                                              Port 指定MQTT代理伺服器端
                                              ClientID 指定客戶端標識
                                              Credentials 指定MQTTBroker的使用者登錄資訊

                                              # 6.1.1. BrokerHostName

                                              property BrokerHostName: string;
                                              
                                              1

                                                 指定MQTT代理伺服器地址。

                                              # 6.1.2. BrokerPort

                                              property BrokerPort: Integer;
                                              
                                              1

                                                 指定MQTT代理伺服器端。

                                              # 6.1.3. ClientID

                                              property ClientID:string read FClientID write SetClientID;
                                              
                                              1

                                                 指定客戶端標識。

                                              # 6.2. 事件

                                              事件 何時觸發
                                              OnPublishRecerivedA 當發佈訊息返回時觸發該事件

                                              # 6.2.1. OnPublishReceivedA事件

                                              procedure UgMQTTClient01OnPublishReceivedA(asender: tobject;apacketid: word;atopic: string;apayload: string);
                                              
                                              1

                                              atopic表示為接收到訂閱訊息的主題名稱,apayload表示為接收到訂閱訊息的主題內容。

                                              # 6.3. 方法

                                              方法 功能說明
                                              Connect 連線MQTTBroker
                                              Disconnect 斷開與MQTTBroker的連線
                                              Subscribe 主題訂閱
                                              Unsubscribe 取消主題訂閱
                                              PublishStr 推送主題訊息(字串)
                                              PublishByte 推送主題訊息 (位元組)

                                              # 6.3.1. Connect

                                              procedure Connect;
                                              
                                              1

                                                啟動與MQTTBroker的連線。

                                              UgMQTTClient01.Connect;
                                              
                                              1

                                              # 6.3.2. Disconnect

                                              procedure Disconnect;
                                              
                                              1

                                                斷開與MQTTBroker的連線。

                                              UgMQTTClient01.Disconnect;
                                              
                                              1

                                              # 6.3.3. Subscribe

                                              function Subscribe(ATopic: string): Word;
                                              
                                              1

                                              說明: MQTT 訂閱主題 返回值: Word型別

                                              • Subscribe函式語法中各部分說明
                                              部分 說明
                                              ATopic 主題內容
                                              • 示例
                                                //JScript
                                                 //訂閱LED主題
                                                 UgMQTTClient01.Subscribe("LED");
                                                
                                                1
                                                2
                                                3
                                                //PasScript
                                                 //訂閱LED主題
                                                 UgMQTTClient01.Subscribe('LED');
                                                
                                                1
                                                2
                                                3
                                                // Make sure to add code blocks to your code group

                                                # 6.3.4. UnSubscribe

                                                function Unsubscribe(ATopic: string): Word;
                                                
                                                1

                                                說明: 註銷MQTT主題 返回值: Word型別

                                                • MQTTUnSubscribe函式語法中各部分說明
                                                部分 說明
                                                ATopic 主題內容
                                                • 示例
                                                  //JScript
                                                  //註銷LED主題
                                                  UgMQTTClient01.UnSubscribe("LED");
                                                  
                                                  1
                                                  2
                                                  3
                                                  //PasScript
                                                  //註銷LED主題
                                                  UgMQTTClient01.UnSubscribe('LED');
                                                  
                                                  1
                                                  2
                                                  3
                                                  // Make sure to add code blocks to your code group

                                                  # 6.3.5. Publish

                                                  function Publish(ATopic: string; APayload: string): Word;
                                                  
                                                  1

                                                  說明: MQTT推送訊息 返回值: Word型別

                                                  • MQTTPublish函式語法中各部分說明
                                                  部分 說明
                                                  ATopic 主題內容
                                                  APayload 推送的內容
                                                  • 示例
                                                    //JScript
                                                    //熄滅LED
                                                    UgMQTTClient01.Publish("LED","0");
                                                    
                                                    1
                                                    2
                                                    3
                                                    //PasScript
                                                    //熄滅LED
                                                    UgMQTTClient01.Publish('LED','0');
                                                    
                                                    1
                                                    2
                                                    3
                                                    // Make sure to add code blocks to your code group

                                                    # 7. TUgAppMQTTws

                                                      該元件為MQTT客戶端的WebSocket實現,與TUgAppMQTTClient實現的功能相同,區別在於TUgAppMQTTws是通過瀏覽器端直接與MQTT Broker建立連線,無需經過FastWeb伺服器中轉,可以縮短顯示響應的時間。

                                                    # 7.1. 屬性

                                                    屬性 功能說明
                                                    MQTTOptions 設定MQTT的相關選項
                                                      CleanSession 是否保持乾淨連線
                                                      ClientID 設定客戶端ID,該ID與連線中的客戶端ID不能重複
                                                      HostName MQTT Broker的連線地址
                                                      Password 設定連線到MQTT Broker的密碼
                                                      Port 設定MQTT Broker WebSocket連線的埠號
                                                      SSL 是否啟用SSL加密連線
                                                      Topic 設定預設的訂閱主題
                                                      UserName 設定連線MQTT Broker的使用者名稱稱

                                                    # 7.2. 事件

                                                    事件 何時觸發
                                                    OnConnect 當控制元件連線到MQTT Broker時觸發該事件
                                                    OnMessage 當控制元件接收到訂閱主題的資訊時觸發該事件
                                                    OnConnectionLost 當控制元件失去與MQTT Broker的連線時觸發該事件

                                                    # 7.2.1. OnConnect

                                                    procedure ugAppMQTTws01OnConnect(const amessage: string);
                                                    
                                                    1

                                                      當控制元件連線到MQTT Broker時觸發該事件,其中的amessage包含連線結果的相關資訊。

                                                    # 7.2.2. OnMessage

                                                    procedure ugAppMQTTws01OnMessage(const atopic: string;apayload: string);
                                                    
                                                    1

                                                      當控制元件接收到指定訂閱主題的資訊時觸發該事件,其中的atopic為訂閱的主題名稱,只有在客戶端訂閱了該主題后才能接收到該主題下的訂閱資訊。apayload為訂閱主題的資訊內容。

                                                    # 7.2.3. OnConnectionLost

                                                    procedure ugAppMQTTws01OnConnectionLost(const amessage: string);
                                                    
                                                    1

                                                      當控制元件與MQTT Broker的連線丟失時觸發該事件,其中的amessage包含連線丟失的相關資訊。

                                                    # 7.3. 方法

                                                    # 7.3.1. SubScribe

                                                    procedure Subscribe(ATopic: string);
                                                    
                                                    1

                                                      呼叫該方法,使控制元件訂閱主題資訊。注意在程式啟動時訂閱的資訊需要在MQTTOptions.Topic屬性中定義,在指令碼中定義的程式啟動時訂閱主題的方法是無效的。ATopic為主題名稱。

                                                      //JScript
                                                      ugAppMQTTws01.SubScribe("LED");
                                                      
                                                      1
                                                      2
                                                      //PasScript
                                                      ugAppMQTTws01.SubScribe('LED');
                                                      
                                                      1
                                                      2
                                                      // Make sure to add code blocks to your code group

                                                      # 7.3.2. UnSubScribe

                                                      procedure Unsubscribe(ATopic: string);
                                                      
                                                      1

                                                        呼叫該方法,使控制元件取消訂閱該主題。ATopic為主題名稱。

                                                        //JScript
                                                        ugAppMQTTws01.UnSubScribe("LED");
                                                        
                                                        1
                                                        2
                                                        //PasScript
                                                        ugAppMQTTws01.UnSubScribe('LED');
                                                        
                                                        1
                                                        2
                                                        // Make sure to add code blocks to your code group

                                                        # 7.3.3. Publish

                                                        procedure Publish(ATopic: string; APayload: string);
                                                        
                                                        1

                                                          呼叫該方法,控制元件向指定主題發佈資訊。ATopic為主題名稱,APayload為主題內容。

                                                          //JScript
                                                          ugAppMQTTws01.Publish("LED","0");
                                                          
                                                          1
                                                          2
                                                          //PasScript
                                                          ugAppMQTTws01.Publish('LED','0');
                                                          
                                                          1
                                                          2
                                                          // Make sure to add code blocks to your code group
                                                          資料庫控制元件
                                                          伺服器控制元件

                                                          ← 資料庫控制元件 伺服器控制元件→

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