串口服务器——TCP Server

描述

如何让自动化领域的串口设备具备联网能力?本文将基于EsDA平台,带你开发一个串口服务器之TCP服务器的业务,快速实现串口联网功能。

 

服务器  简介

随着物联网技术的发展,串口通信和TCP/IP通信业务越来越广泛。在实际应用中,我们经常会遇到需要将串口数据转发到TCP服务器或将TCP服务器数据转发到串口的情况,所以本文将介绍如何实现串口接入TCP服务器进行网络通信以达到扩展串口通信传输距离的目的等。

本实验选用 HPM6450开发板,以及可将节点进行拖拽连接的图形化设计工具AWFlow Designer,搭建一个串口转TCP Server的串口服务器与多个TCP Clients进行双向透明数据传输实验。该实验用到了serial_in_ex,fscript,push,tcp_server_ex和serial_out_ex节点。


 

服务器  前期准备

在本文之前,已有多篇串口服务器系列的博客文章,在此罗列部分链接文章,若有兴趣可在 EsDA技术专栏 查看相关全部文章。

  • EsDA MPC-ZC1应用——串口服务器(一)
  • EsDA MPC-ZC1 应用——串口服务器(二)

【EsDA应用】串口转zws物联网云平台

1. 硬件准备

准备TTL转USB串口工具。

服务器

准备好HPM6450开发板,并按下图连接好硬件。

服务器
 

DUART调试串口可用于打印调试信息与shell命令查询:将HPM6450开发板引出的DUART的TXD与RXD分别与TTL转USB串口工具的RX与TX连接,并将TTL转USB串口工具插到PC机的USB口上。若用户TTL转USB串口工具数量告急,在使用shell命令获取开发板网口IP号后串口工具可以给UTX1/RX1使用,连线方式相同。

网口下载流图:将HPM6450的NET0网口通过网线与PC机上的网络端口进行连接,组建一个小型局域网。

2. 软件准备

2.1 网口下载流图开发板固件运行之后,在串口调试助手sscom工具中选择与DUART相连接的串口端口号,波特率115200,随即打开串口,输入"ip addr\r"即可查询开发板网络端口IP详细信息。

服务器

根据硬件连接可知,本文使用的是NET0,对应的IP地址是192.168.137.251。得知开发板的网口IP接下来配置PC机上以太网的IP地址,与开发板对应的IP地址在同一局域网就可,本文配置的PC上IP地址如下:

服务器

怎样确认PC与开发板成功在同一局域网下?PING通对方即可。

服务器


 

服务器  业务处理

本文不再赘述串口通信连接与TCP通信连接成功的过程,具体细节可查看以下链接进行学习。

  • 【EsDA应用】5分钟实现一个串口通信业务

【EsDA应用】串口转TCP客户端

主要业务逻辑如下:

  • 建立TCP连接后,由TCP客户端上报数据给HPM6450搭建的TCP服务器,随后从TCP服务器读取数据并将发送到UTX1/RX1串口,最终在串口助手上进行打印显示。
  • 从UTX1/RX1串口读取串口助手发送的数据,并将数据发送到TCP服务器,由TCP服务器将数据下发给已建立TCP通信连接的客户端。

服务器

1. 添加节点并连线

本实验实现串口转TCP Server的串口服务器与多个TCP Clients进行双向透明数据传输实验。采用的节点有serial_in_ex,fscript,push,tcp_server_ex和serial_out_ex。服务器

2. 配置节点

双击serial_in_ex节点,并点击配置节点名旁边的铅笔图标去配置串口的属性

服务器

根据HPM6450的硬件资料表,选择所使用的串口设备对应的端口号:UTX1/RX1对应的是uart5,根据需要依次配置波特率,字节大小,奇偶校验,停止位等属性参数。

服务器

双击serial_in_ex的消费者节点fscript,这个节点主要是读取serial_in_ex的串口数据并传递给后续节点。

  •  
  •  
  •  

var str = istream_read_string(msg.istream,100)msg.payload = strostream_write_string(msg.ostream,msg.payload)

双击fscript的消费者节点push,因为是将serial_in_ex读取到的数据传递给TCP Server所以push的目标节点为tcp_server_ex。

服务器

双击tcp_server_ex节点,因TCP通信与流图下载都是用NET0的IP地址,所以端口号不能有冲突,因为数据是自定义的没有帧头,所以属性值输出选择1并不携带报文头部。

服务器

双击tcp_server_ex的消费者节点serial_out_ex,因为tcp_server_ex与serial_out_ex节点使用的是输入流istream和输出流ostream,所以不需要数据转换节点,直连即可。绑定的串口与serial_in_ex的端口号一致即可。

服务器

3. 下载验证

根据流图端口配置可知下载流图的端口号为8888,以及软件准备可知下载流图网口IP号为192.168.137.251。那么下载流图时选择IP配置如下服务器

本文在PC电脑上用NetAssist.exe网络调试助手工具搭建了两个TCP Clients,配置远端主机IP地址和端口号后同时开启连接,可在数据日志中查看TCP客户端发出的数据以及从TCP服务端接收到的数据如下。

服务器

服务器

在PC上的串口调试助手SSCOM工具上可查看到从服务端读取到的两个TCP客户端上报数据以及串口助手发送的数据如下。

服务器

由上可知,本实验实现了串口服务器之TCP服务器与两个不同的TCP客户端进行双向数据传输的功能。

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分