美文网首页
openwrt 串口透传

openwrt 串口透传

作者: 机器文学 | 来源:发表于2019-10-14 00:05 被阅读0次

用openwrt下的luasocket、ser2net两个软件包实现了串口透传,记录一下。

1、试验环境:

小米mini路由器R1C(MT7620),Openwrt版本:PandoraBox-ralink-mt7620-xiaomi-mini-squashfs-sysupgrade-r1024-20150608,串口:ttyUSB0(ch340芯片,驱动包是 kmod-usb-serial-ch341)

2、ser2net

2.1 安装ser2net包
具体请百度
2.2 配置ser2net
ser2net具体配置见:https://www.widora.io/ser2net,我用的是ttyUSB0,所以我的配置文件,需要配置的部分如下 :

# Don't do this by default
#CONTROLPORT:2000

9001:raw:0:/dev/ttyUSB0:115200
#9000:raw:0:/dev/ttyUSB0:115200 NONE 1STOPBIT 8DATABITS -XONXOFF LOCAL -RTSCTS

2001:raw:600:/dev/ttyS0:9600 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL -RTSCTS
#2002:raw:600:/dev/ttyS1:9600 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL -RTSCTS
2003:raw:5:/dev/ttyS2:9600
2004:raw:5:/dev/ttyS3:115200
2005:raw:5:/dev/ttyS4:9600
2006:raw:5:/dev/ttyS5:9600
2007:raw:5:/dev/ttyS6:9600 tw=tw1 tr=tr1
3001:telnet:0:/dev/ttyS0:19200 remctl banner1
3011:telnet:3:/dev/ttyS0:19200 banner2
#3002:telnet:0:/dev/ttyS1:9600
3003:telnet:0:/dev/ttyS2:9600 banner3
3003:telnet:0:/dev/ttyS2:9600 signature1
3004:telnet:0:/dev/ttyS3:115200
3005:telnet:0:/dev/ttyS4:9600
3006:telnet:0:/dev/ttyS5:9600 open1
3007:telnet:0:/dev/ttyS6:9600 close1
5001:rawlp:10:/dev/lp0

2.3 启动ser2net
保存以上配置文件以后,在命令行里执行 ser2net -c /etc/ser2net.conf 启动ser2net

3、luasocket

luasocket安装
请自行百度
luasocket脚本
在任意路径下新建lua脚本文件,我的是建立在/www下,文件名为net2ser7,脚本代码如下:

local socket1 = require ("socket")
local host1 = "127.0.0.1"                  --本机,即ser2net启动本地的TCP服务器
local port1 = 9001                        --本机端口9001,参看ser2net.conf配置文件
client1 = socket1.connect(host1, port1)
if not client1 then
    print("connect server1 failed.")
else
    client1:send("123")
end
client1:settimeout(0)             --超时为0,即不启用,接收数据时不等待,也即不阻塞


local socket2 = require ("socket")
local host2 = "x.x.x.x"        --目标服务器
local port2 = 9001
client2 = socket2.connect(host2, port2)

client2:settimeout(0)

if not client2 then
    print("connect server2 failed.")
else
    client2:send("123")
end

local s11,s12,s21,s22

local ss=""
local lastTime=socket.gettime()

while true do
        
    s11,s12= client1:receive(1)
    if s11~=nil then
        ss=ss..s11
        lastTime=socket.gettime()
        --print(socket.gettime())
    end
    
    if ((socket.gettime()-lastTime) > 0.01) then 
        client2:send(ss)
        ss=""
    end
        

    s21,s22= client2:receive(1)
    if s21~=nil then
        client1:send(s21)
    end 

end

启动lua脚本
在/www下输入命令即可:lua net2ser7

相关文章

网友评论

      本文标题:openwrt 串口透传

      本文链接:https://www.haomeiwen.com/subject/hiqlmctx.html