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

宁波建网站报价百度sem竞价推广

宁波建网站报价,百度sem竞价推广,泉州seo网站关键词优,福田做网站公司本篇开始将会介绍与开发版相关的Qt项目#xff0c;首先从点亮一个LED开始。I.MX6U和STM32MP157的相关信息都会用到#xff0c;但是后期还是将I.MX6U的学习作为重点。当然其他开发版的开发也可以参考本博文。 文章目录 1. Qt是如何操控开发板上的一个LED2. 出厂内核设备树中注…本篇开始将会介绍与开发版相关的Qt项目首先从点亮一个LED开始。I.MX6U和STM32MP157的相关信息都会用到但是后期还是将I.MX6U的学习作为重点。当然其他开发版的开发也可以参考本博文。 文章目录 1. Qt是如何操控开发板上的一个LED2. 出厂内核设备树中注册的LED设备3. 如何去使用驱动提供的应用层接口3.1 如何通过按钮控制LED3.1.1 需要先找到接口3.1.2 如何访问该接口 3.2 开发UI程序控制LED灯3.2.1 在源文件“mainwindow.h”的代码如下3.2.2 在源文件“mainwindow.cpp” 的代码如下 4. 程序运行效果4.1 Ubuntu 上仿真界面的效果4.2 板卡上运行效果 1. Qt是如何操控开发板上的一个LED Qt是无法直接控制开发板上的硬件那么它是如何操控开发板上的硬件的呢 从下图可以看到是Qt通过驱动层提供的接口来操控开发板上的硬件。 关于驱动提供的接口可以从正点原子的驱动和试用教程具体在哪后期找一下。 如果你是应用开发人员就要问驱动人员提供的接口信息。 2. 出厂内核设备树中注册的LED设备 此部分没有特别清楚大概讲的应该就是Linux系统安装中2.3 硬件设备文件名中内容。 I.MX6U和STM32MP157的出厂系统如下 I.MX6U设备树路径为arch/arm/boot/dts/imx6ull-14x14-evk.dtsSTM32MP157设备树路径为arch/arm/boot/dts/stm32mp157d-atk.dtsi 1要找到设备树先找到Linux源码 在“01、例程源码\03、正点原子Uboot和Linux出厂源码”下文件内容如下 应用层访问的ID设备都是在上图框选的Linux源码配置的如何编译这个源码正点原子的其他教程中做了介绍此处不再做介绍。 2下面应该就是Linux源码的关于LED灯部分的内容 上图为I.MX6U的led节点其中是一个LED即led1配置了sys.led也就是系统ID即收到货时闪的那个led其中的heartbeat代表正在运行gpio.leds代表驱动本篇使用到的也就是该LED。 3. 如何去使用驱动提供的应用层接口 想要控制这个 LED首先I.MX6U的出厂内核已经默认将这个 LED 注册成了 gpio-leds类型设备(驱动层配置给应用层的接口)。 所以我们可以直接在应用层接口直接可以操作这个 LED 设备。(如果搞了一些移植有可能LED没有配置就无法正常使用) 以下将会介绍如何查找和使用接口控制LED灯的过程。 3.1 如何通过按钮控制LED 3.1.1 需要先找到接口 在“10、用户手册/01【正点原子】I.MX6U用户快速体验V2.6.pdf”中查找说明 上图中驱动提供的对应的接口文件即为 echo none /sys/class/leds/sys-led/trigger // 改变 LED 的触发模式 echo 1 /sys/class/leds/sys-led/brightness // 向接口写1点亮 LED echo 0 /sys/class/leds/sys-led/brightness // 向接口写0熄灭 LED3.1.2 如何访问该接口 我们在 Qt 里有很多种方法可以控制正点原子 I.MX6U 的 LED 设备。 如可以用 C 语言的读写函数读写来控制 LED的状态或者直接使用 system()函数启动一个进程执行相关指令直接控制 LED 等。 我们介绍最简单的方法控制开发板上的LED 就是使用Qt的操作文件的类QFile直接控制LED。因为 Linux 上一切皆文件所有的东西都当作文件来处理。 /* 开发板的 LED 控制接口 */ file.setFileName(/sys/devices/platform/leds/leds/sys-led/brightness);项目虽然简单但是在嵌入式里基本都是从点亮一个 LED 里开始说起。 只有我们会操作一个 IO剩下的基本都不会难 3.2 开发UI程序控制LED灯 项目简介设置一个按钮点击即可控制 LED 状态反转点亮或者熄灭 LED。 项目看来很起来很简单 实际上有些需要注意的地方我们在改变 LED 的状态时需要先去读取 LED的状态防止外界外面应用程序将 LED 的状态改变了。 否则我们反转操作将不成立。 在C里一般使用 get()和 set()方法来获取和设置。我们的 LED 程序里也有这种方法。所以需要写好一个让人看得懂的程序是有“方法”的。不能将程序功能写在一堆最好是分开写留有接口。让后面的人看懂 3.2.1 在源文件“mainwindow.h”的代码如下 #ifndef MAINWINDOW_H 2 #define MAINWINDOW_H 3 4 #include QMainWindow 5 #include QPushButton 6 #include QFile 7 8 class MainWindow : public QMainWindow 9 { 10 Q_OBJECT 11 12 public: 13 MainWindow(QWidget *parent nullptr); 14 ~MainWindow(); 15 16 private: 17 /* 按钮 */ 18 QPushButton *pushButton; 19 20 /* 文件 */ 21 QFile file; 22 23 /* 设置 lED 的状态 */ 24 void setLedState(); 25 26 /* 获取 lED 的状态 */ 27 bool getLedState(); 28 29 private slots: 30 void pushButtonClicked(); 31 }; 32 #endif // MAINWINDOW_H在头文件“mainwindow.h”里第 24 行声明一个设置 LED 状态方法 另一个是获取状态的方法。 另外声明一个槽函数作用是点击切换 LED 的状态。 3.2.2 在源文件“mainwindow.cpp” 的代码如下 #include mainwindow.h 2 #include QDebug 3 #include QGuiApplication 4 #include QScreen 5 #include QRect 6 7 MainWindow::MainWindow(QWidget *parent) 8 : QMainWindow(parent) 9 { 10 /* 获取屏幕的分辨率 Qt 官方建议使用这 11 * 种方法获取屏幕分辨率防上多屏设备导致对应不上 12 * 注意这是获取整个桌面系统的分辨率 13 */ 14 QList QScreen * list_screen QGuiApplication::screens(); 15 16 /* 如果是 ARM 平台直接设置大小为屏幕的大小 */ 17 #if __arm__ 18 /* 重设大小 */ 19 this-resize(list_screen.at(0)-geometry().width(), 20 list_screen.at(0)-geometry().height()); 21 /* 默认是出厂系统的 LED 心跳的触发方式,想要控制 LED 22 * 需要改变 LED 的触发方式改为 none即无 */ 23 system(echo none /sys/class/leds/sys-led/trigger); 24 #else 25 /* 否则则设置主窗体大小为 800x480 */ 26 this-resize(800, 480); 27 #endif 28 29 pushButton new QPushButton(this); 30 31 /* 居中显示 */ 32 pushButton-setMinimumSize(200, 50); 33 pushButton-setGeometry((this-width() - pushButton-width()) /2 , 34 (this-height() - pushButton-height()) /2, 35 pushButton-width(), 36 pushButton-height() 37 ); 38 /* 开发板的 LED 控制接口 */ 39 file.setFileName(/sys/devices/platform/leds/leds/sys-led/brightness);if (!file.exists()) 42 /* 设置按钮的初始化文本 */ 43 pushButton-setText(未获取到 LED 设备 ); 44 45 /* 获取 LED 的状态 */ 46 getLedState(); 47 48 /* 信号槽连接 */ 49 connect(pushButton, SIGNAL(clicked()), 50 this, SLOT(pushButtonClicked())); 51 } 52 53 MainWindow::~MainWindow() 54 { 55 } 56 57 void MainWindow::setLedState() 58 { 59 /* 在设置 LED 状态时先读取 */ 60 bool state getLedState(); 61 62 /* 如果文件不存在则返回 */ 63 if (!file.exists()) 64 return; 65 66 if(!file.open(QIODevice::ReadWrite)) 67 qDebug()file.errorString(); 68 69 QByteArray buf[2] {0, 1}; 70 71 /* 写 0 或 1 */ 72 if (state) 73 file.write(buf[0]); 74 else 75 file.write(buf[1]); 76 77 /* 关闭文件 */ 78 file.close(); 79 80 /*重新获取 LED 的状态 */ 81 getLedState(); 82 } bool MainWindow::getLedState() 85 { 86 /* 如果文件不存在则返回 */ 87 if (!file.exists()) 88 return false; 89 90 if(!file.open(QIODevice::ReadWrite)) 91 qDebug()file.errorString(); 92 93 QTextStream in(file); 94 95 /* 读取文件所有数据 */ 96 QString buf in.readLine(); 97 98 /* 打印出读出的值 */ 99 qDebug()buf: bufendl; 100 file.close(); 101 if (buf 1) { 102 pushButton-setText(LED 点亮); 103 return true; 104 } else { 105 pushButton-setText(LED 熄灭); 106 return false; 107 } 108 } 109 110 void MainWindow::pushButtonClicked() 111 { 112 /* 设置 LED 的状态 */ 113 setLedState(); 114 } 第 9 行~24 行界面初始化设置在嵌入式里根据实际的屏的大小设置全屏显示。按钮居中显示。 第 23 行因为出厂系统里配置 LED 的触发方式为心跳方式 要想控制此 LED需要将 LED的触发方式改为none即是无触发方式。为了方便编者直接使用 system()函数用指令的方式改变 LED 的触发方式。 第 54~82 行设置 LED 的方法写入“0”或“1”代表开和关。 写入之前先读取 LED 的状态预防在用户其他地方有设置过 LED。 第 84 行~108 行 获取 LED 的状态。 第 110 行~114 行设置 LED 的状态此方法为槽函数由点击按钮触发。 4. 程序运行效果 4.1 Ubuntu 上仿真界面的效果 下面为 Ubuntu 上仿真界面的效果由于 Ubuntu 不是“开发板”所以在读取 LED 设备时会读取失败。实际在板上运行图略。 交叉编译程序到正点原子 I.MX6U 开发板上运行即可控制LED 的状态。 4.2 板卡上运行效果 按照上一篇I.MX6U开发板交叉编译Qt项目进行交叉编译拷贝到开发板的Linux系统中可以看到通过UI上的按钮控制了LED灯。 对应地址Qt点亮I.MX6U开发板的一个LED
http://www.hkea.cn/news/14348812/

相关文章:

  • 重庆企业做网站手机微信网页版
  • wordpress主题图片消失昆山网站优化公司
  • html5网站建设中模板iis如何做同时运行两个网站80端口
  • 鞋帽网站欣赏上市公司数据查询网站
  • 怎么将网站做成公司官网菠菜网站怎么做排名
  • 静态网站怎么容易做西安网页设计教育培训机构
  • 深圳网站建设服务商哪些好?大气医院网站模板
  • html门户网站模板南京seo域名
  • 上海网站托管兰州企业网站建设
  • 深圳网站建设制作设计公司部门设置及职责划分
  • 网站建设方案实验报告网站怎么做有创意
  • wordpress网站换字体颜色2021必火的创业项目加盟
  • 进空间的网站观澜小学网站建设
  • 广州中小企业网站制作论基层门户网站的建设
  • 网站虚拟主机公司wordpress去掉页面中的标题
  • 公司网站设计与实现的英文文献旅游网站制作分析
  • 网站建设合同缴纳印花税吗seo还能赚钱吗
  • 制作手机网站用什么软件h5哪个网站可以做
  • 温州做高端网站公司网站如何在国外推广
  • 保健品网站制作做外汇那个网站好
  • 网站建设公司清明雨上phpcms网站seo怎么做
  • 网络营销做私活网站网络推广流量技巧
  • 提升网站长尾关键词排建站开发
  • 网站和网页的概念重庆免费建网站
  • 廊坊微信网站建设成品影视app开发月光宝盒怎么样
  • 网站流量统计系统只做动漫的h网站
  • 织梦dedecms蓝色培训机构模板教育学校学院整站php网站源码设计制作照片
  • 引物在线设计网站福州开发企业网站
  • 网站建设内部下单流程图深圳浪尖工业设计公司
  • 珠海营销型网站如何制作数据库网站