开发环境:
主机:Ubuntu 20.04
开发板:MYD-YG2UL开发板
1 ser2net简介
ser2net(Serial to Network Proxy)给用户提供了一种网络与串口相互连接的软件,它可以将串口数据通过网络传输到远程设备上。本文将介绍ser2net的原理及其在实际应用中的作用。
1.1 ser2net的原理
ser2net是一种基于TCP协议的串口服务器,它通过将串口数据转换成网络数据包,实现了串口数据的远程传输。ser2net的工作原理可以分为以下几个步骤:
1.配置串口参数:首先需要对sr2net进行配置,包括串口的波特率、数据位、停止位等参数,以及网络相关的配置,如IP地址、端口号等。
2.建立TCP连接:ser2net在启动后会监听指定的端口,当有客户端请求建立TCP连接时,ser2net会接受连接请求,并与客户端建立起TCP连接。
3.串口数据转发:一旦TCP连接建立成功,ser2net会开始监听串口上的数据。当有数据到达时,ser2net会将数据通过TCP连接发送给客户端。同时,ser2nt会监听客户端发送的数据,并将其转发到串口上。
4.数据处理:ser2nt还支持对数据进行处理和转换。例如,可以对接收到的数据进行校验、解析或加工,然后再将其发送给客户端。
1.2 ser2net的应用场景
ser2net在实际应用中有着广泛的用途,主要体现在以下几个方面:
1.远程控制:通过ser2nt,可以远程控制位于远程地点的设备。例如,可以通过互联网远程控制家里的智能家居设备,或者通过远程终端机访问远程服务器。
2.数据采集:ser2nt可以将串口设备连接到远程服务器上,实现数据的远程采集。例如,可以将气象设备的串口连接到云服务器上,实时采集气象数据并进行分析。
3.远程调试:ser2net可以用于远程调试嵌入式设备。当嵌入式设备出现问题时,可以通过ser2net将设备的串口输出信息传输到远程服务器上,方便进行调试和故障排查。
4.数据共享:ser2net可以实现多个设备之间的数据共享。例如,可以将一台设备的串口数据通过ser2net转发到其他设备上,实现数据的共享和交互。
5.远程维护:ser2net可以用于远程维护设备。例如,可以通过ser2net将设备的串口连接到远程维护中心,实现对设备的远程维护和管理。
1.3 ser2net的优势
相比传统的串口通信方式,ser2net具有以下几个优势:
1.灵活性:ser2net可以将串口设备连接到任意远程服务器上,实现串口数据的远程传输。这种灵活性使得ser2net在各种应用场景下都能发挥作用。
2.扩展性:sr2net支持多个串口设备的同时连接和传输,在满足大规模数据传输需求的同时,还可以方便地扩展和添加新的串口设备。
3.可靠性:sr2net使用TCP协议进行数据传输,具有较高的可靠性和稳定性。即使在网络环境较差的情况下,也能保证数据的稳定传输。
4.安全性:ser2net支持对传输数据进行加密和认证,确保数据的安全性。同时,ser2net还可以限制连接的P地址和端口号,提高系统的安全性。
2 ser2net移植
1.下载源码
2.解压源码
$ tar -xvf ser2net-3.5.1.tar.gz
$ cd ser2net-3.5.1/
3.配置
./configure --host=aarch64-poky-linux
- “arm-linux”是交叉编译工具的前缀,根据自己的实际情况进行修改。
3.编译并安装
设置环境变量:
$ source /opt/poky/3.1.21/environment-setup-aarch64-poky-linux
编译
$ make
最后将程序下载到开发板,修改用户权限后即可运行。
$ tftp -g -l ser2net -r ser2net 192.168.101.11
3 ser2net测试
接下来就需要修改配置文件。
$ vim ser2net.conf
8008:raw:600:/dev/ttySC4:115200 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL -RTSCT
ser2net工具安装完后,可执行文件放在:/sbin/ser2net,新建配置文件ser2net.conf
配置项说明如下:
<TCP port>:<state>:<timeout>:<device>:<options>
格式说明:
- TCP port:TCP/IP端口号,可以加IP信息如127.0.0.1 , 2000或者localhost,2000; 如果这里指定了 IP,则只能绑定在这个固定的IP
- state: 四种可选状态
- off: 禁止该端口的连接
- raw: 端口和串口设备之间双向通信
- rawlp: 端口向串口设备单向通信
- telnet: 使用telnet协议时用
- timeout:超时,以秒为单位;当没有活动的连接时,可以设置这个时间关闭端口;常写0,关闭该功能,即不会超时
- device: 指定映射本机的哪个串口(This must be in the form of /dev/<device>)
- options: 设置串口的参数如:波特率(300,1200,2400,4800,9600,19200,38400,57600,115200)
- 校验(EVEN,ODD,NONE)
- 停止位(1STOPBIT,2STOPBITS)
- 数据位(7DATABITS,8DATABITS)
- 开启(关闭)XON\XOFF :XONXOFF(-XONXOFF)
- 开启(关闭)硬件控制流:RTSCTS(-RTSCTS)
启动ser2net.。
$ ./ser2net -C ser2net.conf
当然也可直接使用命令。
$ ./ser2net -C "8008:raw:600:/dev/ttySC4:115200 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL -RTSCTS"
然后查看ser2net运行状态。
$ ps -elf | grep ser2net
TCP连接:
串口接收数据: