美文网首页
OPENWRT串口通信的实现

OPENWRT串口通信的实现

作者: hades2013 | 来源:发表于2018-04-11 10:55 被阅读0次

    串口设置

    开机启动信息可以看到串口的名称,例如以下串口启动信息:

    Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled
    ar933x-uart: ttyATH0 at MMIO 0x18020000 (irq = 11) is a AR933X UART
    console [ttyATH0] enabled, bootconsole disabled
    

    可以看到串口的名称为ttyATH0,此时可以ls /dev/查看确认。

    stty 串口波特率设置

    opkg update  //更新软件列表
    opkg install coreutils-stty //安装stty
    stty -F /dev/ttyATH0 raw speed 9600  //设置ttyATH0串口的波特率为9600
    echo "hello" > /dev/ttyACM0  //向串口输出字符"hello"
    cat /dev/ttyATH0  //读取串口
    

    屏蔽串口的系统显示(消除乱码和串口BusyBox 影响)

    编辑文件:vi /etc/inittab

    ::sysinit:/etc/init.d/rcS S boot
    ::shutdown:/etc/init.d/rcS K shutdown
    ttyS0::askfirst:/bin/ash --login
    #ttyATH0::askfirst:/bin/ash --login  #注释此行
    
    

    将串口波特率设置添加到开机启动

    编辑文件:vi /etc/init.d/usart
    文件属性:chmod 777 /etc/init.d/usart

    #!/bin/sh /etc/rc.common
    #/etc/init.d/usart
    START=80
    start() {
      /usr/bin/stty -F /dev/ttyS0 raw speed 9600
    }
    stop(){
    killall usart
    }
    

    启用开机启动:/etc/init.d/usart enable

    UHTTP配置修改

    配置lua有效路径、默认访问端口、页面位置
    编辑文件:vi /etc/config/uhttpd

    list 'listen_http' '0.0.0.0:80'      // 默认端口设置
    list 'listen_https' '0.0.0.0:443'  // 通过https访问,端口设定
    option 'home' '/www'               // 页面所在的位置
    option 'cert' '/etc/uhttpd.crt'    // https访问对应的证书
    option 'key' '/etc/uhttpd.key'   // 和上面的cert有关系
    option 'cgi_prefix' '/cgi-bin'      //cgi有效路径,相对于home
    
    /etc/init.d/uhttpd restart //重启uhttpd加载新的配置文件
    

    LUA操作系统库

    函数os.exit终止一个程序的执行。函数os.getenv得到“环境变量”的值。以“变量名”作为参数,返回该变量值的字符串:

     print(os.getenv("HOME"))    --> /home/rming
    

    如果没有该环境变量则返回nil。函数os.execute执行一个系统命令(和C中的system函数等价)。该函数获取一个命令字符串,返回一个错误代码。例如在Unix系统里都可以执行如下代码创建一个新目录:

    function createDir (dirname)
        os.execute("mkdir " .. dirname)
    end
    

    从web调用GET方式输出到到串口

    路由器开机输出过多字符串,需要在路由器和单片机中添加命令标志位。

    #!/usr/bin/lua
    ser_out=io.output("/dev/ttyATH0")
    io.write("codecommond")
    io.write(os.getenv("QUERY_STRING"))
    ser_out:close()
    print [[
    Content-Type: text/plain
    ]]
    

    监听串口接收下位机上传的数据(开机后台运行)

    单片机发送指令,路由器接收指令,执行指令
    单片机可以发起的动作有:
    1、存储数据到路由器 指令形式:1:key,value/r/n
    2、访问互联网网络 指令形式:2:url/r/n
    3、执行指令 指令形式 3:code/r/n

    #!/usr/bin/lua
    #!/usr/bin/lua
    ser_in=io.input("/dev/ttyATH0")
    while 1
    do
    ser_char=io.read(1)
    if ser_char=="1" then
    do
    print("1")
    end
    elseif ser_char=="2" then
    do
    print("2")
    end
    elseif ser_char=="3" then
    do
    print("3")
    end
    else
    print("others")
    end
    end
    

    相关文章

      网友评论

          本文标题:OPENWRT串口通信的实现

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