问答
直播中

h1654155956.6842

8年用户 151经验值
擅长:182874
私信 关注

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

上一篇帖子中已经可以远程桌面连接了,接下来就可以进行qt应用开发了!!!首先先来一个简单的小程序控制led。
关于qt creator的配置我这里就不描述了,按照手册配置即可,这里我使用的是我自己编译的sdk。
首先建立一个新的工程。
这里选择Qt Widgets Application应用,接下来就是下一步下一步,就可以得到我们的工程了。
具体过程图如下:
微信截图_20170713230649.png
选择Qt Widgets Application,然后点击Choose。
微信截图_20170713230719.png
填写工程名
微信截图_20170713230936.png
选择目标平台(根据手册建立)
微信截图_20170713231020.png
下一步
微信截图_20170713231045.png
微信截图_20170713231137.png
编辑界面
微信截图_20170713231226.png
添加控件
微信截图_20170713231337.png
修改控件
微信截图_20170713231426.png
添加信号槽
无标题.png
选择clicked
微信截图_20170713231639.png
点击“OK”跳转到函数体
微信截图_20170713231732.png
接下来添加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介绍,应该来点交叉编译的,然后控制控制灯也行啊
举报

更多回帖

发帖
×
20
完善资料,
赚取积分