美文网首页
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