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