Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4463336
  • 博文数量: 1148
  • 博客积分: 25453
  • 博客等级: 上将
  • 技术积分: 11949
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 21:14
文章分类

全部博文(1148)

文章存档

2012年(15)

2011年(1078)

2010年(58)

分类: C/C++

2011-04-24 21:53:57

参考: TQ6410_QT4.7移植手册.pdf  4.2章节

  本文是在 2.6.33+2440 led 灯 驱动程序 (二)  的基础上,从命令行界面到

图形界面的 开发;

  中间一些步骤就不详细写了,具体参考上述手册,这里主要给出一些代码

ladtest.h 代码


  1. #ifndef LEDTEST_H
  2. #define LEDTEST_H

  3. #include <QMainWindow>

  4. namespace Ui {
  5.     class ledtest;
  6. }

  7. class ledtest : public QMainWindow {
  8.     Q_OBJECT
  9. public:
  10.     ledtest(QWidget *parent = 0);
  11.     ~ledtest();

  12. protected:
  13.     void changeEvent(QEvent *e);

  14. public slots:
  15.      void LED1_Toggle();
  16.      void LED2_Toggle();
  17.      void LED3_Toggle();
  18.      void LED4_Toggle();

  19. private:
  20.     Ui::ledtest *ui;
  21. };

  22. #endif // LEDTEST_H

ledtest.c 代码


  1. #include "ledtest.h"
  2. #include "ui_ledtest.h"

  3. #include <sys/types.h>
  4. #include <sys/stat.h>
  5. #include <fcntl.h>
  6. #include <string.h>
  7. #include <sys/ioctl.h>
  8. #include <stdio.h>

  9. #include <QDirectPainter>

  10. static int fb;
  11. volatile int LED1=0,LED2=0,LED3=0,LED4=0;

  12. ledtest::ledtest(QWidget *parent) :
  13.     QMainWindow(parent),
  14.     ui(new Ui::ledtest)
  15. {
  16.     ui->setupUi(this);
  17.     int screenWidth=QDirectPainter::screenWidth();
  18.     int screenHeight=QDirectPainter::screenHeight();
  19.     this->resize(screenWidth,screenHeight);

  20.     connect(ui->checkBox_LED1,SIGNAL(toggled(bool)),this,SLOT(LED1_Toggle()));
  21.     connect(ui->checkBox_LED2,SIGNAL(toggled(bool)),this,SLOT(LED2_Toggle()));
  22.     connect(ui->checkBox_LED3,SIGNAL(toggled(bool)),this,SLOT(LED3_Toggle()));
  23.     connect(ui->checkBox_LED4,SIGNAL(toggled(bool)),this,SLOT(LED4_Toggle()));

  24.     fb=open("/dev/led-control",0);
  25.     if(fb<0)
  26.     {
  27.         perror("open device leds fail");
  28.         exit(1);
  29.     }
  30. }

  31. ledtest::~ledtest()
  32. {
  33.     delete ui;
  34. }

  35. void ledtest::changeEvent(QEvent *e)
  36. {
  37.     QMainWindow::changeEvent(e);
  38.     switch (e->type()) {
  39.     case QEvent::LanguageChange:
  40.         ui->retranslateUi(this);
  41.         break;
  42.     default:
  43.         break;
  44.     }
  45. }

  46. void ledtest::LED1_Toggle()
  47. {
  48.     LED1=~LED1;
  49.     if(LED1==0)
  50.     {
  51.         ioctl(fb,1,0);//
  52.     }
  53.     else
  54.     {
  55.         ioctl(fb,0,0);//
  56.     }
  57. }

  58. void ledtest::LED2_Toggle()
  59. {
  60.     LED2=~LED2;
  61.     if(LED2==0)
  62.     {
  63.         ioctl(fb,1,1);// 1,0 第二个灯,亮
  64.     }
  65.     else
  66.     {
  67.         ioctl(fb,0,1);// 0,0,第二个灯 灭
  68.     }
  69. }

  70. void ledtest::LED3_Toggle()
  71. {
  72.     LED3=~LED3;
  73.     if(LED3==0)
  74.     {
  75.         ioctl(fb,1,2);// 1,0 第三个灯,亮
  76.     }
  77.     else
  78.     {
  79.         ioctl(fb,0,2);// 0,0,第三个灯 灭
  80.     }
  81. }

  82. void ledtest::LED4_Toggle()
  83. {
  84.     LED4=~LED4;
  85.     if(LED4==0)
  86.     {
  87.         ioctl(fb,1,3);// 1,0 第四个灯,亮
  88.     }
  89.     else
  90.     {
  91.         ioctl(fb,0,3);// 0,0,第四个灯 灭
  92.     }
  93. }


  1. qmake -project
  2. qmake
  3. make


特别注意:

  1. LED1==0
  2. LED2==0
  3. LED3==0
  4. LED4==0

  当我把 LED1修改为 LED==1 时,在开发板上点击能熄灭

led,但是不能点亮led,然后,我再次修改为 LED==0,就,有

可以点亮,又可以熄灭了 ,不知道什么原因??




  最后附上 代码   led-qt.rar  









阅读(6543) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~