該項(xiàng)目建立在文章“使用 Node.js 加快嵌入式系統(tǒng)上市時(shí)間”的基礎(chǔ)上,提供并展示了如何為簡(jiǎn)單的 Web 服務(wù)器實(shí)現(xiàn)代碼。Web 服務(wù)器提供了控制板的能力,例如通過(guò)獲取和設(shè)置數(shù)字 I/O (DIO) 值(或打開(kāi)和關(guān)閉 LED)。它還提供了一個(gè)簡(jiǎn)單的客戶端網(wǎng)頁(yè)來(lái)訪問(wèn)此功能,使其成為一個(gè)獨(dú)立的解決方案,用于通過(guò)電路板本身提供的網(wǎng)頁(yè)來(lái)控制電路板。
在“在運(yùn)行 Linux 的嵌入式單板計(jì)算機(jī)上開(kāi)始使用 node.js ”中,我們展示了如何在Technologic Systems TS-7680等單板計(jì)算機(jī) (SBC) 上安裝 node.js。在這個(gè)示例項(xiàng)目中,我們展示了如何實(shí)現(xiàn)對(duì) TS-7680 硬件的支持,并提供一個(gè)簡(jiǎn)單的網(wǎng)頁(yè)來(lái)控制板。DIO 控制通過(guò)可視化界面進(jìn)行說(shuō)明,該界面可以顯示和更改板上四個(gè) LED 的狀態(tài)。板上的模數(shù)轉(zhuǎn)換器 (ADC) 的當(dāng)前狀態(tài)也會(huì)定期顯示和更新。最后,提供了一個(gè)按鈕,該按鈕對(duì)加速度計(jì)進(jìn)行一秒鐘的采樣并顯示其數(shù)據(jù)圖表。
該項(xiàng)目由兩部分組成:
在用戶(客戶端)網(wǎng)絡(luò)瀏覽器中運(yùn)行的 JavaScript 和 HTML
用于直接硬件接口(服務(wù)器)的 Node.js 項(xiàng)目文件(包括 JavaScript、包文件和 C++ 源代碼)。
這將在支持 ARMv5 CPU、使用節(jié)點(diǎn) 0.10 的 Technologic Systems TS-7680 上進(jìn)行演示。
注意:正確安裝此演示需要具有 256 MB 板載 RAM 的 TS-7680。如果您想在只有 128 MB RAM 的板上運(yùn)行此演示,請(qǐng)從該 ftp 服務(wù)器下載包含 service-mx28adc 模塊的壓縮包, 并通過(guò)解壓縮包含您的 node_modules 目錄的目錄來(lái)安裝它。之后apt install命令將識(shí)別該模塊已經(jīng)安裝并且不會(huì)嘗試編譯它。
讓我們看看我們將要?jiǎng)?chuàng)建的文件。
對(duì)于客戶:
ts7680.js –這是 TS-7680 用戶界面的實(shí)際實(shí)現(xiàn)。它將顯示 LED 和 ADC 的當(dāng)前狀態(tài),并提供對(duì)加速度計(jì)進(jìn)行采樣的接口。
index.html –這是顯示用戶界面的 HTML 代碼。
7680-0000.JPG 至 7680-1111.JPG –這些圖像文件將在 Web 界面中顯示 TS-7680 的板載 LED 狀態(tài)。LED 上的每個(gè)位組合(0000、0001、0010 等)都存在一個(gè)文件。
服務(wù)器上有幾個(gè) Node.js 包,每個(gè)包執(zhí)行特定的功能:
ts7680-demo-server –這是頂級(jí)服務(wù)器,用于指定和控制服務(wù)器組件的實(shí)例化。它還包含使整個(gè)項(xiàng)目成為獨(dú)立包所需的所有客戶端文件。
server.js –實(shí)現(xiàn)
package.json –清單
README.md – Markdown格式的自述文件
file/ –包含客戶端文件的子目錄
express-modular-server –這是一個(gè)模塊化框架,用于從 Node.js 提供 HTTP 和 HTTPS 網(wǎng)頁(yè)。
server.js –實(shí)現(xiàn)
package.json –清單
README.md – Markdown格式的自述文件
service-app –服務(wù)于 Web 應(yīng)用程序(app.html + app.js + 應(yīng)用程序特定模塊)的插件,用于在其中實(shí)現(xiàn)的默認(rèn)文件處理。
default-file.js -靜態(tài)文件服務(wù)的實(shí)現(xiàn)
package.json –清單
README.md – Markdown格式的自述文件
app.js –應(yīng)用處理的實(shí)現(xiàn)(本項(xiàng)目中未使用)
service-mma8451 –為 TS-7680 上的NXP MMA8451 3 軸加速度計(jì)實(shí)現(xiàn)應(yīng)用程序編程接口 (API) 支持的插件。
mma8451.js –實(shí)施
package.json –清單
README.md – Markdown格式的自述文件
service-mx28adc –實(shí)現(xiàn)對(duì)TS-7680 上i.MX28 CPU 低分辨率模數(shù)轉(zhuǎn)換器 (LRADC)外圍設(shè)備的支持的插件。
mx28adc.js –實(shí)現(xiàn) API 支持的插件
mx28adc.cc –實(shí)施
package.json –清單
Binding.gyp –構(gòu)建文件
README.md – Markdown格式的自述文件
service-gpio –通過(guò) Linux /sys 文件系統(tǒng)實(shí)現(xiàn)對(duì) GPIO 的 API 支持的插件。
gpio.js –實(shí)現(xiàn)
package.json –清單
README.md – Markdown格式的自述文件
現(xiàn)在,進(jìn)入代碼。
ts7680-演示服務(wù)器
首先,讓我們看看我們將調(diào)用以運(yùn)行我們的服務(wù)器的頂級(jí) JavaScript 文件:server.js。
express-modular-server 軟件包使創(chuàng)建 Web 服務(wù)器變得容易。我們?yōu)槊總€(gè)服務(wù)編寫一個(gè)插件,用于初始化 API 端點(diǎn)和服務(wù)請(qǐng)求。然后我們配置服務(wù)器,指定每個(gè)所需的端點(diǎn),并啟動(dòng)服務(wù)器。
對(duì)上面的代碼逐段剖析,我們首先將當(dāng)前工作目錄更改為安裝包的目錄。這是因?yàn)槲覀兊陌鼘⑺徐o態(tài)提供的文件封裝在file/相對(duì)于該目錄的子目錄中。
process.chdir(__dirname)
接下來(lái),我們需要 express-modular-server:
var server = require(“express-modular-server”)
這將返回一個(gè)函數(shù),我們使用初始化數(shù)據(jù)作為同一表達(dá)式的一部分調(diào)用該函數(shù):
({
http:true
})
在這里,我們傳遞一個(gè)包含初始化參數(shù)的對(duì)象。我們感興趣的唯一參數(shù)是運(yùn)行 HTTP 服務(wù)器。參數(shù)http:true指定了這一點(diǎn),盡管我們也可以提供一個(gè)數(shù)字端口而不是 true。默認(rèn)使用端口 8080。
然后我們將每個(gè) API 添加到服務(wù)器,從包名稱中省略“service-”前綴。初始化返回模塊對(duì)象,該對(duì)象具有添加與關(guān)鍵 API 關(guān)聯(lián)的 API 的功能。
.API(“gpio”)
當(dāng)這個(gè)函數(shù)返回時(shí),gpio 插件(來(lái)自 service-gpio 包)被加載。此函數(shù)返回模塊對(duì)象本身,因此我們可以鏈接另一個(gè)調(diào)用以添加任意數(shù)量的 API 端點(diǎn):
.API(“mma8451”)
.API(“mx28adc”)
.API(“app”)
現(xiàn)在我們?yōu)榧铀俣扔?jì)、ADC 和服務(wù) Web 應(yīng)用程序添加了端點(diǎn)。添加完端點(diǎn)后,我們?cè)僬{(diào)用一次來(lái)啟動(dòng)服務(wù)器:
.start()
而已!這是我們的代碼的樣子:
在安裝演示之前需要運(yùn)行一些命令才能使安裝和構(gòu)建過(guò)程正常工作。首先,由于 Debian 中缺少標(biāo)頭,我們需要升級(jí) npm 并設(shè)置一個(gè)符號(hào)鏈接來(lái)指向它:
一旦 npm 升級(jí),任何時(shí)候它運(yùn)行都會(huì)返回一個(gè)錯(cuò)誤,說(shuō) npm 不支持 node.js v0.10.29,你應(yīng)該升級(jí)到更新的版本。忽略此警告,因?yàn)?v0.10.29 是 TS-7680 支持的最新版本,因?yàn)檩^新的版本缺少 ARM v5 支持。
您可以使用單個(gè)命令安裝整個(gè)演示:
npm install ts7680-demo-server
我們的下一部分將從 GPIO 模塊開(kāi)始詳細(xì)檢查服務(wù)器使用的模塊。
審核編輯:郭婷
-
led
+關(guān)注
關(guān)注
242文章
23278瀏覽量
660940 -
adc
+關(guān)注
關(guān)注
98文章
6498瀏覽量
544683 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
9165瀏覽量
85436
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論