如何讓自動(dòng)化領(lǐng)域的串口設(shè)備具備聯(lián)網(wǎng)能力?本文將基于EsDA平臺(tái),帶你開發(fā)一個(gè)串口服務(wù)器之TCP服務(wù)器的業(yè)務(wù),快速實(shí)現(xiàn)串口聯(lián)網(wǎng)功能。
簡(jiǎn)介
隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,串口通信和TCP/IP通信業(yè)務(wù)越來(lái)越廣泛。在實(shí)際應(yīng)用中,我們經(jīng)常會(huì)遇到需要將串口數(shù)據(jù)轉(zhuǎn)發(fā)到TCP服務(wù)器或?qū)CP服務(wù)器數(shù)據(jù)轉(zhuǎn)發(fā)到串口的情況,所以本文將介紹如何實(shí)現(xiàn)串口接入TCP服務(wù)器進(jìn)行網(wǎng)絡(luò)通信以達(dá)到擴(kuò)展串口通信傳輸距離的目的等。
本實(shí)驗(yàn)選用HPM6450開發(fā)板,以及可將節(jié)點(diǎn)進(jìn)行拖拽連接的圖形化設(shè)計(jì)工具AWFlow Designer,搭建一個(gè)串口轉(zhuǎn)TCP Server的串口服務(wù)器與多個(gè)TCP Clients進(jìn)行雙向透明數(shù)據(jù)傳輸實(shí)驗(yàn)。該實(shí)驗(yàn)用到了serial_in_ex,fscript,push,tcp_server_ex和serial_out_ex節(jié)點(diǎn)。
前期準(zhǔn)備
在本文之前,已有多篇串口服務(wù)器系列的博客文章,在此羅列部分鏈接文章,若有興趣可在EsDA技術(shù)專欄查看相關(guān)全部文章。
- EsDAMPC-ZC1應(yīng)用——串口服務(wù)器(一)
- EsDAMPC-ZC1應(yīng)用——串口服務(wù)器(二)
【EsDA應(yīng)用】串口轉(zhuǎn)zws物聯(lián)網(wǎng)云平臺(tái)
1. 硬件準(zhǔn)備
準(zhǔn)備TTL轉(zhuǎn)USB串口工具。
準(zhǔn)備好HPM6450開發(fā)板,并按下圖連接好硬件。
DUART調(diào)試串口可用于打印調(diào)試信息與shell命令查詢:將HPM6450開發(fā)板引出的DUART的TXD與RXD分別與TTL轉(zhuǎn)USB串口工具的RX與TX連接,并將TTL轉(zhuǎn)USB串口工具插到PC機(jī)的USB口上。若用戶TTL轉(zhuǎn)USB串口工具數(shù)量告急,在使用shell命令獲取開發(fā)板網(wǎng)口IP號(hào)后串口工具可以給UTX1/RX1使用,連線方式相同。
網(wǎng)口下載流圖:將HPM6450的NET0網(wǎng)口通過網(wǎng)線與PC機(jī)上的網(wǎng)絡(luò)端口進(jìn)行連接,組建一個(gè)小型局域網(wǎng)。
2. 軟件準(zhǔn)備
2.1 網(wǎng)口下載流圖開發(fā)板固件運(yùn)行之后,在串口調(diào)試助手sscom工具中選擇與DUART相連接的串口端口號(hào),波特率115200,隨即打開串口,輸入"ip addr\r"即可查詢開發(fā)板網(wǎng)絡(luò)端口IP詳細(xì)信息。
根據(jù)硬件連接可知,本文使用的是NET0,對(duì)應(yīng)的IP地址是192.168.137.251。得知開發(fā)板的網(wǎng)口IP接下來(lái)配置PC機(jī)上以太網(wǎng)的IP地址,與開發(fā)板對(duì)應(yīng)的IP地址在同一局域網(wǎng)就可,本文配置的PC上IP地址如下:
怎樣確認(rèn)PC與開發(fā)板成功在同一局域網(wǎng)下?PING通對(duì)方即可。
?業(yè)務(wù)處理
本文不再贅述串口通信連接與TCP通信連接成功的過程,具體細(xì)節(jié)可查看以下鏈接進(jìn)行學(xué)習(xí)。
- 【EsDA應(yīng)用】5分鐘實(shí)現(xiàn)一個(gè)串口通信業(yè)務(wù)
【EsDA應(yīng)用】串口轉(zhuǎn)TCP客戶端
主要業(yè)務(wù)邏輯如下:
- 建立TCP連接后,由TCP客戶端上報(bào)數(shù)據(jù)給HPM6450搭建的TCP服務(wù)器,隨后從TCP服務(wù)器讀取數(shù)據(jù)并將發(fā)送到UTX1/RX1串口,最終在串口助手上進(jìn)行打印顯示。
- 從UTX1/RX1串口讀取串口助手發(fā)送的數(shù)據(jù),并將數(shù)據(jù)發(fā)送到TCP服務(wù)器,由TCP服務(wù)器將數(shù)據(jù)下發(fā)給已建立TCP通信連接的客戶端。
1. 添加節(jié)點(diǎn)并連線
本實(shí)驗(yàn)實(shí)現(xiàn)串口轉(zhuǎn)TCP Server的串口服務(wù)器與多個(gè)TCP Clients進(jìn)行雙向透明數(shù)據(jù)傳輸實(shí)驗(yàn)。采用的節(jié)點(diǎn)有serial_in_ex,fscript,push,tcp_server_ex和serial_out_ex。
2. 配置節(jié)點(diǎn)
雙擊serial_in_ex節(jié)點(diǎn),并點(diǎn)擊配置節(jié)點(diǎn)名旁邊的鉛筆圖標(biāo)去配置串口的屬性
根據(jù)HPM6450的硬件資料表,選擇所使用的串口設(shè)備對(duì)應(yīng)的端口號(hào):UTX1/RX1對(duì)應(yīng)的是uart5,根據(jù)需要依次配置波特率,字節(jié)大小,奇偶校驗(yàn),停止位等屬性參數(shù)。
雙擊serial_in_ex的消費(fèi)者節(jié)點(diǎn)fscript,這個(gè)節(jié)點(diǎn)主要是讀取serial_in_ex的串口數(shù)據(jù)并傳遞給后續(xù)節(jié)點(diǎn)。
var str = istream_read_string(msg.istream,100)msg.payload = strostream_write_string(msg.ostream,msg.payload)
雙擊fscript的消費(fèi)者節(jié)點(diǎn)push,因?yàn)槭菍erial_in_ex讀取到的數(shù)據(jù)傳遞給TCP Server所以push的目標(biāo)節(jié)點(diǎn)為tcp_server_ex。
雙擊tcp_server_ex節(jié)點(diǎn),因TCP通信與流圖下載都是用NET0的IP地址,所以端口號(hào)不能有沖突,因?yàn)閿?shù)據(jù)是自定義的沒有幀頭,所以屬性值輸出選擇1并不攜帶報(bào)文頭部。
雙擊tcp_server_ex的消費(fèi)者節(jié)點(diǎn)serial_out_ex,因?yàn)閠cp_server_ex與serial_out_ex節(jié)點(diǎn)使用的是輸入流istream和輸出流ostream,所以不需要數(shù)據(jù)轉(zhuǎn)換節(jié)點(diǎn),直連即可。綁定的串口與serial_in_ex的端口號(hào)一致即可。
3. 下載驗(yàn)證
根據(jù)流圖端口配置可知下載流圖的端口號(hào)為8888,以及軟件準(zhǔn)備可知下載流圖網(wǎng)口IP號(hào)為192.168.137.251。那么下載流圖時(shí)選擇IP配置如下
本文在PC電腦上用NetAssist.exe網(wǎng)絡(luò)調(diào)試助手工具搭建了兩個(gè)TCP Clients,配置遠(yuǎn)端主機(jī)IP地址和端口號(hào)后同時(shí)開啟連接,可在數(shù)據(jù)日志中查看TCP客戶端發(fā)出的數(shù)據(jù)以及從TCP服務(wù)端接收到的數(shù)據(jù)如下。
在PC上的串口調(diào)試助手SSCOM工具上可查看到從服務(wù)端讀取到的兩個(gè)TCP客戶端上報(bào)數(shù)據(jù)以及串口助手發(fā)送的數(shù)據(jù)如下。
由上可知,本實(shí)驗(yàn)實(shí)現(xiàn)了串口服務(wù)器之TCP服務(wù)器與兩個(gè)不同的TCP客戶端進(jìn)行雙向數(shù)據(jù)傳輸?shù)墓δ堋?/p>
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
9160瀏覽量
85415 -
TCP
+關(guān)注
關(guān)注
8文章
1353瀏覽量
79069 -
串口
+關(guān)注
關(guān)注
14文章
1554瀏覽量
76509
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論