当前位置: 首页 > news >正文

监控系统2 - framebuffer

一、framebuffer

1. 概念

        framebuffer是Linux系统中一种底层的图形接口,他直接在内存中开辟一块显示缓冲区,这块内存区域与屏幕像素一一对应,通过修改这块内存的数据控制屏幕显示内容

        frame        帧缓存       
FPS          帧率一秒钟刷新次数

2. 参数

1. 分辨率

                屏幕的宽和高的像素点
例如:2500*1400,开发板:800*480(4.3英寸)

2. 色深

                颜色空间,每个像素点用多少位数据来表示颜色
RGB888 / 24bit                :24位色深,红绿蓝各占8位(1677w)
RGB565 / 16bit红绿蓝     :16位色深,红5位,绿6位,蓝5位(6.5w)

2. 特点

画面简单,不需要复杂交互,底层控制,并行传输,速率快

使用触屏、美观等高级控制需要LVGL图形库图形库

3. 接口

并行传输接口,数据传输速率快

屏幕使用RGB888接口:24根数据线同时传输,适合嵌入式系统中的实时显示

32位操作系统使用4字节操作,所以操作RGB时为ARGB,A:透明度

4. 操作步骤

1. / dev / fb0 open ,rw

2. ioctl,获得属性

3. mmap

4. 写入数据

5. close / uninit_fb

        

二、主要函数

1. main.c

1. 打开设备文件

2. 调用图形操作

3. 删除设备

2. utf.c

字库,解码汉字

3. framebuffer.c

1. init_fb

extern int init_fb(char *devname);

2. draw_point

extern void draw_point(int x,int y, unsigned int col);

绘制像素点


3. draw_clear

extern void draw_clear(unsigned int col);

清屏

4. draw_line

extern void draw_h_line(int x, int y, int len, unsigned int col);

绘制横线

extern void draw_s_line(int x, int y, int len, unsigned int col);

绘制竖线

extern void draw_x_line(int x1, int y1, int x2, int y2, unsigned int col);

绘制斜线

5. draw_rectangle

extern void draw_rectangle(int x, int y, int w, int h, unsigned int col);

6. draw_circle

extern void draw_circle(int x0, int y0, int r, unsigned int col);

7. draw_bmp

extern void draw_bmp(int x, int y, char *picname, int w, int h);

绘制bmp图片

bmp图片:前54位保存图片的属性信息,宽高色深,从第55位开始,以BGR顺序存放像素点信息

8. draw_word

extern void draw_word(int x, int y, unsigned char *word, int w, int h, unsigned int col);

 取模:输入一个文字     =>    ctrl+enter    =>    取模方式     =>   C51格式

取模方式绘制汉字


9. draw_utf8_str

extern int draw_utf8_str(UTF8_INFO *info, int arg_x, int arg_y,  char* zi, unsigned int col, unsigned int col1);

GB2312编码表两个字节表示一个汉字

utf-8标准三个字节表示一个汉字

获取字库:
编码选择:UNICODE
位置大小:配置位8的倍数
字库格式:DZK

 

备注宽高,用于编写

9. extern void uninit_fb(int fd);

三、补充

uboot命令

env default -a                                        #恢复默认
saveenv                                                #保存
setenv ipaddr 192.168.1.50                  #设置板子的地址(uboot状态)
setenv ethaddr 00:04:9f:04:d2:35        #网卡硬件地址
setenv gatewayip 192.168.1.1             #网关地址
setenv netmask 255.255.255.0            #子网掩码
setenv serverip 192.168.1.100             #tftp server的地址,也就是虚拟机的ip地址
saveenv
ping 192.168.1.100                              #测试通断

http://www.dtcms.com/a/457348.html

相关文章:

  • 大型网站响应式wordpress3.8.3
  • Django `models.Field` 所有常见配置参数的完整清单与说明表
  • 音乐播放器-单html文件
  • 18+网站推广平面设计师素材网站
  • 告别传统SEO!拥抱下一代流量密码:生成式引擎优化(GEO)实战指南
  • 不抽佣美团核销API接口,同时支持美团抖音核销,快速接入
  • 优化网站关键词的技巧建设银行忘记密码网站
  • 网站建设属于服务还是货物为什么asp.net做的网站上传后不显示照片
  • TT直流减速电机(STM32)
  • MQTT协议三个核心函数的详解
  • 马拉松网站建设方案汽车网站管理系统
  • 【企业架构】TOGAF架构标准规范-技术架构
  • 【Proteus仿真】甲单片机(AT89C51)控制乙单片机(AT89C51)
  • 南阳网站推广优化公司discuz和wordpress区别
  • XSLT `<value-of>` 标签详解
  • 做外贸网站注册什么邮箱懒人模板网站
  • 案例-使用Postman向百度首页发送带时间戳的GET请求
  • leetcode排序链表
  • 做经营性的网站备案条件汉字叔叔花了多少钱做网站
  • 效果好企业营销型网站建设手机html5网站源码
  • 浏览器事件循环与内存管理可视化
  • 虚拟机双网卡设置
  • 吴恩达机器学习课程(PyTorch适配)学习笔记:2.2 前向传播与推理
  • 530.二叉搜索树的最小绝对差(二叉树算法题)
  • 如何解决 pip install -r requirements.txt extras 语法 ‘package[extra’ 缺少 ‘]’ 解析失败问题
  • 青岛网站建设方案辽阳网站建设
  • 磁悬浮轴承中基于位移信号的转子位置与转速估计深度解析摘要
  • 个人和做网站方签合同模板一流的聊城网站建设
  • 什么是UIOTOS?
  • 网站建设书籍论文龙网网络推广软件