手上有一块前两年留下来的MT7688,上面盖了一张与板子同样大小的串口屏。今天拿出来准备用来显示Pi的相关信息。其实仅用来作显示是比较浪费的。
先试过用golang的交叉编译,但一是编译通不过,毕竟是mips,问题更多。再者编译出来的文件也比较大。MT7688的空间是有限的。然后就换成了python。
其实也是比较简单,go和python都没有太多区别。
开启一个Web服务,通过参数来调用shell,进而控制串口/dev/ttyS0,发送指令到串口屏。
显示内容: /display/字体大小/x位/y位/颜色/显示内容 直接发代码:/code/代码内容 清屏: /clear 或 /clear/颜色
非专业焊工,将就能用了。
from bottle import route, run, template
import os,urllib2
@route('/display/<size>/<x>/<y>/<color>/<info>')
def display(size,x,y,color,info):
display = (urllib2.unquote(info)).decode("utf-8").encode("gb2312")
os.system("echo \"BS%s(%s,%s,240,4,' ',0);BS%s(%s,%s,240,4,'%s',%s);\" > /dev/ttyS0" % (size,x,y,size,x,y,display,color))
return template('<b>{{info}}</b>', info=info)
@route('/disp/<size>/<x>/<y>/<color>/<info>')
def display(size,x,y,color,info):
display = (urllib2.unquote(info)).decode("utf-8").encode("gb2312")
os.system("echo \"DS%s(%s,%s,' ',0);DS%s(%s,%s,'%s',%s);\" > /dev/ttyS0" % (size,x,y,size,x,y,display,color))
return template('<b>{{info}}</b>', info=info)
@route('/code/<info>')
def code(info):
display = (urllib2.unquote(info)).decode("utf-8").encode("gb2312")
os.system("echo \"%s;\" > /dev/ttyS0" % display)
return template('<b>{{info}}</b>', info=info)
@route('/clear')
def clear():
os.system("echo \"CLS(0);\" > /dev/ttyS0")
return "Clear Display"
@route('/clear/<color>')
def clear(color):
os.system("echo \"CLS(%s);\" > /dev/ttyS0" % color )
return "Clear Display " + color
run(host='', port=8080)
然后Pi就可以直接访问地址,发送一些相关信息了。
附加一个MT7688后台运行程序的方法:
- 安装nohup
opkg update
opkg install coreutils-nohup
- 后台运行
nohup python /etc/server.py >/dev/null 2>&1 &
应该直接加到/etc/rc.local中
另外,要我关闭亮瞎眼的两个LED灯:
关闭WIFI灯: echo 0 > /sys/class/leds/mediatek:orange:wifi/brightness
电源灯暂时没找到方法。