在“使用 Node 將 IoT 與嵌入式連接.js第 3 部分”中,我們查看了用于讀取加速度計(jì)的軟件包。在第4部分中,我們將重點(diǎn)介紹ADC寄存器的讀取。
該包演示如何運(yùn)行從 Node.js 調(diào)用的 C 代碼。此代碼通過 CPU 中 i.MX28 ADC 寄存器的存儲器映射來實(shí)現(xiàn)這些寄存器的讀取。此代碼直接取自技術(shù)系統(tǒng)公司為 TS-7680 提供的樣本代碼。這里的主要補(bǔ)充是將 Node.js 接口到 C 的代碼。
Node.js使用C++接口,因此代碼必須以C++編寫。我們的實(shí)施是在。在此文件中,有一個改編自 的函數(shù),該函數(shù)打開并將 CPU ADC 接口的三個區(qū)域存儲器映射到指針。這些器件可用于訪問執(zhí)行ADC功能所需的CPU寄存器。
其次是功能,也改編自其設(shè)置ADC并獲得7個樣本。對這些樣本進(jìn)行平均并放置在緩沖區(qū)中。
必須將“Node.js的本機(jī)抽象”或 NAN 的包含文件放在文件的頂部。隨著 Node 的成熟.js,用于創(chuàng)建加載項(xiàng)的界面發(fā)生了變化,NAN 抽象出這些差異,以允許創(chuàng)建適用于 Node .js 版本 0.8、0.10、0.12 和 1-7 的代碼。
用于創(chuàng)建 Node.js加載項(xiàng)的代碼位于函數(shù)中,符合 Node.js加載項(xiàng)的參數(shù)要求。具體來說,它有一個看起來像這樣的原型:
我們采用一個名為 的參數(shù)。這是一個復(fù)雜的NAN類,我們目前不需要擔(dān)心。
在此函數(shù)中,首先聲明一個緩沖器來保存來自所有 8 個 ADC 的采樣,這些 ADC 由 讀?。?/p>
接下來,如果尚未調(diào)用,則調(diào)用。全局變量用于確定以下內(nèi)容:init
現(xiàn)在調(diào)用以用樣本填充緩沖區(qū):
接下來,構(gòu)造一個長度為 8 的 JavaScript 數(shù)組,并將此數(shù)組中每個元素的值設(shè)置為相應(yīng)的 ADC 示例值:
然后,將數(shù)組設(shè)置為從 JavaScript 調(diào)用函數(shù)所顯示的返回值。這比簡單的語句稍微復(fù)雜一些,因?yàn)樗鼜腃++橋回JavaScript!
除了函數(shù)之外,還必須定義一個函數(shù)(注意大寫的“I”,這使得它與我們的函數(shù)不同)。此處的兩個重要部分是 “” 和 。它們定義了為訪問函數(shù)而調(diào)用的 JavaScript 端的模塊元素的名稱,以及C++端被調(diào)用的函數(shù)的名稱:
現(xiàn)在,調(diào)用一個宏將函數(shù)與模塊名稱相關(guān)聯(lián):
該文件提供了一個精簡包裝器,它通過調(diào)用 中定義的 addin 函數(shù)對 ADC 值進(jìn)行采樣,然后在連接套接字上輸出這些值來響應(yīng)對 ADC 值的請求。
此行的開頭設(shè)置了綁定節(jié)點(diǎn),我們的C++加載項(xiàng):
具體來說,該模塊返回一個函數(shù),該函數(shù)使用二進(jìn)制文件的相對路徑調(diào)用。這將在構(gòu)建過程中從C++源代碼創(chuàng)建,并具有“.node”后綴。從調(diào)用返回的是引用加載項(xiàng)的 JavaScript 對象。由于附加組件定義了一個函數(shù) ,因此此函數(shù)可作為返回對象的元素進(jìn)行訪問。調(diào)用此函數(shù)實(shí)質(zhì)上是調(diào)用C++代碼。
接下來是函數(shù)。它是一個標(biāo)準(zhǔn)的快速處理程序函數(shù),每當(dāng)客戶端請求終結(jié)點(diǎn)時都會調(diào)用它。它記錄條目,將響應(yīng)的內(nèi)容類型設(shè)置為 ,然后調(diào)用C++代碼來檢索 ADC 值。然后,它獲取數(shù)組并將其轉(zhuǎn)換為字符串,每行有一個數(shù)字:
最后,設(shè)置為初始化函數(shù),該函數(shù)檢查用于更改終結(jié)點(diǎn)字符串的選項(xiàng),并將終結(jié)點(diǎn)與函數(shù)關(guān)聯(lián):
該文件包含編譯C++代碼所需的信息。安裝包時會自動調(diào)用生成過程。
在下一期也是最后一期中,我們將構(gòu)建一個用戶界面,該界面利用我們已經(jīng)實(shí)現(xiàn)的服務(wù),以便從Web瀏覽器控制開發(fā)板。
審核編輯:郭婷
-
寄存器
+關(guān)注
關(guān)注
31文章
5294瀏覽量
119821 -
adc
+關(guān)注
關(guān)注
98文章
6395瀏覽量
543785 -
C++
+關(guān)注
關(guān)注
21文章
2102瀏覽量
73453
發(fā)布評論請先 登錄
相關(guān)推薦
評論