主题 : Qtopia应用程序(led控制)(源码) 复制链接 | 浏览器收藏 | 打印
级别: 骑士
UID: 11942
精华: 1
发帖: 144
金钱: 775 两
威望: 155 点
贡献值: 1 点
综合积分: 308 分
注册时间: 2009-12-25
最后登录: 2022-01-16
楼主  发表于: 2010-01-15 17:14

 Qtopia应用程序(led控制)(源码)

发现网上这种资料不多,但我发现这对初学者尤其重要,我刚刚接触Qtopia,编了个小程序,希望大家多多指正批评。
我觉得友善的应用程序不开源会增加我们的好奇心,我想这也是他们的初衷,哈哈
希望大家多多讨论,共同进步……

myled.h

#ifndef _MYLED_H_
#define _MYLED_H_

#include <qwidget.h>

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 <qpushbutton.h>
#include <qtopia/qpeapplication.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <fcntl.h>

#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/qpeapplication.h>

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一下就欧了
[ 此帖被cole3在2010-01-16 10:10重新编辑 ]
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
贡献值: 27 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
1楼  发表于: 2010-01-15 22:08
这哥们很乐观啊,我们以后会编写关于QtE编程方面的文档。
你的程序中可以增加system("/etc/init.d/leds stop")系统调用,以便程序开启时关闭led-player闪灯程序。
不过我们实际提供的qtopia led测试程序并不是使用这个方法,而是通过进程控制函数把led-player进程设置为T,程序退出时再恢复。
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.