当前位置: 首页 > news >正文

串口和TCP互相转发工具

由于项目调试需求,代码在远程服务器的虚拟机上,在本地计算机通过串口连接需要对接的设备,在远程服务器的上位机程序需要和此设备进行对接,系统结构如图1所示。

图1 系统网络结构图

如何将本地的串口共享给远程服务器上的虚拟机里面的上位机程序呢?远程服务器开启了内网穿透,使用的SAKURA FRP,感兴趣的可以自己摸索下,很好用的。我直接穿透的远程桌面,而远程桌面可以将本地计算机的串口共享到远程服务器,如图2所示:

图2 通过远程桌面共享端口

假设本地计算机的串口如图3所示,经过远程桌面共享后在远程服务器上就会多出一些串口出来,表示的就是本地计算机共享过来的串口,串口号一般和本地计算机的相同,但是在远程服务器的设备管理器中是显示不出来共享过来的串口的,用串口调试助手等软件可以看到,如图4所示。

图3 本地计算机的串口

图4 本地计算机串口映射到远程服务器后的串口

现在差最后一步,将远程服务器的串口共享给虚拟机就可以了,用的是VMWare虚拟机,通过给虚拟机添加串口就可以实现,设置如图5所示。

图5 虚拟机共享串口

但在实际使用的过程中发现虚拟机中的上位机并不能很好的和设备连接,可能是速度的问题或者是数据流转换的问题,总之不成功。但直接放到远程服务器上运行上位机是可以的(不在虚拟机上运行上位机),由于上位机开发环境在虚拟机上,还需要想想办法将远程服务器上的串口共享给虚拟机。

开始查找是否有满足要求的工具软件,其中用的较多的是将串口转换成网络数据,到目的地后再将网络数据转为串口。其中有人科技的工具可以建立一个虚拟串口和网络端口的映射,很方便,如图6所示。

图6 有人的虚拟串口软件

用有人的这个虚拟串口软件,我在虚拟机上就可以很方面的搭建一个虚拟串口,只要在远程服务器上搭建一个物理串口到虚拟机TCP8222端口的透明TCP连接就可以了,但有人的不支持物理串口转发,还需要查找串口到TCP服务器的转发软件才可以。

经过搜索,这个网页Best Serial to Ethernet solutions on the market列出了可选的方案,Serial to Ethernet Connector是用的比较多的,因此下载测试了一下,用其他串口,包括虚拟串口Serial to Ethernet Connector都能正常工作,但是对于这样远程桌面共享过来的串口却怎么都打不开,如图7所示。

图7 共享过来的串口无法打开使用

正常的是能直接打开的,如图8所示。

图8 其他串口是可以打开使用的

而且Serial to Ethernet Connector不是免费的哦。

推荐的第2个TCP-Com,第3个Network Serial Port Kit,网站打不开,从其他地方也下载不下来,只得作罢。

第4个SERIAL-TCP/IP还可以,网站能打开,并下载安装使用了,刚开始测试效果还可以,但当发一些十六进制数时,SERIAL-TCP/IP出现了传输错误,比如发送FF A5 03 04 07,SERIAL-TCP/IP转发过来就变为: FF 3F 04 07,猜测这可能是SERIAL-TCP/IP内存处理字符串的小Bug,如图9所示。另外,SERIAL-TCP/IP还有个小不足,检测不到虚拟串口,只能打开物理串口。

图9 SERIAL-TCP/IP转发出现错误

后面2个也是打开费劲,也没有认真去测。

为了更好地满足调试应用,自己就动手写了一个串口转TCP的小程序,基本特征如下:

1、支持打开物理串口和虚拟串口(不创建虚拟串口,但能打开其他工具创建的虚拟串口)。

2、支持通过TCP客户端连接到远程TCP服务器。

3、支持TCP客户端自动重连,并可配置重连周期。

4、支持TCP服务端监听,支持接入一个TCP连接,不支持多个TCP连接同时接入。

5、支持日志跟踪功能。

6、支持日志自动清空功能,并能配置。

7、支持日志暂停显示功能。

8、支持通信计数功能。

9、支持通信计数手动清零功能。

10、支持配置自动保存功能,软件下次启动自动加载上次配置。

软件名字暂定为TCP2Com,界面如图10所示:

图10 TCP2Com界面

如果需要可以通过下面的链接下载最新版本:

TCP2Com-标签版V1.2.9.1免费好用的串口转TCP工具

TCP2Com-标签版V1.2.8.1免费好用的串口转TCP工具

TCP2Com-标签版V1.2.7.2免费好用的串口转TCP工具

TCP2Com-标签版V1.2.7.1免费好用的串口转TCP工具

http://www.xdnf.cn/news/836173.html

相关文章:

  • java编程思想pdf高清
  • 网络设备主备配置系列2:netscreen防火墙双机主备
  • MUI框架-01-介绍-准备-创建项目
  • NHibernate配置
  • 逻辑门图解—与门、或门、非门、与非门、或非门、异或门、同或门
  • PHP实现数据进行四舍五入的4种方法
  • 制作高质量SVG的最佳工具,这些编辑软件你需要知道!
  • 【MySQL】——数据库设计概述与需求分析
  • Linux驱动程序的数据封装
  • Myeclipse下载与破解
  • vscode使用‘koroFileHeader‘插件生成注释
  • USB转串口设备实现PC端与开发板连通
  • insert into 语句的四种写法
  • 摩托罗拉XOOM解锁,刷入Recovery,XOOMROOT,卡刷ROM最全最实用的教程
  • C/C++和python中的指针区别【含代码】
  • 一文读懂大厂面试的操作系统面试题目(超详细整理,线程,进程,死锁)
  • BF算法(暴⼒算法)-- 模式匹配算法
  • 《鸟哥Linux私房菜》学习笔记
  • 异步调用的理解
  • mysql select内部原理_数据库SQL SELECT查询的工作原理
  • 【WinForm详细教程五】WinForm中的MenuStrip 、ContextMenuStrip 、ToolStrip、StatusStrip控件
  • mysql通配符_MySQL 通配符学习小结
  • windows系统中查看linux分区的三种方式
  • sqlite 和berkeley db 的性能比较
  • 项目目标和期望未被清晰传达,如何改进?
  • 百度基本搜索技巧
  • 文件传输中的MD5校验技术
  • 使用libxml2解析XML文件
  • 压箱底的8个网站,各种高效工具应有尽有
  • 计算机网络笔记整理(第七版)谢希仁