framebuffer 内存缓冲驱动显示,这源自于使用fbterm后,可以直接通过/dev/fbx来控制屏幕显示。
单纯的把framebuffer看作一块内存,这部分内存包含了将要scan out显示的数据。
等价于framebuffer driver。通常作为LCD控制器或者其他显示设备的驱动,FrameBuffer驱动是一个字符设备,设备节点是/dev/fbX,主设备号为29,次设备号递增,用户可以将Framebuffer看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行读写操作,而写操作可以立即反应在屏幕上。这种操作是抽象的,统一的。用户不必关心物理显存的位置、换页机制等等具体细节。这些都是由Framebuffer设备驱动来完成的。Framebuffer设备为上层应用程序提供系统调用,也为下一层的特定硬件驱动提供接口;
这即解决了在我的眼镜显示器中字体过小的问题,也解决了显示汉字的问题。
这样,我可以通过ssh ease@192.168.1.53 “/home/ease/tools/eyeDisplay -text 中国” 这种方式来“远程控制显示内容”
或者与之前修改的Croc结合,跨平台跨内外网发送消息到眼镜上。
croc –quiet –code 123123 –text “CCTV发来贺电”
这个基本与fbterm无关,通过此技术可以直接控制显示
版本:
0.6a
功能:
- 屏幕上显示文字,允许多行
- 屏幕上叠加图片,允许网络图片和本地图片
- 网页截图并显示
- 通过脚本及croc,实现跨平台跨内外网发送信息到屏幕
- API调用,显示调用文本
示例:
清除显示:gDisplay -c
显示字符:gDisplay -t CCTV12
指定位置显示:gDisplay -t CCTV12 -x 10 -y 10
显示字符需清除背景:gDisplay -t CCTV12 -c
指定颜色:gDisplay -t CCTV12 -c -r 200 -g 0 -b 0 -a 100
显示全图,自动缩放:gDisplay -p 1.jpg -pr
网络图片: gDisplay -p https://i.scwy.net/other/pay_good.jpg -px 300 -c
API调用:gDisplay -i https://push.scwy.net/counter?host=https://i.scwy.net -t "" -c
API调用,指定格式:gDisplay -i https://push.scwy.net/counter?host=https://i.scwy.net -c -ic “今日: {{today}}\n总计: {{views}}” -t ""
多行文本: gDisplay -t “CCTV12发来贺电ABC\n哈哈哈” -c
另外,借助croc实现显示:croc send –code 123123 –text “-t CCTV发来贺电 -c”
说明:
程序在Linux的终端下使用(Debian使用中,其它未测试)
循环接收,用在显示端
#!/bin/bash
# croc不断获取文本
while true; do
ret=`croc --yes --quiet 123123`
if [ $ret ]; then
gDisplay $ret
fi
sleep 5s
done
可以升级的地方:
- 文字自动折行
- 图片显示
- 富文本支持
- 滚动显示
package main
import (
"flag"
"image"
"image/color"
"image/draw"
"io/ioutil"
"os"
"path/filepath"
"strings"
"fmt"
"github.com/golang/freetype"
"github.com/gonutz/framebuffer"
"golang.org/x/image/font"
)
var (
FontFile = "" // 字体文件名
FontSize = 80 // 字体大小
FontLocationX = 150 // 位置
FontLocationY = 150 //
FontColorR = 250 // 颜色RGBA
FontColorG = 250 // 颜色RGBA
FontColorB = 250 // 颜色RGBA
FontColorA = 250 // 颜色RGBA
ClearBackground = true // 清除背景
ShowText = "腾图工作室 i.SCWY.net" // 显示内容
Help = false
)
// 遍历获取字体文件
func walkFunc(path string, info os.FileInfo, err error) error {
if strings.HasSuffix(path, ".ttf") {
FontFile = path
}
return nil
}
func main() {
filepath.Walk(".", walkFunc) // 遍历获取字体文件
flag.StringVar(&ShowText, "text", …