通过内存映射的方式向lcd屏幕输出几个圆
/*************************************************
*
* file name:color.c
* author :momolyl@126.com
* date :2024/05/11
* brief :通过内存映射的方式向lcd屏幕输出几个圆
* note :None
*
* CopyRight (c) 2024 momolyl@126.com All Right Reseverd
*
**************************************************/
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/mman.h>
int main(void)
{
int lcd_fd = open("/dev/fb0", O_RDWR);
if (-1 == lcd_fd)
{
printf("open lcd faild\n");
return -1;
}
int *lcd_mmap = (int *)mmap(
NULL,
800 * 480 * 4,
PROT_READ | PROT_WRITE,
MAP_SHARED,
lcd_fd,
0);
int x = 350, y = 300, r = 50;
int x1 = 100, y1 = 100, r1 = 20;
int x2 = 600, y2 = 260, r2 = 70;
for (int i = 0; i < 800 * 480; i++)
{
if (((i / 800) - y) * ((i / 800) - y) + ((i % 800) - x) * ((i % 800) - x) <= r * r)
{
lcd_mmap[i] = 0x00CCFFFF;
}
else if (((i / 800) - y1) * ((i / 800) - y1) + ((i % 800) - x1) * ((i % 800) - x1) <= r1 * r1)
{
lcd_mmap[i] = 0x00FFCCE5;
}
else if (((i / 800) - y2) * ((i / 800) - y2) + ((i % 800) - x2) * ((i % 800) - x2) <= r2 * r2)
{
lcd_mmap[i] = 0x00CCCCFF;
}
else
lcd_mmap[i] = 0x00ffffff;
}
write(lcd_fd, lcd_mmap, 800 * 480 * 4);
return 0;
}
运行结果

通过内存映射的方式向lcd屏幕输出几个圆的更多相关文章
- linux mmap 内存映射【转】
转自:http://blog.csdn.net/xyyangkun/article/details/7830313 [-] mmap vs readwritelseek mmap vs malloc ...
- JAVA I/O(三)内存映射文件
<Java编程思想>中对内存映射文件有详细的介绍,此处仅做简单记录和总结.内存映射文件允许创建和修改因为太大而不能放入内存的文件. 1. 内存映射文件简单实例 import java.io ...
- ZT 匿名内存映射
mmap函数使用 分类: Linux/Unix C/C++ 2008-01-22 17:03 6089人阅读 评论(1) 收藏 举报 unix编程null网络 UNIX网络编程第二卷进程间通信对mma ...
- C++中使用内存映射文件处理大文件
引言 文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类,常用的有Win32 API的CreateFile().WriteFile().ReadFile() ...
- mmap内存映射
http://blog.csdn.net/kongdefei5000/article/details/70183119 内存映射是个很有用,也很有意思的思想.我们都知道操作系统分为用户态和内核态,用户 ...
- C语言 mmap()函数(建立内存映射) 与 munmap()函数(解除内存映射)
mmap将一个文件或者其它对象映射进内存.文件被映射到多个页上,如果文件的大小不是所有页的大小之和, 最后一个页不被使用的空间将会清零.mmap在用户空间映射调用系统中作用很大. 条件 mmap()必 ...
- 共享内存之——mmap内存映射
共享内存允许两个或多个进程共享一给定的存储区,因为数据不需要来回复制,所以是最快的一种进程间通信机制.共享内存可以通过mmap()映射普通文件 (特殊情况下还可以采用匿名映射)机制实现,也可以通过sy ...
- linux mmap 内存映射
mmap() vs read()/write()/lseek() 通过strace统计系统调用的时候,经常可以看到mmap()与mmap2().系统调用mmap()可以将某文件映射至内存(进程空间), ...
- linux 内存映射-ioremap和mmap函数
最近开始学习Linux驱动程序,将内存映射和ioremap,mmap函数相关资料进行了整理 一,内存映射 对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器 ...
- Windows进程间通信--共享内存映射文件(FileMapping)--VS2012下发送和接收
之前以为两个互不相关的程序a.exe b.exe通信就只能通过网络,人家说可以通过发消息,我还深以为不然,对此,我表示万分惭愧. 之前课本上说的进程间通信,有共享内存.管道等之类的,但没有自己操刀写过 ...
随机推荐
- 微信和支付宝异步回调通知IP白名单
附一:微信支付回调通知出口IP列表 商户侧对商户回调通知功能开通白名单网段: 上海电信出口网段:101.226.103.0/25 上海联通出口网段:140.207.54.0/25 上海CAP出口网段: ...
- 警告: BASE64Decoder是内部专用 API, 可能会在未来发行版中删除
警告: BASE64Decoder是内部专用 API, 可能会在未来发行版中删除 import org.apache.commons.codec.binary.Base64; public class ...
- 15-容器简介与Docker安装
传统企业应用构建 应用被直接部署在操作系统之上,并且操作系统直接安装于硬件之上应用被操作系统绑定 操作系统被硬件绑定 缺点 部署非常慢(启动应用的速度非常慢) 成本非常高(原有服务器的操作系统不支持这 ...
- Profinet IO从站数据 转EtherCAT项目案例
目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 准备工作 2 4 使用PRONETA软件获取PROFINET IO从站的配置信息 2 5 设置网关采集PROFINETIO从站设备数据 5 ...
- post基础错误注入
Burpsuite抓取HTTP请求 Burpsuite是一款Web安全测试的利器,集成了几乎Web安全测试中所有需要用到的功能. 运行前提: 需要安装Java https://www.java.com ...
- 随机数据下 Sqrt Tree 的平替实现
原理 在随机数据下,把原序列分成 \(\sqrt n\) 个块,维护每个块的前缀后缀最大值,那么,在随机询问下,对于在一个块中的询问,暴力查询. 复杂度 概率 $ n ^ {-\frac{1}{2}} ...
- Mac Idea中获取application.properties的值,中文乱码
设置idea配置 将Properties Files (*.properties)下的Default encoding for properties files设置为UTF-8,将Transparen ...
- SpringBoot2.X定时任务schedule
什么是定时任务和常见定时任务区别? 某个时间定时处理某个任务 发邮件.短信等 消息提醒 统计报表系统 ... 常见定时任务 Java自带的java.util.Timer类配置比较麻烦,时间延后问题 Q ...
- git http(s) 保存用户密码
git 常用配置 git记住密码 1.设置记住密码(默认15分钟): git config --global credential.helper cache 2.如果想自己设置时间,可以这样做: gi ...
- [oeasy]python0097_苹果诞生_史蒂夫_乔布斯_沃兹尼亚克_apple_I
苹果诞生 回忆上次内容 上次时代华纳公司 凭借手中的影视ip和资本 吞并了雅达利公司 此时 雅达利公司 曾经开发过pong的 优秀员工 乔布斯 还在 印度禅修 寻找自我 看到游戏行业 蓬勃发展 乔布斯 ...