【EsDA应用】串口服务器——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 即可查询开发板网络端口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客户端进行双向数据传输的功能。
关联产品    技术交流群长按识别如下二维码可加入“esda嵌入式系统设计自动化交流群”,与志同道合的朋友交流,并有专业技术人员为您答疑解惑,如有问题可以咨询小致微信:zlgmcu-888。

诺基亚6的情怀能卖多久?诺基亚9携全面屏来袭!
单片机跑操作系统,到底有几种选择?
注意查收!智能照明最新解决方案来了
长飞公司成功建立了光纤光缆行业智能制造新模式
社保卡升级 芯片卡片商坐享利好
【EsDA应用】串口服务器——TCP Server
对于柔性电路板如何电镀
红外取暖器温度控制制作
3D电源封装(3DPP®)之进程
魅族Flyme6再现神秘新功能:“留言录音”两不误
工控系统供电的UPS解决方案
关于连接器发展趋势的一些分享
微软推出了一种墨镜大小的一体式AR眼镜的新AR专利
联发科推出首款生物感应模拟芯片
华为又在改变!主动向超低端手机市场进军
直流工程标准化管控系统支撑特高压规模建设基础
交通ups电源的应用
光电编码器,光电编码器是什么意思
官方确认华为荣耀V9发布时间 孙杨代言2月21日北京见
ST全新非接触式存储器IC,拓宽电子门票的应用范围