http://www.arm9home.net/simple/index.php?t4354.html發(fā)現(xiàn)網(wǎng)上這種資料不多,但我發(fā)現(xiàn)這對初學(xué)者尤其重要,我剛剛接觸Qtopia,編了個(gè)小程序,希望大家多多指正批評。
我覺得友善的應(yīng)用程序不開源會增加我們的好奇心,我想這也是他們的初衷,哈哈
希望大家多多討論,共同進(jìn)步……
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); //創(chuàng)建按鈕
connect(quit, SIGNAL(clicked()), this, SLOT(runled())); //連接槽
}
void Myled::runled()
{
volatile int i, j, k;
int fd=::open("/dev/leds", 0); // 打開設(shè)備
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); // 關(guān)閉設(shè)備
}
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
將以上代碼放到一個(gè)文件夾,然后從hello中copy來build,build一下就歐了

eddylau | 2010-01-15 20:03 | 很好!
建議用Qt designer來倉建GUI界面.
延時(shí)方面可用sleep() 或usleep()涵數(shù)來做會比較凖確點(diǎn).
| |
mindee | 2010-01-15 22:08 | 這哥們很樂觀啊,我們以后會編寫關(guān)于QtE編程方面的文檔。 你的程序中可以增加system("/etc/init.d/leds stop")系統(tǒng)調(diào)用,以便程序開啟時(shí)關(guān)閉led-player閃燈程序。 不過我們實(shí)際提供的qtopia led測試程序并不是使用這個(gè)方法,而是通過進(jìn)程控制函數(shù)把led-player進(jìn)程設(shè)置為T,程序退出時(shí)再恢復(fù)。 | |
wujianming | 2010-01-15 23:44 | 看起來 很簡單呢。就是不懂 | |
cole3 | 2010-01-16 10:08 | 哦,原來可以用system("/etc/init.d/leds stop")啊,呵呵 我是先把led-player從啟動項(xiàng)里刪了,哈哈 | |
cole3 | 2010-01-16 10:10 | 謝謝您的建議,sleep()比for()好多了,呵呵 | |
eddylau | 2010-01-16 11:23 | 引用 引用第2樓mindee于2010-01-15 22:08發(fā)表的 : 這哥們很樂觀啊,我們以后會編寫關(guān)于QtE編程方面的文檔。 你的程序中可以增加system("/etc/init.d/leds stop")系統(tǒng)調(diào)用,以便程序開啟時(shí)關(guān)閉led-player閃燈程序。 不過我們實(shí)際提供的qtopia led測試程序并不是使用這個(gè)方法,而是通過進(jìn)程控制函數(shù)把led-player進(jìn)程設(shè)置為T,程序退出時(shí)再恢復(fù)。
mindee 果然有料到.
非常期待你們關(guān)于QtE編程方面的文檔。
| |
douzidouer | 2010-01-24 12:40 | 支持原創(chuàng) | |
douzidouer | 2010-01-25 23:11 | 如果方便的話希望您的解釋下myled.cpp各個(gè)頭文件的意思 還有關(guān)鍵代碼的意義。 呵呵有些地方不知道理解的對不對。 還有關(guān)于sleep函數(shù) 有輸入?yún)?shù)么 這些函數(shù)要在哪里進(jìn)行查詢呢? 有沒有類似msdn的工具可以方便查詢我們要使用的函數(shù)呢? | |
douzidouer | 2010-01-25 23:47 | 引用 引用第2樓mindee于2010-01-15 22:08發(fā)表的 : 這哥們很樂觀啊,我們以后會編寫關(guān)于QtE編程方面的文檔。 你的程序中可以增加system("/etc/init.d/leds stop")系統(tǒng)調(diào)用,以便程序開啟時(shí)關(guān)閉led-player閃燈程序。 不過我們實(shí)際提供的qtopia led測試程序并不是使用這個(gè)方法,而是通過進(jìn)程控制函數(shù)把led-player進(jìn)程設(shè)置為T,程序退出時(shí)再恢復(fù)。
mindee
我發(fā)現(xiàn)在 /etc/init.d/leds 這個(gè)路徑下的系統(tǒng)調(diào)用沒法停止leds 而是在 /etc/rc.d/init.d/leds 這個(gè)系統(tǒng)調(diào)用可以停止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發(fā)表的 : 如果方便的話希望您的解釋下myled.cpp各個(gè)頭文件的意思 還有關(guān)鍵代碼的意義。 呵呵有些地方不知道理解的對不對。 還有關(guān)于sleep函數(shù) 有輸入?yún)?shù)么 .......
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的頭文件,前兩個(gè)是qtopia的,后面的是驅(qū)動程序用到的 關(guān)鍵代碼實(shí)際上和測試程序是一樣的, | |
cole3 | 2010-01-31 10:13 | 還有就是最好用::open,::ioctl,::close,因?yàn)樗麄兛赡芎蛁topia中的函數(shù)重名 | |
curay | 2010-01-31 22:30 | 請問樓主:
::ioctl(fd, 0, 1);
這樣的的雙冒號開頭的調(diào)用, 是C++的語法么?
以前沒有見過
請指教 | |
cole3 | 2010-02-01 12:10 | 呵呵,我也不知道,我是從論壇上,看到別人這么用的 | |
|
wang_ge_whut | 2010-02-03 17:12 | 我終于回來了 | |
gx8828418 | 2010-02-13 10:26 | 分別從西邊幸福vcxvcxv | |
gx8828418 | 2010-02-26 20:25 | 樓主,能不能發(fā)個(gè)QT開發(fā)步驟,就是工程的創(chuàng)建過程。 | |
gx8828418 | 2010-02-26 20:26 | 不知道開發(fā)過程,很郁悶啊 | |
curay | 2010-02-26 20:34 | 引用 引用第19樓gx8828418于2010-02-26 20:26發(fā)表的 : 不知道開發(fā)過程,很郁悶啊
開發(fā)過程手冊上都有 熟讀手冊再來發(fā)問吧 | |
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 | | |