01-基于粤嵌GEC6818实现屏幕的显示固定颜色进行自动切换

基于GEC6818实现屏幕颜色的切换

本文使用开发板GEC6818,实现屏幕显示特定颜色并且进行自动切换的功能。

文章目录

  • 基于GEC6818实现屏幕颜色的切换
    • 一、 初始化开发板--(开发板是新的则可以省略很多步骤)
      • 1.1 **删除文件和文件夹**
      • 1.2 **查看磁盘空间**
      • 1.3 **编辑配置文件**
      • 1.4 **创建文件夹**(选做)
      • 1.5 **使用串口工具进行文件传输**
      • 1.6 **更改文件权限**
    • 二、 练习:实现循环切换颜色
      • 2.1 解析
      • 2.2 代码实现

一、 初始化开发板–(开发板是新的则可以省略很多步骤)

拿到开发板GEC6818时可能需要做(开发板不是新的)

1.1 删除文件和文件夹

  • rm *: 删除当前目录下的所有文件。

1.2 查看磁盘空间

  • df -h: 显示磁盘使用情况。-h选项使输出以易读的格式显示。–查看该开发板的磁盘还有多少,如果很少了则需要再删除一些没有用的(前人的)文件夹

1.3 编辑配置文件

  • vi /etc/profile: 使用vi编辑器打开/etc/profile文件。在这里,需要手动查找并注释掉特定的行。在vi编辑器中,注释行通常是使用#字符开头的行。

  • 如果是别人使用过的开发板则看一看是否存在

        #source /IOT/driver_ko/insmod_driver.sh#cd/ IOT                                  #./iot &  #前面打 #   表示注释
    

1.4 创建文件夹(选做)

  • mkdir -p /var/log: 创建一个名为log的文件夹。如果var文件夹不存在,则先创建var文件夹,然后再创建log文件夹。–这个文件夹用来存放自己的文件当然这个也可以不做,看个人习惯

1.5 使用串口工具进行文件传输

  • rx 名字: 这是一个命令行工具,用于从另一个设备(如计算机)接收文件。在接收文件之前,您需要在发送端启动xmodem传输,然后使用CRT或其他串口工具发送文件。回车就会有一个C在闪,CRT -> 传输 -> 发送xmodem
    找到你要下载的文件双击/点击发送即可
    等待传输完成
  • 在这里插入图片描述

1.6 更改文件权限

  • chmod +x lcd: 赋予lcd文件可执行权限。这意味着您可以在此文件上运行它,前提是它是一个可执行文件。

二、 练习:实现循环切换颜色

在Linux系统上使用帧缓冲设备交替显示绿色和红色。每次颜色变化都会持续1秒,然后切换到另一种颜色,这样循环进行.
注意有函数:
延时 sleep(1)–>s级延迟
usleep(1)–>微秒级的延迟
当然可以。sleepusleep 是两个用于在程序中引入延迟的函数。它们都用于暂停程序的执行,但它们的时间单位和实现方式有所不同。

  1. sleep(1) - 秒级延迟

    • 原型unsigned int sleep(unsigned int seconds);
    • 参数seconds - 指定要暂停的秒数。
    • 返回值sleep 函数返回时剩余的秒数。
    • 实现sleep 函数会导致调用进程暂停执行,直到指定的秒数已过去或被捕获到信号。这是一个较为粗糙的延迟,因为它只能精确到秒。
  2. usleep(1) - 微秒级延迟

    • 原型int usleep(useconds_t useconds);
    • 参数useconds - 指定要暂停的微秒数。
    • 返回值usleep 函数没有返回值。
    • 实现usleep 函数会导致调用进程暂停执行,直到指定的微秒数已过去或被捕获到信号。这允许更细粒度的时间控制,因为它可以精确到微秒。

注意

  • 虽然 usleep 在许多系统中仍然可用,但它在某些系统和版本中已被标记为弃用。建议使用 nanosleep 函数,该函数提供了更高的时间精度,并且在不同的系统中具有更好的兼容性。

总之,这两个函数都提供了一种方式来暂停程序的执行,但它们的时间单位和精度有所不同。

2.1 解析

使用open()函数打开/dev/fb0设备文件,标志为O_RDWR,表示读写模式。
然后通过write()函数对这个设备进行写入
最后记得close()这个设备。

其中所使用的函数可以参考博客write函数与lseek函数详细解析、OPEN,READ,CLOSE以及实例分析

2.2 代码实现

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <stdlib.h>
#include <string.h>int main()
{   int  r1,r2;int fd =open("/dev/fb0",O_RDWR);if(-1 == fd){perror("open file error");close(fd);exit(1);}int color1[800*480];int color2[800*480];int i;for(i=0;i<800*480;i++){color1[i]=0x00FF00;color2[i]=0xFF0000;}while(1){r1 = write(fd,color1,800*480*4);if (r1!=800*480*4){perror("write error");return -2;}sleep(1);//延迟1slseek(fd,0x00,SEEK_SET);printf("green\n");r2 = write(fd,color2,800*480*4);if (r2!=800*480*4){creturn -2;}printf("red\n");lseek(fd,0x00,SEEK_SET);sleep(1);}close(fd);
}

上面代码中使用了perror()这个函数👇。

perror是C/C++语言中的一个函数,用于将最近的系统错误信息打印到标准错误输出流(stderr)。

它的使用方法如下:

  • 包含头文件:#include <stdio.h>

  • 声明函数原型:void perror(const char *s);

在需要打印错误信息的地方调用perror函数,并传入一个用于提示的字符串参数。例如:perror(“Error:”);

perror函数的作用是将errno变量中的错误号转化为可读的错误信息,并将其打印到标准错误输出流(stderr)中。传入的参数s将会作为一个前缀字符串输出。打印的格式一般为:“s: 错误信息”。

注意

perror函数只能打印与最近的系统调用相关的错误信息。
如果系统调用成功,errno的值不会被改变,perror函数不会打印任何错误信息。
perror函数在打印错误信息后会自动换行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/239300.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【送书福利-第三十一期】《区块链安全理论与实践(安全技术经典译丛)》

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号&#xff1a;程序员洲洲。 &#x1f388; 本文专栏&#xff1a;本文…

手把手教你基于 FastGPT 搭建个人知识库

前言 大家好&#xff0c;我是潇潇雨声。我发现在使用 GPT 时&#xff0c;尽管它能够生成一些小红书文案和日志&#xff0c;但内容常常显得空洞缺乏深度。今天我想分享一个解决这个问题的方法&#xff0c;那就是基于开源项目 FastGPT[1]。 我们可以通过向 GPT 提供一些有针对性的…

Python---搭建Python自带静态Web服务器

1. 静态Web服务器是什么&#xff1f; 可以为发出请求的浏览器提供静态文档的程序。 平时我们浏览百度新闻数据的时候&#xff0c;每天的新闻数据都会发生变化&#xff0c;那访问的这个页面就是动态的&#xff0c;而我们开发的是静态的&#xff0c;页面的数据不会发生变化。 …

Floyd求最短路(Floyd算法)

参考&#xff1a;约会怎么走到目的地最近呢&#xff1f;一文讲清所有最短路算法问题-CSDN博客 有4个城市8条路&#xff0c;公路上的数字表示这条公路的长短&#xff0c;并且路是单向的&#xff0c;现在要求我们求出任意两个城市之间的最短路程&#xff0c;也就是求任意两个点之…

蓝桥杯2019年10月青少组Python程序设计省赛真题

1:有n个人围成一个圈,按顺序排好号然后从第一个人开始报数(从1到3报数),报到3的人退出圈子,然后继续从1到3报数,直到最后留下一个人游戏结束,问最后留下的是原来第几号输人描迹:输人一个正整数n 输出描迹:输出最后留下的是原来的第几号 [样例输人] [样例输出] 2: 3、 […

ACM32G1x3有那些优势?适用于那些产品上?

ACM32G1x3优势 • 320KB 程序Flash64KB SRAM&#xff0c;跑RTOS程序开发更加方便 • 从外挂Flash通过DMA搬运图片数据到PSRAM&#xff0c;无需打断程序运行 • 120MHz M33内核&#xff0c;处理性能佳 • 集成2路CAN接口&#xff0c;适合工控等需要CAN接口的场景 • QS…

[JS设计模式]Flyweight Pattern

Flyweight pattern 享元模式是一种结构化的设计模式&#xff0c;主要用于产生大量类似对象而内存又有限的场景。享元模式能节省内存。 假设一个国际化特大城市SZ&#xff1b;它有5个区&#xff0c;分别为nanshan、futian、luohu、baoan、longgang&#xff1b;每个区都有多个图…

代码随想录刷题题Day20

刷题的第二十天&#xff0c;希望自己能够不断坚持下去&#xff0c;迎来蜕变。&#x1f600;&#x1f600;&#x1f600; 刷题语言&#xff1a;C Day20 任务 ● 理论基础 ● 77. 组合 1 回溯算法理论基础 1.1 回溯法 回溯法是一种搜索的方式&#xff0c;是递归的副产品&#x…

海外媒体发稿:雅虎全球发稿推广脱颖而出的10种方法-华媒舍

雅虎全球发稿是一项重要的推广手段&#xff0c;能够帮助企业和个人提升品牌知名度和曝光率。在众多的发稿中脱颖而出并不容易。本文将为您介绍10种让您的雅虎全球发稿在众多文章中脱颖而出的方法&#xff0c;帮助您取得更好的效果。 1. 深入研究目标受众 在撰写雅虎全球发稿前…

Python to_numeric函数参数解读与最佳实践!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com Python中的to_numeric函数是pandas库提供的一个强大而灵活的工具&#xff0c;用于将数据转换为数字类型。本文将深入探讨to_numeric函数的各种参数和用法&#xff0c;通过丰富的示例代码帮助大家更全面地理解和运…

基于thinkphp+vue的大学生校园生活服务平台sb00r

大学生一体化服务平台可以提高大学生综合服务信息管理问题的解决效率&#xff0c;优化大学生综合服务信息处理流程&#xff0c;保证大学生综合服务信息数据的安全&#xff0c;它是一个非常可靠&#xff0c;非常安全的应用程序。 运行环境:phpstudy/wamp/xammp等 开发语言&#…

CAS机制

Java中提供了很多原子操作类来保证共享变量操作的原子性。这些原子操作的底层原理都是使用了CAS机制。在使用一门技术之前&#xff0c;了解这个技术的底层原理是非常重要的&#xff0c;所以本篇文章就先来讲讲什么是CAS机制&#xff0c;CAS机制存在的一些问题以及在Java中怎么使…

鸿蒙应用开发初体验 HelloWorld

9 月 25 日&#xff0c;华为常务董事、终端 BG CEO、智能汽车解决方案 BU 董事长余承东华为秋季全场景新品发布会上介绍了鸿蒙系统的最新进展&#xff1a;HarmonyOS 4 发布后&#xff0c;短短一个多月升级用户已经超过 6000 万&#xff0c;成为史上升级速度最快的 HarmonyOS 版…

WebGL开发三维解剖学应用

开发基于 WebGL 的三维解剖学应用通常涉及以下步骤。这些步骤包括创建三维模型、整合交互性、优化性能等&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.三维模型创建&#xff1a; 首先&#xff0…

智能优化算法应用:基于白冠鸡算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于白冠鸡算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于白冠鸡算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.白冠鸡算法4.实验参数设定5.算法结果6.参考文…

vue proxy代理 和 Nginx 配置跨域

vue.config.js文件中配置的代理&#xff1a; devServer: {port: 9095,// open: true, // 配置项目在启动时自动在浏览器打开proxy: {/yh: { // /api是代理标识&#xff0c;一般是每个接口前的相同部分target: "http://192.168.5.58:8002", // 请求地址&#xff0c;一…

4.3【共享源】克隆实战开发之截屏(一)

一,Screen截屏介绍 Screen的截屏是指从源读取像素,然后复制到缓冲区。然后可以根据需要操纵缓冲区;它可以简单地写入文件,也可以在其他窗口或显示器中使用。 Screen API从源中读取像素,并将其复制到提供的缓冲区中以捕获截屏。缓冲区可以是pixmap或窗口缓冲区,但必须设…

众和策略:美股全线上涨 中概股大涨

当地时间12月21日&#xff0c;欧洲股市全线下跌&#xff0c;英国富时100指数、法国CAC40指数、德国DAX指数均小幅下跌。美国通胀降温&#xff0c;美股商场三大指数尾盘飙升&#xff0c;纳斯达克指数、标普500指数均涨逾1%&#xff0c;大型科技股多数上涨&#xff0c;特斯拉涨近…

SoapUI、Jmeter、Postman三种接口测试工具的比较分析!

前段时间忙于接口测试&#xff0c;也看了几款接口测试工具&#xff0c;简单从几个角度做了个比较&#xff0c;拿出来与诸位分享一下。本文从多个方面对接口测试的三款常用工具进行比较分析&#xff0c;以便于在特定的情况下选择最合适的工具&#xff0c;或者使用自己编写的工具…

React + valtio 响应式状态管理

Valtio 是一个很轻量级的响应式状态管理库。valtio 让数据管理在 React 和原生 JS (Vanilla) 中变得更加简单的一个库&#xff0c;它类似于 Vue 的数据驱动视图的理念&#xff0c;使用外部状态代理去驱动 React 视图来更新。 一、状态管理库 dispatch 流派(单向数据流-中心化管…