一、目錄
1. 實驗?zāi)康?/h3>
- 掌握 node-red 的串口通信節(jié)點
2.實驗原理
串口控件是一個很有用的控件,可以通過電腦或樹莓派的串口收發(fā)數(shù)據(jù)。由于我們要做一個基于 node?red 的應(yīng)用,并不是做一個只運行與電腦的純軟件,所以必然要與一定的硬件產(chǎn)生關(guān)聯(lián)。物聯(lián)網(wǎng)系統(tǒng)中的大部分硬件支持串口,所以,通過串口控件,可以把 node-red 程序控制的對象從電腦擴(kuò)展到實際的硬件中,極大提升了 node-red 的實用性。
如果有嵌入式的開發(fā)經(jīng)驗,那么對于“上位機(jī)”這個名詞一定不會陌生。把“下位機(jī)”采集到的數(shù)據(jù)通過串口發(fā)送給電腦或樹莓派,然后用 node-red 搭建一個上位機(jī)真的是很簡單的事情。如果沒有聽說過上位機(jī),也沒有關(guān)系。假設(shè)有這么一個設(shè)備,可以定時采集到一些傳感器的數(shù)據(jù),比如室內(nèi)的溫度,這些數(shù)據(jù)總得匯報給另外一個設(shè)備,以便進(jìn)行顯示和分析。負(fù)責(zé)顯示和分析的設(shè)備,就可以是上位機(jī)。
3. 實驗步驟
3.1 step1: 串口控件安裝
默認(rèn)情況下,node-red 并不會帶有串口控件。我們可以進(jìn)行手動安裝。順帶提一下,node-red 共有 1000多種各式各樣的控件,默認(rèn)情況只會安裝最常用的幾十種。所有控件的安裝過程都類似。點擊選項按鈕,找到節(jié)點管理,搜索并安裝紅框中的節(jié)點。

安裝完成后,會在網(wǎng)絡(luò)下,出現(xiàn)新的節(jié)點樣式。

3.2 step2: 安裝串口助手與虛擬串口工具
- 串口助手軟件串口/網(wǎng)絡(luò)數(shù)據(jù)調(diào)試器可以把串口收到的數(shù)據(jù)顯示出來,也可以通過串口發(fā)送數(shù)據(jù),十分直觀,可以用與顯示串口控件的數(shù)據(jù),和給串口控件發(fā)送數(shù)據(jù)。但是,一般來說,同一個串口只允許一個軟件占用。例如串口控件占用了 COM10(串口 2),那么串口/網(wǎng)絡(luò)數(shù)據(jù)調(diào)試器就不能使用 COM10了。如果 COM10 可以與 COM11 進(jìn)行通信,而串口/網(wǎng)絡(luò)數(shù)據(jù)調(diào)試器使用 COM11,那么串口/網(wǎng)絡(luò)數(shù)據(jù)調(diào)試器就可以與串口控件通信。下載地址:sscom 串口助手下載地址
-
虛擬串口工具 VSPD 虛擬串口工具可以把 COM10 與 COM11 連接起來,也就是借助虛擬串口工具,可以在不需要任何硬件的情況下,可以用串口/網(wǎng)絡(luò)數(shù)據(jù)調(diào)試器模擬真實的串口
3.3 step3: 虛擬串口工具設(shè)置
打開虛擬串口工具,文件名可能是 Configure Virtual Serial Port Driver,并添加兩個連接的端口,比如 COM10 和 COM11,添加完成后會在左邊顯示已經(jīng)添加上的端口。

完成添加以后左側(cè)的 virtual ports 顯示新添加的串口。注意,兩個串口設(shè)置為連接以后,即便關(guān)閉程序,串口的連接仍然保持,所以建議使用比較大的串口號,其它設(shè)備用不到的。如果需要解除連接,可以點擊刪除端口或是重置端口。
3.4 step4: 串口設(shè)置
- 將兩個串口的波特率設(shè)置為 9600
- 設(shè)置 8 個數(shù)據(jù)位、沒有校驗位、1 個停止位(8N1)
- 設(shè)置“非 HEX 顯示”, “非 HEX 發(fā)送”
3.5 step5: 添加控件
-
在 Node-red 中添加以下控件
-
將串口節(jié)點設(shè)置為波特率 9600,8 數(shù)據(jù)位,無校驗位,一個停止位 (8N1)
-
連接節(jié)點
3.6 step6: 運行調(diào)試
- 點擊 inject 的輸入按鈕,可以在串口工具看到時間戳消息。
在串口工具的輸入欄輸入“hello node-red”, 也可以在 node-red 的調(diào)試窗口看到此信息。
4. 實現(xiàn)
1.step1: 串口控件安裝
進(jìn)入安裝界面

找到并搜索 serial
serial

安裝


無法安裝

嘗試另外一種安裝辦法

跳轉(zhuǎn)到安裝界面

復(fù)制安裝命令
npm i node-red-node-serialport
打開cmd

粘貼安裝命令,按下回車即可安裝

完成安裝,重新啟動node-red

即可出現(xiàn)安裝的節(jié)點

2.step2: 安裝串口助手與虛擬串口工具
安裝虛擬串口工具

打開安裝程序

下一步

勾選,下一步

安裝位置,可改 可不改

下一步

往后都是下一步,直到安裝完成

安裝完成,但是都是英文

漢化
打開改文件的所在位置


把這兩個文件復(fù)制到,安裝的目錄下

替換即可

再次打開,漢化成功

3.創(chuàng)建虛擬串口
在我的電腦/此電腦,右鍵,點擊管理

打開虛擬串口工具
創(chuàng)建兩個虛擬串口,COM3,COM4

4. 在 Node-red 中添加以下控件,并連接

5. 設(shè)置串口節(jié)點參數(shù)

將串口節(jié)點設(shè)置為波特率 9600,8 數(shù)據(jù)位,無校驗位,一個停止位 (8N1)

打開串口助手工具,打開串口,并設(shè)置波特率為9600

部署,查看數(shù)據(jù),數(shù)據(jù)已成功發(fā)送到串口助手工具內(nèi)

接下來就是,通過串口助手工具,將數(shù)據(jù)發(fā)送到 串口接收節(jié)點

5. 全部代碼
[
{
"id": "0380f5e5c1f1a45c",
"type": "tab",
"label": "流程 1",
"disabled": false,
"info": "",
"env": []
},
{
"id": "345d5fa11ee064a3",
"type": "inject",
"z": "0380f5e5c1f1a45c",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 150,
"y": 560,
"wires": [
[
"9129ef8e9e87a107"
]
]
},
{
"id": "ef90db689b7f0347",
"type": "serial in",
"z": "0380f5e5c1f1a45c",
"name": "",
"serial": "107a1107b0144652",
"x": 150,
"y": 660,
"wires": [
[
"ad0236c52ad5e297"
]
]
},
{
"id": "ad0236c52ad5e297",
"type": "debug",
"z": "0380f5e5c1f1a45c",
"name": "debug 30",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 380,
"y": 660,
"wires": []
},
{
"id": "9129ef8e9e87a107",
"type": "serial out",
"z": "0380f5e5c1f1a45c",
"name": "",
"serial": "9e8050f835428ec9",
"x": 370,
"y": 560,
"wires": []
},
{
"id": "107a1107b0144652",
"type": "serial-port",
"serialport": "COM3",
"serialbaud": "9600",
"databits": "8",
"parity": "none",
"stopbits": "1",
"waitfor": "",
"dtr": "none",
"rts": "none",
"cts": "none",
"dsr": "none",
"newline": "1",
"bin": "false",
"out": "interbyte",
"addchar": "",
"responsetimeout": "10000"
},
{
"id": "9e8050f835428ec9",
"type": "serial-port",
"serialport": "COM3",
"serialbaud": "9600",
"databits": "8",
"parity": "none",
"stopbits": "1",
"waitfor": "",
"dtr": "none",
"rts": "none",
"cts": "none",
"dsr": "none",
"newline": "1",
"bin": "false",
"out": "time",
"addchar": "",
"responsetimeout": "10000"
}
]



