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