【MYS-6ULX-IoT试用体验】我的qt小应用控制led - 问答 - 电子技术论坛 - 最好最受欢迎电子论坛!

【MYS-6ULX-IoT试用体验】我的qt小应用控制led

上一篇帖子中已经可以远程桌面连接了,接下来就可以进行qt应用开发了!!!首先先来一个简单的小程序控制led。
关于qt creator的配置我这里就不描述了,按照手册配置即可,这里我使用的是我自己编译的sdk。
首先建立一个新的工程。
这里选择Qt Widgets Application应用,接下来就是下一步下一步,就可以得到我们的工程了。
具体过程图如下:

选择Qt Widgets Application,然后点击Choose。

填写工程名

选择目标平台(根据手册建立)

下一步


编辑界面

添加控件

修改控件

添加信号槽

选择clicked

点击“OK”跳转到函数体

接下来添加led控制代码
首先新建led.cpp文件:
  1. #include
  2. #include
  3. #include
  4. #include
  5. #include
  6. #include

  7. #define ARRAY_SIZE(x)      (sizeof(x)/sizeof(x[0]))

  8. typedef struct gpio_s {
  9.     int gpio;
  10.     char value_path[64];
  11.     char dir_path[64];
  12.     int value;
  13. }gpio_t;

  14. void leds_ctrl(const char **leds, int count, unsigned int status)
  15. {
  16.     int i = 0;
  17.     char cmd[128] = {0};
  18.     static unsigned int pre_status = 0;

  19.     for(i = 0; i < count; i++, leds++){
  20.         if ((pre_status ^ status) & (1 << i)){
  21.             sprintf(cmd, "echo %d > %s", !!(status&(1 << i)), *leds);
  22.             if (system(cmd)){
  23.                 printf("run cmd [%s] failed!", cmd);
  24.             }
  25.         }
  26.     }
  27.     pre_status = status;
  28. }

  29. void leds_target(void)
  30. {
  31.     const char* leds[]={"/sys/class/leds/user/brightness"};
  32.     static unsigned int pre_status = 0;

  33.     if (pre_status){
  34.         leds_ctrl(leds,ARRAY_SIZE(leds), 1);
  35.         pre_status = 0;
  36.     }
  37.     else {
  38.         leds_ctrl(leds,ARRAY_SIZE(leds), 0);
  39.         pre_status = 1;
  40.     }

  41. }
复制代码
接下来修改mainwindow.cpp
  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"

  3. extern void leds_target(void);

  4. MainWindow::MainWindow(QWidget *parent) :
  5.     QMainWindow(parent),
  6.     ui(new Ui::MainWindow)
  7. {
  8.     ui->setupUi(this);
  9. }

  10. MainWindow::~MainWindow()
  11. {
  12.     delete ui;
  13. }

  14. void MainWindow::on_led_pushButton_clicked()
  15. {
  16.     leds_target();
  17. }
复制代码
好了,大功告成,是不是非常简单!!

2个回复

liqijian101 发表于 2017-7-14 07:35:06
{:1:}{:1:}{:1:}
李脉 发表于 2019-4-21 17:02:49
整个一篇QT介绍,应该来点交叉编译的,然后控制控制灯也行啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

站长推荐上一条 /6 下一条

小黑屋|手机版|Archiver|电子发烧友 ( 湘ICP备2023018690号 )

GMT+8, 2024-4-24 00:45 , Processed in 0.496707 second(s), Total 69, Slave 47 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表