美文网首页
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串口通信的实现

    串口设置 开机启动信息可以看到串口的名称,例如以下串口启动信息: 可以看到串口的名称为ttyATH0,此时可以ls...

  • 串口通讯

    Android应用串口通信的实现 Android SDK并没有在Framework层实现封装关于串口通信的类库。但...

  • 9月21日

    今天讲的全新内容 串口通信 什么是串口和并口 主要讲解是串口通信寄存器的配置 并且初步实现了通信功能 下午复习上午...

  • 串口通信

    串口收发 串口中断实现收发 深入串口通信 delay.h delay.c display.h display.c ...

  • 陆:串口环形缓冲(STC15WK32S4)

    1:串口作为嵌入式最常用的通信接口,用于debug、控制串口模块、实现232、485通信、modbus协议移植;2...

  • QT5串口通信(Hex格式传输)

    参考博客: 博客园-菜头大大:QT串口通信 CSDN-宗师之路:QT实现串口通信(附源码下载) CSDN-xz-c...

  • 14-Openwrt ubus

    ubus是OpenWrt中的进程间通信机制,ubusd实现server,其他进程实现client,例如ubus(c...

  • Android 串口通信开发笔记3:CMake 方式实现和 多对

    上一篇:Android 串口通信笔记2 调试工具分析 工具类实现分析、项目实现Android串口开发 延伸和扩展,...

  • GO-serial

    GO串口通信实现 1、包名称github.com/tarm/serial 2、简单实现

  • 单片机串口数据处理框架

    1、背景 串口通信具有广泛的应用,一方面串口配置简单,仅需3根线(tx、rx、gnd)即可实现通信,另一方面串口具...

网友评论

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

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