發表文章

目前顯示的是 6月, 2019的文章

[REST] callback function in node.js

圖片
不太確定放在此類別是否正確, 不過, 之前 node.js 的程式碼都歸於此類別, 也就先暫時這樣分類吧... 主要參考的內容如下: http://larry850806.github.io/2016/06/16/nodejs-async/ https://www.tutorialspoint.com/nodejs/nodejs_callbacks_concept.htm node.js 為平行化 (非同步) 架構, 因此, 當我們執行一個 function 時, 會先放入 event loop 中, 並在背景繼續執行其他程式流程, 如下圖所示: https://blog.outsource.com/2018/09/26/understanding-the-event-loop-in-node-js-outsource/ 此平行化架構, 不同於 c / java 按程式一行一行執行的架構, node.js 可允許同時執行多項程式, 有利於利用多執行緒處理, 然而, 當一個程式需要另一個程式的結果時, 就需要 callback 來完成. 舉例來說: var fs = require('fs'); // fs.readFile(filename, callback(err, content)) fs.readFile('test.txt', function(err, content) {     var str = content.toString();     console.log(str.length);     console.log('finish'); }); console.log('not finish'); 此程式目的為讀一個檔案 (test.txt) 並顯示長度, 紅字部分為 callback 部分, 在這部分的程式將等到 readFile 執行完之後才會執行, 執行結果如下: $ node callback.js not finish 245 finish 我們可以看到先出現: not finish, 來自於最後一行的程式: console.log('not finish')

[RTLS] Bluetooth 5.1 對室內定位的標準化

圖片
對於室內定位的應用而言, Bluetooth 由於其低功耗, 普及, 以及覆蓋範圍小等特性, 一直以來, 都是室內定位的熱門選擇, 在過去, Apple 就曾經以信號強度 (RSSI) 為依據, 推出室內定位用的 iBeacon 作為定位的解決方案, 其定位精度約為 1-5 公尺. 在新的 Bluetooth 協定中, 加入了 AoA/AoD 的支援, AoA (Angle of Arrive) 只需要接收端有多天線系統 (傳送端可為單天線), 可以分辨來自不同天線訊號的時間/相位差, 就可以計算出傳送端相對接收端的角度資訊, 類似的, AoD (Angle of Departure) 則要求傳送端有多天線系統, 就可以藉由 ACK 等資訊, 計算出接收端相對於傳送端的角度資訊, 來自:  http://dev.ti.com/tirex/content/simplelink_academy_cc2640r2sdk_2_30_02_00/ modules/blestack/ble_aoa/ble_aoa.html 在 Bluetooth 5.1 中, 距離資訊仍是來自於 RSSI 訊號強度, 而不是用 ToA (Time of Arrival) 來取得距離資訊, 這應該是因為希望和過往的 Bluetooth 裝置相容, (ToA 需要裝置間同步與硬體的支援, 無法相容於之前的裝置) 因此, 只希望修改 Bluetooth Gateway 的硬體與演算法, 來提供定位的結果. 在目前的架構下, AoA 資訊的取得, 的確能夠改善定位誤差, 特別是在直視路徑 (LoS, Light of Sight) 的環境中, 然而, 針對 Bluetooth 定位所遇到的其他問題, 例如: 過多的布建數量, 仍無法提出解答, 同時, 考慮 AoA/AoD 對於天線排列的要求, 如何提供一種均一, 容易開發, 且準確的 AoA/AoD 資訊, 將會是此標準能否廣泛應用的關鍵.