主题 : 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重新编辑 ]
用过的Linux发行版:Arch,Gentoo,Debian,Fedora,RHEL,CentOS,Ubuntu,OpenSUSE,RedFlag,Ylmf,De ..
级别: 骑士
UID: 12662
精华: 0
发帖: 181
金钱: 955 两
威望: 191 点
贡献值: 0 点
综合积分: 362 分
注册时间: 2010-01-11
最后登录: 2014-02-14
1楼  发表于: 2010-01-31 22:30

 回 楼主(cole3) 的帖子

请问楼主:

  ::ioctl(fd, 0, 1);

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

以前没有见过

请指教
业余Linux爱好者。
用过的Linux发行版:Arch,Gentoo,Debian,Fedora,RHEL,CentOS,Ubuntu,OpenSUSE,RedFlag,Ylmf,De ..
级别: 骑士
UID: 12662
精华: 0
发帖: 181
金钱: 955 两
威望: 191 点
贡献值: 0 点
综合积分: 362 分
注册时间: 2010-01-11
最后登录: 2014-02-14
2楼  发表于: 2010-02-26 20:34
引用第19楼gx8828418于2010-02-26 20:26发表的  :
不知道开发过程,很郁闷啊    


开发过程手册上都有 熟读手册再来发问吧
业余Linux爱好者。
用过的Linux发行版:Arch,Gentoo,Debian,Fedora,RHEL,CentOS,Ubuntu,OpenSUSE,RedFlag,Ylmf,De ..
级别: 骑士
UID: 12662
精华: 0
发帖: 181
金钱: 955 两
威望: 191 点
贡献值: 0 点
综合积分: 362 分
注册时间: 2010-01-11
最后登录: 2014-02-14
3楼  发表于: 2010-02-26 20:34

 回 15楼(eddylau) 的帖子

eddylau兄
我越来越佩服你了
我觉得你越来越神秘了啊
业余Linux爱好者。