本文目錄一覽:
- 1、node.js 使用serialport打開串口報錯
- 2、node-serialport windows下怎麼使用
- 3、nodejs 獲取串口數據
- 4、web實現串口調試助手
- 5、如何調試nodejs
node.js 使用serialport打開串口報錯
1. 先判斷在關閉原先串口 com:
if (com != null)
{
com.Close();
}
2. 然後重新new,在打開串口:
com = new System.IO.Ports.SerialPort(strComName); //strComName串口名
com.Open();
// …設置屬性
// …綁定串口接收函數
node-serialport windows下怎麼使用
node-serialport 是一個 Node.js 的包,用來對串口數據進行讀寫操作。
基本示例代碼:
var SerialPort = require(“serialport”).SerialPort
var serialPort = new SerialPort(“/dev/tty-usbserial1”, {
baudrate: 57600
}, false); // this is the openImmediately flag [default is true]
serialPort.open(function (error) {
if ( error ) {
console.log(‘failed to open: ‘+error);
} else {
console.log(‘open’);
serialPort.on(‘data’, function(data) {
console.log(‘data received: ‘ + data);
});
serialPort.write(“ls\n”, function(err, results) {
console.log(‘err ‘ + err);
console.log(‘results ‘ + results);
});
}
});
羅列所有串口:
var serialPort = require(“serialport”);
serialPort.list(function (err, ports) {
ports.forEach(function(port) {
console.log(port.comName);
console.log(port.pnpId);
console.log(port.manufacturer);
});
});
串口配置:
baudRate
dataBits
stopBits
parity
rtscts
xon
xoff
xany
flowControl
bufferSize
parser
encoding
dataCallback
disconnectedCallback
platformOptions- sets platform specific options, see below.
nodejs 獲取串口數據
由於項目要求,項目為(B/S)架構 ,需要在頁面上讀取串口數據,於是就需要nodejs了
使用 nodejs 的一個插件 :serialport
現在先做個測試demo
1、先建立測試文件夾
2、在文件夾中安裝serialport ,在文件夾下的 cmd 中輸入
3、可能會出現 一個警告可用忽略
4、安裝後 編寫讀取串口 js 文件 testport.js
5、運行 js 在文件夾下 cmd 中輸入
執行成功:
可能的問題:
問題一: Flie not found
這個是電腦上沒有安裝串口驅動,或者虛擬串口
可用 虛擬串口程序
建立測試串口
問題二:Port is opening
需要加入 串口屬性 autoOpen:false
web實現串口調試助手
最近受朋友之託試圖用web前端實現串口調試助手,一開始覺得不太有可行性,以前用過的串口調試助手都是客戶端程序。覺得瀏覽器怎麼會有調用電腦上的串口的功能呢。後來朋友找了幾個資料給我,說網上有人實現,他看不懂。我看了之後恍然大悟,原來是用node。如此萬能。
node 實現操作串口的模塊是一個 serialport 的模塊,網上一搜有很多好文,此處記錄一下實現過程中遇到的一些問題以及解決方法。
一開始被忽略的問題 ,我把 node 服務搭在自己的服務器上,後來返回的串口數組全是一堆令我懵逼的數據。後來想起那是 node 讀取了我的
Linux 服務器的串口,而不是用戶使用的 pc。
由此引出的兩個問題。第一,node 服務必須搭建在用戶使用的 pc 上,因此用戶使用的電腦必須有 node 環境。第二,用戶 pc 一般是 windows 系統, node 的模塊很多在 Linux 上很容易安裝成功,在 Windows 上安裝比較困難。
首先解決的是第二個問題:在Windows上安裝serialport失敗
解決方法: npm install –global –production windows-build-tools
參考鏈接1:
參考鏈接2:
安裝好之後就可以安裝 serialport 模塊了。
解決第一個問題:用戶電腦的 node 環境
解決方法: electron ——使用 JavaScript, HTML 和 CSS 構建跨平台的桌面應用 (官網鏈接: )(w3c: )
使用 electron 搭建的桌面應用可以像平常我們使用的 exe 應用程序一樣直接運行,不需要搭建環境。
npm install -g electron-prebuilt //提示electron-prebuilt已經更名為electron
npm install -g electron //安裝失敗
使用淘寶鏡像安裝問題解決: cnpm install -g electron
參考鏈接:
解決方法: npm install -g electron-rebuild
以後每次重新運行 electron . 的時候再執行一次 “./node_modules/.bin/electron-rebuild` 對原生模塊進行rebuild
參考鏈接:
參考鏈接:
cnpm install -g electron-packager //安裝打包工具
electron-packager . 可執行文件的文件名 –win –out 打包成的文件夾名 –arch=x64位還是32位 –version版本號 –overwrite –ignore=node_modules
因為打包的時候執行的命令帶有 –ignore=node_modules , 即不將 node_modules 裡面的依賴包打包,所以在打包後的新文件中,進入resource 目錄會發現 node_modules 是一個空文件夾,所以自然找不到依賴包。如果去掉打包時的命令參數 –ignore=node_modules ,則需要非常長的打包時間。我的解決方法是將原來 node_modules 文件夾中的相關的依賴包文件複製進打包後的 node_modules 中,雖然是一個比較無腦的方法,每次打包都要拖動相關文件進去,不過我備份了一個 node_modules 文件夾,下一次打包後就把備份的 node_modules 直接複製進去。
node 模塊 ccap : 用於生成驗證碼圖片,可以在 express 後台
res.send(圖片) ,前端的 img 的 src設置為請求這個接口。
ccap的用法可以參考鏈接:
如何調試nodejs
1. 基於Nodejs內建的調試器
Nodejs提供了一個內建調試器來幫助開發者調試應用程序。想要開啟調試器我們需要在代碼中加入debugger標籤,當Nodejs執行到debugger標籤時會自動暫停(debugger標籤相當於在代碼中開啟一個斷點)。代碼如下:
var path = url.parse(req.url).pathname;
debugger;
res.writeHead(200, {‘Content-Type’: ‘text/plain’});
執行命令:node debug example.js 就可以進入調試模式。
在debug模式下,可以使用內建命令如repl去評估變量和表達式的值(如2所示)。我們也可以通過help命令來獲取完整的調試命令列表。
Commands: run (r), cont (c), next (n), step (s), out (o), backtrace (bt), setBreakpoint (sb), clearBreakpoint (cb),
watch, unwatch, watchers, repl, restart, kill, list, scripts, breakpoints, version
2. 基於V8插件的調試器
Nodejs是基於google V8的引擎上構建的,Google為Eclipse提供了一個對應的調試插件。關於如何在Eclipse中安裝和調試Nodejs程序就不再重複描述了,網上已經有很多的文章了(具體可以參考這篇文章)。唯一要注意的是在默認情況下V8引擎支持的調試模式是本地模式。如果想要開啟遠程調試的話,我們需要修改Nodejs中的V8源文件:/deps/v8/src/platform-posix.cc
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); — INADDR_ANY
addr.sin_port = htons(port);
然後重新編譯Nodejs。
提示:
用插件來調試nodejs程序,你有時候會遇到什麼connect refuse, get version failed等等錯誤。那麼請注意你使用的ip的地址, 一般下127.0.0.1的迴環地址是都工作的。如果你使用真實的ip地址,請檢查防火牆設置。
3. 基於Chrome瀏覽器的調試器
既然我們可以通過V8的調試插件來調試,那是否也可以借用Chrome瀏覽器的JavaScript調試器來調試呢?node-inspector模塊提供了這樣一種可能。我們需要先通過npm來安裝node-inspector
npm install -g node-inspector // -g 導入安裝路徑到環境變量
node-inspector是通過websocket方式來轉向debug輸入輸出的。因此,我們在調試前要先啟動node-inspector來監聽Nodejs的debug調試端口。
默認情況下node-inspector的端口是8080,可以通過參數–web-port=[port]來設置端口。在啟動node-inpspector之後,我們可以通過–debug或–debug-brk來啟動nodejs程序。通過在瀏覽器輸入http://[ip address]:8080/debug?port=5858,我們會得到如下的調試窗口:
這三種方法各自有優缺點,我個人比較欣賞node-inspector的方式。
具體可以參考這個帖子:
原創文章,作者:FAPZM,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/315700.html