FreeMASTER 是一個(gè)界面友好的,可用于實(shí)時(shí)觀察目標(biāo)系統(tǒng)中變量?jī)?nèi)容的數(shù)據(jù)可視化軟件。可以通過(guò)多種通信方式將 PC 機(jī)和微控制器電路板連接,實(shí)時(shí)捕獲和配置微控制器中(存放變量)的內(nèi)存信息,并顯示在 PC 機(jī)的軟件窗口中。
FreeMASTER 軟件最早用于汽車電子相關(guān)的軟件開(kāi)發(fā)中,后被廣泛應(yīng)用在多種開(kāi)發(fā)環(huán)境,用以提供友好的人機(jī)交互界面。
從筆者的開(kāi)發(fā)經(jīng)歷中,特別是分析例如觸摸感應(yīng)等模擬傳感器信號(hào)時(shí),常用 FreeMASTER 實(shí)現(xiàn)一個(gè)簡(jiǎn)易的示波器,將單片機(jī)中實(shí)時(shí)采集的傳感器信息繪制成時(shí)域曲線,顯示在電腦界面上,從而便于分析數(shù)據(jù),尋找其中的變化規(guī)律,進(jìn)而提取特征信息用于特定的模式匹配。在進(jìn)行最近比較火熱的嵌入式 AI 開(kāi)發(fā),在海量的數(shù)據(jù)處理過(guò)程中,通過(guò) FreeMASTER 的可視化界面,監(jiān)控計(jì)算過(guò)程中間某些關(guān)鍵變量的變化過(guò)程,簡(jiǎn)直不要太方便了,就是在給領(lǐng)導(dǎo)和客戶演示的時(shí)候也是逼格滿滿 .
筆者之前在本公眾號(hào)中,發(fā)表過(guò)一篇關(guān)于基本使用 FreeMASTER 的短文,可以幫助嵌入式工程師在 5 分鐘內(nèi)上手使用 FreeMASTER v2.0 工具,見(jiàn): 使用 FreeMASTER 捕獲采樣記錄并導(dǎo)出重現(xiàn)曲線。
近期,NXP 官方發(fā)布了 FreeMASTER v3.0,據(jù)說(shuō)進(jìn)行了很大的更新,在本文中,筆者對(duì)新版本的 FreeMASTER 進(jìn)行了試用,并同大家分享使用體驗(yàn)。
安裝過(guò)程
在下載頁(yè)面中還能看到,官網(wǎng)仍然開(kāi)放了歷史版本 v2.0 和 v2.5 的下載鏈接。筆者常用的是 v2.0 版本。
比較驚喜的是,F(xiàn)reeMASTER 終于開(kāi)始能夠跨平臺(tái)了,本次更新提供了 Linux 系統(tǒng)的安裝包。但是根據(jù)說(shuō)明,在 Linux 上只支持 FreeMASTER Lite 服務(wù)和相關(guān)的文檔,大家熟悉的桌面版沒(méi)有提供 Linux 平臺(tái)的支持。
從安裝包的大小來(lái)看,新版的安裝包整整增大了一個(gè)數(shù)量級(jí),從 v2.x 的 40MB 左右,一下子劇增到近 300MB,筆者不禁腦補(bǔ)了一下,最近到底給它喂了些什么。
安裝
下載之后雙擊安裝包安裝。安裝過(guò)程也是全新的,用了 InstallAnywhere 打包工具對(duì)整個(gè)軟件包進(jìn)行打包。界面看起來(lái)更可愛(ài)一些,但略顯簡(jiǎn)單。筆者作為一個(gè)資深的嵌入式系統(tǒng)工程師,還是更喜歡之前版本使用 InstallShell 打包工具簡(jiǎn)潔干練的工業(yè)風(fēng)。
這里特別注意,在安裝過(guò)程中,如果不是明確需要使用"FreeMASTER Lite 服務(wù)",而只是使用原有大家熟悉的使用 FreeMASTER 桌面版提供的功能,可以在安裝過(guò)程中勾選掉相關(guān)的選項(xiàng)。否則會(huì)需要提供專門的激活碼 .
一開(kāi)始安裝的時(shí)候由于疏忽跳過(guò)了激活碼,由于不知道怎樣獲得"激活碼",本打算先安裝試用部分功能,但沒(méi)想到?jīng)]有激活碼竟然直接回滾安裝,F(xiàn)reeMASTER 的基本功能也被卸載了。后來(lái)詢問(wèn)其它同事才知道,這個(gè)激活碼是在安裝過(guò)程中自動(dòng)創(chuàng)建申請(qǐng)的,最關(guān)鍵的,它是免費(fèi)的。然后筆者重新安裝,注意到了安裝過(guò)程中的一個(gè)頁(yè)面的一段說(shuō)明:
之前安裝到這個(gè)步驟的時(shí)候,自動(dòng)彈出了一個(gè)網(wǎng)頁(yè),但是被筆者想當(dāng)然地給關(guān)掉了。
現(xiàn)在看來(lái)是自動(dòng)發(fā)出的申請(qǐng)激活碼的請(qǐng)求。但之前戳"NO"的時(shí)候直接回滾了整個(gè)安裝,這次選"YES"。
彈出網(wǎng)絡(luò)瀏覽器并訪問(wèn) NXP 官網(wǎng),需要 NXP 注冊(cè)賬戶授權(quán),然后在網(wǎng)頁(yè)中確認(rèn)軟件使用許可聲明。
最后獲得激活碼。
PS: 筆者仔細(xì)閱讀了一下這個(gè)激活碼的回單,發(fā)現(xiàn)激活碼是根據(jù) PC 的某種"機(jī)器識(shí)別碼"生成的,也就是說(shuō),它是綁定在 PC 上的。好吧,反正是 free 的,如果換臺(tái)電腦就再申請(qǐng)一次就好。
后續(xù)的安裝還出現(xiàn)了不少提示說(shuō)重復(fù)復(fù)制文件的問(wèn)題,這可能是使用新的部署工具沒(méi)有處理好文件的解壓順序?qū)е碌模挥绊懽罱K的安裝功能。另外,安裝過(guò)程后來(lái)還是通過(guò)網(wǎng)絡(luò)執(zhí)行了一遍在線激活過(guò)程。
安裝之后查了一下安裝根目錄,再一次被驚呆了,F(xiàn)reeMASTER 竟然專門包含了一個(gè) JRE(Jave 運(yùn)行時(shí)環(huán)境),不必自行匹配相應(yīng)的軟件版本了。
特別注意,如果需要安裝 FreeMASTER Lite 功能,必須確保電腦已經(jīng)聯(lián)網(wǎng),并且能夠順利訪問(wèn)到 nxp.com 的官網(wǎng)。
試用
從 pmp 到 pmpx
按照筆者們對(duì)已經(jīng)熟悉的老版本 FreeMASTER 的使用步驟,創(chuàng)建工程,導(dǎo)入 MCU 端的可執(zhí)行文件解析符號(hào)表,根據(jù)符號(hào)表項(xiàng)創(chuàng)建變量,創(chuàng)建示波器頁(yè)面,在示波器頁(yè)面中加載變量,開(kāi)始采樣。一頓操作猛如虎,最終正常工作。這說(shuō)明新版本確實(shí)是能做到兼容老版本用戶的使用習(xí)慣。
筆者注意到,v3.0 版本創(chuàng)建工程的擴(kuò)展名是".pmpx",而不是原來(lái)的".pmp",多了一個(gè)"x"。難道這是學(xué)了 MS Office 套件升級(jí)文件擴(kuò)展名的思路? 筆者用 sublime text 打開(kāi)工程文件查看其源代碼,果不其然,新版本的工程文件已經(jīng)換用可讀的 xml 檔案組織格式了,而老版本的工程文件是無(wú)法查看源代碼的。這就意味著,在使用新版本的 FreeMASTER 時(shí),可以以修改源文件的方式精細(xì)配置工程,這對(duì)于開(kāi)發(fā)工程師來(lái)講絕對(duì)是一個(gè)"有良心"的設(shè)計(jì)。
另外,筆者還試著在新版的軟件窗口中導(dǎo)入原有二進(jìn)制編碼的 pmp 工程文件,同老版使用完全一樣,無(wú)縫完全兼容。看來(lái) FreeMASTER 的開(kāi)發(fā)人員在歷史兼容性上下了很大的工夫。(實(shí)際上這個(gè)變更在 v2.5 中就已經(jīng)實(shí)現(xiàn)了).
ActiveX 控件
FreeMASTER 的 ActionX 控件應(yīng)該是它在基本功能外的另一個(gè)亮點(diǎn)。ActiveX 控件是 Microsoft Windows 系統(tǒng)中的應(yīng)用功能擴(kuò)展庫(kù),可用于互聯(lián)網(wǎng)的很小的程序,有時(shí)稱為插件程序。
通過(guò)使用 ActiveX 控件,在 FreeMASTER 運(yùn)行框架下,可以使用網(wǎng)頁(yè)作為界面,訪問(wèn)到單片機(jī)中內(nèi)存中的變量。FreeMASTER 的 ActiveX 控件僅提供面向電路板的內(nèi)存訪問(wèn)服務(wù),而網(wǎng)頁(yè) UI 的呈現(xiàn)則完全由用戶自由發(fā)揮,這就為創(chuàng)建豐富的 UI 創(chuàng)造了靈活的平臺(tái)。
雖然 FreeMASTER 的手冊(cè)中幾乎沒(méi)有提到如何將 ActiveX 控件用于用戶產(chǎn)品設(shè)計(jì)的說(shuō)明,但憑借筆者極強(qiáng)的想象力,還是摸索出一套可行的用法。
實(shí)際上,F(xiàn)reeMASTER 安裝包中提供了一個(gè)通過(guò) JavaScript 在 htm 網(wǎng)頁(yè)中調(diào)用 ActiveX 控件的例子。位于"FreeMASTER 3.0/FreeMASTER/examples/scripting/JavaScript-ActiveX"目錄下的"example.htm"文件。但是為了把這個(gè)代碼運(yùn)行起來(lái),需要一波神操作。
首先,從 MCUXpresso SDK 中導(dǎo)出一個(gè) hello_world 工程(基于 lpcxpresso55s69 開(kāi)發(fā)套件),之后在源代碼中創(chuàng)建全局變量"var16","var16inc"及"arr16"并確保它們不會(huì)被編譯器的自動(dòng)優(yōu)化掉。
volatile uint16_t var16 = 0u;
volatile uint16_t var16inc = 0;
volatile uint16_t arr16[10] = {0,1,2,3,4,5,6,7,8,9};
復(fù)制代碼
之后編譯下載工程工程到開(kāi)發(fā)板。
然后就是 FreeMASTER 的操作了。創(chuàng)建 FreeMASTER 工程,導(dǎo)入之前編譯好的可執(zhí)行程序文件,之后在 FreeMASTER 中創(chuàng)建對(duì)應(yīng)的"var16","var16inc"及"arr16"變量。將 FreeMASTER 安裝目錄下的"example.htm"文件復(fù)制到新創(chuàng)建的 FreeMASTER 用戶工程目錄下,然后在 FreeMASTER 工程中引用這個(gè)文件:
此時(shí),可以看到網(wǎng)頁(yè)上有一些按鈕和一些內(nèi)容框,試著戳了幾下,會(huì)報(bào)錯(cuò),顯示沒(méi)有有效連接。
此時(shí),啟動(dòng) FreeMASTER 工程,按這些按鈕,就能讀到和寫入位于單片機(jī)內(nèi)存中的變量了。
查看"example.htm"文件的源代碼可以看到 FreeMASTER 的 ActiveX 讀寫遠(yuǎn)程變量基本函數(shù)的用法:
function read_variable(name,span_id)
{
/* ReadVariable uses FreeMASTER variable object from current project。Use
* ReadUIntVariable to access the memory directly using a symbol name。*/
if(pcm.ReadVariable(name))
document.getElementById(span_id).innerHTML = pcm.LastVariable_vValue;
else
on_error("Error when reading variable " + name + "。" + pcm.LastRetMsg);
}
function write_variable(name,input_id)
{
var val = document.getElementById(input_id).value;
/* WriteVariable uses FreeMASTER variable object from current project。Use
* WriteUIntVariable to access the memory directly using a symbol name。*/
if(pcm.WriteVariable(name,val))
document.getElementById("status").innerHTML = "Write of the " + name + " succeeded.";
else
on_error("Error when writting variable " + name + "。" + pcm.LastRetMsg);
}
復(fù)制代碼
JSON-PRC 輕量級(jí)遠(yuǎn)程調(diào)用協(xié)議
這里暫時(shí)略過(guò)對(duì) JSON-PRC 協(xié)議的介紹。從實(shí)用角度看,它是用于替換 ActiveX 的,同樣能夠提供從網(wǎng)頁(yè)到電路板的訪問(wèn)服務(wù)。
在新版 FreeMASTER 的手冊(cè)中,將 JSON-PRC 稱之為一種"現(xiàn)代的"技術(shù),特別要配合 Chromium 引擎使用。而 Chromium 引擎就是 Google 旗下大名鼎鼎的 Chrome 瀏覽器使用的內(nèi)核。相對(duì)應(yīng)地,ActiveX 對(duì)應(yīng)使用的是 Microsoft IE 瀏覽器技術(shù)。
同 ActiveX 相似,F(xiàn)reeMASTER 的安裝目錄中也有 JSON-PRC 的樣例代碼,位于"FreeMASTER 3.0/FreeMASTER/examples/scripting/JavaScript-JSON-RPC"目錄下。
將這個(gè)目錄整個(gè)復(fù)制到新創(chuàng)建的 FreeMASTER 工程目錄下。之后在 FreeMASTER 工程中創(chuàng)建一個(gè)新的頁(yè)面"JS-JSON-PRC"并引用 JSON-PRC 版本的"example.htm"網(wǎng)頁(yè)文件。此時(shí)啟動(dòng) FreeMASTER 工程后會(huì)報(bào)錯(cuò),因?yàn)槿鄙僖粋€(gè)關(guān)鍵的步驟。
將 FreeMASTER 工程的網(wǎng)頁(yè)解釋器換成 Chromium 引擎。選中"project" -> "option",在"option"對(duì)話框中,選中"使用 Chromium 引擎"的選項(xiàng)。注意,切換到 Chromium 引擎后,基于 IE 的 ActiveX 控件就不能使用了。
此時(shí)再啟動(dòng) FreeMASTER 工程,就能看到之前使用 ActiveX 控件實(shí)現(xiàn)的操作單片機(jī)內(nèi)存變量的網(wǎng)頁(yè), 戳戳看也能正常讀寫內(nèi)存了。從功能上看,使用 Chromium 引擎實(shí)現(xiàn)的網(wǎng)頁(yè)同之前使用 ActiveX 幾乎完全一樣,但是顯示效果看起來(lái)好很多,字體比較圓潤(rùn)。考慮到 Chromium 引擎已經(jīng)成為眾多流行瀏覽器內(nèi)核的事實(shí),F(xiàn)reeMASTER 在技術(shù)上需要與時(shí)俱進(jìn),這可能也是 v3.0 的設(shè)計(jì)初衷吧。
看一下 JSON-PRC 版的示例網(wǎng)頁(yè)源碼,可以看到在 javascript 腳本部分引用的關(guān)鍵組件:
復(fù)制代碼
這是同 ActiveX 方式的關(guān)鍵區(qū)別,對(duì)應(yīng)地,在 ActiveX 版的樣例代碼中,在網(wǎng)頁(yè)顯示部分引用了 ActiveX 組件:
復(fù)制代碼
當(dāng)然,對(duì)變量讀寫函數(shù)的使用方式上也有一些不同:
function read_variable(name,span_id)
{
/* ReadVariable uses FreeMASTER variable object from current project。Use
* ReadUIntVariable to access the memory directly using a symbol name。*/
return pcm.ReadVariable(name)
.then((value) => {
document.getElementById(span_id).innerHTML = value.data;
})
.catch((err) => {
on_error(err.msg);
});
}
function write_variable(name,input_id)
{
var val = document.getElementById(input_id).value;
/* WriteVariable uses FreeMASTER variable object from current project。Use
* WriteUIntVariable to access the memory directly using a symbol name。*/
pcm.WriteVariable(name,val)
.then(() => {
document.getElementById("status").innerHTML = "Write of the " + name + " succeeded.";
})
.catch((err) => {
on_error(err.msg);
});
}
復(fù)制代碼
FreeMASTER Lite 服務(wù)
FreeMASTER Lite 是 v3.0 新增的獨(dú)立組件,用于脫離經(jīng)典的 FreeMASTER 框架提供從桌面到電路板的數(shù)據(jù)訪問(wèn)。
實(shí)際上,這幾乎是一個(gè)并列于 FreeMASTER 桌面版的全新軟件包。它以"服務(wù)"的形式運(yùn)行在系統(tǒng)后臺(tái),提供了 JSON-PRC 接口用于訪問(wèn)遠(yuǎn)程連接的電路板。就像大多數(shù)操作系統(tǒng)服務(wù)的運(yùn)行方式一樣,F(xiàn)reeMASTER Lite 沒(méi)有用戶窗口,通過(guò)命令行和配置文件傳入?yún)?shù)。根據(jù)手冊(cè)的描述,F(xiàn)reeMASTER Lite 在操作系統(tǒng)中像一個(gè)標(biāo)準(zhǔn)的網(wǎng)頁(yè)服務(wù)器一樣,一方面同遠(yuǎn)程的電路板交互,另一方面可以接收來(lái)自 python 或者 node.js 腳本中的請(qǐng)求。
由于時(shí)間關(guān)系,筆者還沒(méi)有仔細(xì)研究如何使用這個(gè) FreeMASTER Lite 的功能,以后有時(shí)間再做介紹。
總結(jié)
FreeMASTER v3.0 兼容了經(jīng)典 FreeMASTER 的所有功能,新增了 Chromium 引擎和 JSON-PRC 協(xié)議組件,用于作為 IE 引擎和 ActiveX 的換代產(chǎn)品。首次引入了 FreeMASTER Lite 軟件包,用于提供命令行版本的連接 PC 機(jī)網(wǎng)頁(yè)和電路板的服務(wù)。
新版的 FreeMASTER 定位于提供運(yùn)行某些新的 FreeMASTER 應(yīng)用工程的運(yùn)行時(shí)環(huán)境,而沒(méi)打算讓用戶在這個(gè)平臺(tái)上進(jìn)行二次開(kāi)發(fā),設(shè)計(jì)自己的 FreeMASTER 應(yīng)用工程。
經(jīng)過(guò)試用,筆者個(gè)人建議,經(jīng)典 FreeMASTER 用戶不用著急遷移到新平臺(tái)上。如果你一定想使用 Chromium 引擎,在你的 UI 界面中增加一些炫酷的特效,那么可以試試桌面版的 FreeMASTER v3.0。
如果只是簡(jiǎn)單地使用一個(gè)數(shù)據(jù)可視化的工具,v2.5 仍是目前的最佳選擇。(沒(méi)錯(cuò),借著試用 v3.0 的興致,筆者也試用了 v2.5,然后決定把用了多年的 v2.0 更新到 v2.5 版本)。
審核編輯 黃昊宇
-
數(shù)據(jù)可視化
+關(guān)注
關(guān)注
0文章
475瀏覽量
10703
發(fā)布評(píng)論請(qǐng)先 登錄
工業(yè)設(shè)備數(shù)據(jù)集中監(jiān)控可視化管理平臺(tái)是什么
可視化組態(tài)物聯(lián)網(wǎng)平臺(tái)是什么
VirtualLab Fusion應(yīng)用:光波導(dǎo)k域布局可視化(“神奇的圓環(huán)”)
Power Integrations發(fā)布MotorXpert? v3.0軟件
七款經(jīng)久不衰的數(shù)據(jù)可視化工具!
什么是大屏數(shù)據(jù)可視化?特點(diǎn)有哪些?
Minitab 數(shù)據(jù)可視化技巧
智慧能源可視化監(jiān)管平臺(tái)——助力可視化能源數(shù)據(jù)管理

智慧園區(qū)數(shù)據(jù)可視化優(yōu)勢(shì)體現(xiàn)在哪些地方

大屏數(shù)據(jù)可視化 開(kāi)源

評(píng)論