小学一年级奖惩制度:Qtopia应用程序(led控制)(源码) Qtopia技术交流专区 ARM9之家论坛 -...

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 18:02:11
                          http://www.arm9home.net/simple/index.php?t4354.html
发现网上这种资料不多,但我发现这对初学者尤其重要,我刚刚接触Qtopia,编了个小程序,希望大家多多指正批评。
我觉得友善的应用程序不开源会增加我们的好奇心,我想这也是他们的初衷,哈哈
希望大家多多讨论,共同进步……

myled.h

#ifndef _MYLED_H_
#define _MYLED_H_

#include

class Myled : public QWidget
{
  Q_OBJECT

public:
  Myled( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
  ~Myled() {};

public slots:       // 自定义的槽
  void runled();

private:
  void startled();
};

#endif // _MYLED_H_

myled.cpp
#include
#include
#include
#include
#include
#include
#include
#include
#include

#include "myled.h"


Myled::Myled( QWidget* parent, const char* name, WFlags fl )
{
  startled();
}

void Myled::startled()
{
  QPushButton* quit = new QPushButton("START", this);   //创建按钮
  connect(quit, SIGNAL(clicked()), this, SLOT(runled()));    //连接槽
}

void Myled::runled()
{
  volatile int i, j, k;

    int fd=::open("/dev/leds", 0);  // 打开设备
    for (k=0; k<4; k++)
    {
      ::ioctl(fd, 0, 1);
      for (i=0;i<30000;i++)
        for (j=0;j<500;j++);
      ::ioctl(fd, 1, 1);
      for (i=0;i<30000;i++)
        for (j=0;j<500;j++);
    }

    ::close(fd); // 关闭设备
}


main.cpp
#include "myled.h"
#include

QTOPIA_ADD_APPLICATION("myled",Myled)
QTOPIA_MAIN


myled.pro
CONFIG        += qtopiaapp
CONFIG        -= buildQuicklaunch
DESTDIR    = $(QPEDIR)/bin

HEADERS    = myled.h
SOURCES    = myled.cpp

SOURCES+=main.cpp

TARGET        = myled


myled.desktop
[Desktop Entry]
Comment[]=A LED Program
Exec=myled
Icon=myled
Type=Application
Name=myled


将以上代码放到一个文件夹,然后从hello中copy来build,build一下就欧了
eddylau 2010-01-15 20:03 很好!

建议用Qt designer来倉建GUI界面.

延时方面可用sleep() 或usleep()涵数来做会比较凖确点.

  
mindee 2010-01-15 22:08 这哥们很乐观啊,我们以后会编写关于QtE编程方面的文档。
你的程序中可以增加system("/etc/init.d/leds stop")系统调用,以便程序开启时关闭led-player闪灯程序。
不过我们实际提供的qtopia led测试程序并不是使用这个方法,而是通过进程控制函数把led-player进程设置为T,程序退出时再恢复。
wujianming 2010-01-15 23:44 看起来 很简单呢。就是不懂
cole3 2010-01-16 10:08 哦,原来可以用system("/etc/init.d/leds stop")啊,呵呵
我是先把led-player从启动项里删了,哈哈
cole3 2010-01-16 10:10 谢谢您的建议,sleep()比for()好多了,呵呵
eddylau 2010-01-16 11:23
引用
引用第2楼mindee于2010-01-15 22:08发表的  :
这哥们很乐观啊,我们以后会编写关于QtE编程方面的文档。
你的程序中可以增加system("/etc/init.d/leds stop")系统调用,以便程序开启时关闭led-player闪灯程序。
不过我们实际提供的qtopia led测试程序并不是使用这个方法,而是通过进程控制函数把led-player进程设置为T,程序退出时再恢复。


mindee 果然有料到.

非常期待你们关于QtE编程方面的文档。


douzidouer 2010-01-24 12:40 支持原创  
douzidouer 2010-01-25 23:11 如果方便的话希望您的解释下myled.cpp各个头文件的意思
还有关键代码的意义。
呵呵有些地方不知道理解的对不对。
还有关于sleep函数  
有输入参数么
这些函数要在哪里进行查询呢?
有没有类似msdn的工具可以方便查询我们要使用的函数呢?
douzidouer 2010-01-25 23:47
引用
引用第2楼mindee于2010-01-15 22:08发表的  :
这哥们很乐观啊,我们以后会编写关于QtE编程方面的文档。
你的程序中可以增加system("/etc/init.d/leds stop")系统调用,以便程序开启时关闭led-player闪灯程序。
不过我们实际提供的qtopia led测试程序并不是使用这个方法,而是通过进程控制函数把led-player进程设置为T,程序退出时再恢复。


mindee

我发现在    /etc/init.d/leds           这个路径下的系统调用没法停止leds
而是在        /etc/rc.d/init.d/leds   这个系统调用可以停止leds

另外问下
system("/etc/rc.d/init.d/leds stop")  是停止
那system("/etc/rc.d/init.d/leds start")  是开启吧
eddylau 2010-01-26 10:31
引用
引用第8楼douzidouer于2010-01-25 23:11发表的  :
如果方便的话希望您的解释下myled.cpp各个头文件的意思
还有关键代码的意义。
呵呵有些地方不知道理解的对不对。
还有关于sleep函数  
有输入参数么
.......


sleep(5) => 5 seconds

usleep(5) => 5 micro seconds

you can get more info about sleep by :

#man 3 sleep

or

#info sleep


cole3 2010-01-31 10:11 led.c的头文件,前两个是qtopia的,后面的是驱动程序用到的
关键代码实际上和测试程序是一样的,
cole3 2010-01-31 10:13 还有就是最好用::open,::ioctl,::close,因为他们可能和qtopia中的函数重名
curay 2010-01-31 22:30 请问楼主:

  ::ioctl(fd, 0, 1);

这样的的双冒号开头的调用, 是C++的语法么?

以前没有见过

请指教
cole3 2010-02-01 12:10 呵呵,我也不知道,我是从论坛上,看到别人这么用的
eddylau 2010-02-01 12:35
引用
引用第13楼curay于2010-01-31 22:30发表的 回 楼主(cole3) 的帖子 :
请问楼主:

  ::ioctl(fd, 0, 1);

这样的的双冒号开头的调用, 是C++的语法么?
.......


:: 是C++的scope resolution operator(范围解释运算子)
当变数名称有冲突时便可使用它来作范围解释.

可参考以下帖子:

http://serc.iisc.ernet.in/ComputingFacilities/systems/cluster/vac-7.0/html/language/ref/clrc05cplr175.htm


wang_ge_whut 2010-02-03 17:12 我终于回来了
gx8828418 2010-02-13 10:26 分别从西边幸福vcxvcxv
gx8828418 2010-02-26 20:25 楼主,能不能发个QT开发步骤,就是工程的创建过程。
gx8828418 2010-02-26 20:26 不知道开发过程,很郁闷啊    
curay 2010-02-26 20:34
引用
引用第19楼gx8828418于2010-02-26 20:26发表的  :
不知道开发过程,很郁闷啊    


开发过程手册上都有 熟读手册再来发问吧
curay 2010-02-26 20:34 eddylau兄
我越来越佩服你了
我觉得你越来越神秘了啊
gx8828418 2010-02-26 21:01 呵呵,可以了,自己解决了。
gx8828418 2010-02-26 21:05 你的led灯的定义是从0开始还是从1开始的 啊?是GPIO6闪4次?
gx8828418 2010-02-28 17:32
画夹 2010-11-15 16:00 干得漂亮