天天看點

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

1、MQTT簡介

MQTT是一種基于釋出/訂閱模式的“輕量級”通訊協定。它是針對受限的、低帶寬的、高延遲的、網絡不可靠的環境下的網絡通訊裝置設計的。

釋出是指用戶端将消息傳遞給伺服器,訂閱是指用戶端接收伺服器推送的消息。每個消息有一個主題,包含若幹個資料。用戶端A釋出某主題的消息後,用戶端B通過訂閱該主題的消息,即可擷取該主題消息的所有資料。在本應用中,TPC為用戶端。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

消息中的資料與TPC的裝置通道相連,實作伺服器與TPC之間的資料交換。資料連接配接通道後,再經由通道連接配接到實時資料庫中的資料對象(變量),進而被畫面和政策所使用。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

2、MQTT使用

QTT_STD驅動用于使用戶端通過MQTT協定向特定伺服器釋出或訂閱消息。要實作消息的釋出和訂閱,首先需要使用者自行搭建好伺服器,再将伺服器的資訊,輸入MQTT_STD驅動屬性配置界面。

本樣例以MQTT_STD驅動與本地伺服器的通訊為例進行介紹。

2.1 、驅動屬性配置

随本文檔打包的方案包中自帶已配置好的本地伺服器。伺服器IP位址為127.0.0.1,端口号為1883,無使用者名、使用者密碼等。稍後的設定需要使用到伺服器IP位址和端口号。

使用McgsPro軟體建立工程——裝置視窗,添加MQTT_STD驅動,如下圖所示。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

進入“MQTT用戶端屬性配置”界面,步驟如下圖所示。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

在“MQTT用戶端屬性配置”界面的“一般屬性”功能頁,輸入伺服器IP、伺服器端口号等資訊,以實作用戶端和伺服器的連接配接。

本樣例設定伺服器IP為127.0.0.1,服務端口為1883,其他設定保持預設即可。本地IP和端口為空,則驅動不綁定本地IP位址和端口,否則驅動在連接配接服務之前會綁定本地IP位址。如果使用者需要設定使用者名和使用者密碼,需要勾選界面的“驗證”複選框才會出現對應的設定界面。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

2.3、消息釋出/訂閱

配置完用戶端屬性後,用戶端TPC就可以和伺服器正常連通了,但若想實作消息的釋出和訂閱,還需要進一步的配置。

1)配置釋出、訂閱頁籤

首先在MCGS中找到釋出和訂閱頁籤。

釋出頁籤用于編輯釋出消息的消息清單,使用者可在此處對釋出消息進行添加、編輯、删除、清空等操作。

需要添加釋出的消息時,将滑鼠置于清單視圖上,使用右鍵打開快捷菜單,點選“添加釋出主題”進入“釋出消息”配置界面。配置完成後,也可通過右鍵菜單的“編輯釋出主題”或直接輕按兩下需要修改的主題名進入主題設定界面。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

訂閱頁籤用于編輯訂閱消息的消息清單,使用者可在此處對訂閱消息進行添加、編輯、删除、清空等操作。

需要添加訂閱的消息時,将滑鼠置于清單視圖上,使用右鍵打開快捷菜單,點選“添加訂閱主題”進入“訂閱消息”配置界面。配置完成後,也可通過右鍵菜單的“編輯釋出主題”或直接輕按兩下需要修改的主題名進入主題設定界面。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

2)釋出/訂閱消息屬性配置界面

在釋出消息屬性配置界面可以設定消息的主題名、主題别名、傳輸品質、消息格式、觸發方式以及消息編輯等。

其中,“觸發方式”隻有釋出消息配置界面才有,用于指定消息釋出的觸發方式,支援變數觸發和所有報警觸發兩種方式。

本例設定主題名為“/test”,主題别名為“sample”,其他設定保持預設不變。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

在訂閱消息屬性配置界面可以設定消息的主題名、主題别名、傳輸品質、消息格式以及消息編輯等。訂閱消息沒有觸發方式選項。

本例設定主題名為“/test”,主題别名為“sample”,其他設定保持預設不變。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

“主題名稱說明”中的内容,不是必須出現在主題名稱中的,僅需要時才使用。使用方法以“%1”為例,它代表用戶端ID。将主題名稱設定為“/%1/test”,而前面“mqtt用戶端屬性配置”頁面中的用戶端ID為“mqtt_client”,則相當于此時主題名稱為“/mqtt_client/test”。

3)消息編輯

點選“消息編輯”按鈕進入消息編輯界面。

消息編輯界面主要用于編輯消息的資料結構。消息節點可以為對象、數組或普通資料,普通資料可放置在對象或數組之下,對象或數組可以互相嵌套。此處使用到的資料格式為JSON,JSON簡介可參考文檔《JSON格式簡介》(随本說明文檔一起打包提供)。

資料結構的編輯方式為從“資料類型選擇器”視窗将對應的資料類型拖拽到“消息定義視窗”的指定節點。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

右擊可對消息節點進行編輯(消息節點名稱、類型等)、删除等操作。完成節點編輯後,“JSON格式浏覽”視窗會顯示目前結構對應的JSON格式。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

同時,也可以單擊“啟用逆向”,将在外部文本編輯器中編輯好的的JSON格式内容粘貼到JSON格式浏覽框中,單擊逆向生成即可從JSON格式生成對應的消息結構。注意,生成的結構的節點資料類型可能與使用者預期的格式存在差異。這時需要在消息定義視窗右鍵修改節點的資料類型。

設定訂閱消息的方法和設定釋出消息的方法相同。

設定完成後,頁籤清單中出現剛才定義的消息。點選儲存按鈕儲存配置并退出配置界面。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

由于本例中釋出和訂閱的主題及消息的設定相同,是以工程在本地模拟運作後,用戶端将訂閱到本機釋出的消息。設定為相同僅為本例示範需求,使用者使用時,根據自己的需求設定即可。

3)驅動通道

配置完消息的釋出和訂閱後,驅動根據客戶的配置自動生成三種通道:訂閱資料通道、釋出資料通道和釋出觸發通道。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

a.訂閱資料通道

訂閱資料通道的通道名以“subscribe”開頭,主要用于客戶訂閱相關主題消息資料,使用者通過關聯資料變量接收資料包中的各個資料。

b.釋出資料通道

釋出資料通道的通道名以“publish”開頭,主要用于客戶關聯要釋出的資料變量,與要釋出的消息資料相關。

c.釋出觸發通道

釋出觸發通道的通道名以“trigger”開頭,主要用于客戶釋出消息使能。如果主題觸發方式配置為變數觸發,那麼一旦觸發通道所關聯變量的值發生改變即可觸發一條資料釋出。如果主題觸發方式配置為報警觸發,那麼觸發通道所關聯變量的值符合報警條件即可釋出一條資料。

将通道連接配接變量以便使用。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

4)組态畫面

為了直覺的觀察到用戶端釋出和訂閱的效果,我們組态一個簡單的視窗畫面來顯示資料。

a.首先進入使用者視窗。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

b.然後組态一個簡單的畫面用以顯示變量的值。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

3、 MQTT調試

3.1、 資料的釋出和訂閱

想要測試工程資料的釋出和訂閱情況,可以使用随本說明文檔一起打包提供的本地伺服器進行測試。

1)啟動本地伺服器:進入随本文檔一起打包提供的檔案夾“MQTT本地伺服器”,輕按兩下server.bat啟動本地MQTT伺服器。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

2)啟動本地用戶端:模拟運作剛才組态好的McgsPro工程。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

3)釋出資料:在關聯變量“p_df”的輸入框中輸入需要的數值,如66,然後點選按鈕觸發資料的釋出。

4)訂閱資料:由于本例中釋出和訂閱的主題及消息的設定相同,是以會訂閱到本機釋出的消息。此時,“s_df”輸入框顯示66,表示訂閱成功。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

3.2、 資料包檢視

想要檢視釋出出來的消息資料包,可以使用mqtt.fx軟體(随本說明文檔一起打包提供)。

設定mqtt.fx參數:安裝mqtt.fx軟體,運作軟體後設定伺服器的IP位址和端口号等參數。本例僅需設定伺服器IP位址為127.0.0.1,服務端口為1883即可。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

2)連接配接伺服器。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

3)檢視用戶端釋出的消息。訂閱對應主題後,使用McgsPro模拟工程釋出一條消息,就可以從mqtt.fx檢視到用戶端釋出的消息。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

4)使用mqtt.fx也可釋出消息,可以将Subscribe收到的消息複制到Publish界面,修改對應資料的值後釋出給模拟工程,模拟工程收到消息後也會更新資料顯示。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

能使用mqtt.fx軟體訂閱和釋出模拟工程對應主題的消息,則表示工程組态正确。

3.3、 遠端伺服器驗證

也可以使用mqtt.fx軟體驗證遠端伺服器是否部署正确,隻需要将設定界面中的伺服器通信參數設定為遠端伺服器的參數,即可對遠端伺服器進行釋出和訂閱測試。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

2)開啟訂閱

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

3)釋出消息

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

4)檢視消息:檢視是否訂閱到釋出的消息,若成功則證明伺服器正常,不成功則檢查伺服器。

【觸摸屏功能測試】MQTT_STD本地調試說明-測試記錄

繼續閱讀