子曾经曰过,点灯,是embedded领域的“hello world”
最近开始入手beaglebone……
原文地址:
http://www.cnblogs.com/hebaichuanyeah/p/4702802.html
默默地EEer
关于linux环境下编写字符设备驱动:
http://www.cnblogs.com/hebaichuanyeah/p/3460498.html
C艹/QT,beaglebone的LED控制。
led控制部分,打开文件,设置方向/电平。
#include "led.h" beagleboneLed ::beagleboneLed() { fileLed.open("/sys/class/gpio/export"); fileLed<<44; fileLed.close(); fileLed.open("/sys/class/gpio/export"); fileLed<<86; fileLed.close(); fileLed.open("/sys/class/gpio/export"); fileLed<<87; fileLed.close(); fileLed.open("/sys/class/gpio/export"); fileLed<<88; fileLed.close(); } beagleboneLed :: ~beagleboneLed() { } void beagleboneLed :: init() { fileLed.open("/sys/class/gpio/gpio44/direction"); fileLed<<"out"; fileLed.close(); fileLed.open("/sys/class/gpio/gpio86/direction"); fileLed<<"out"; fileLed.close(); fileLed.open("/sys/class/gpio/gpio87/direction"); fileLed<<"out"; fileLed.close(); fileLed.open("/sys/class/gpio/gpio88/direction"); fileLed<<"out"; fileLed.close(); } void beagleboneLed :: turnOn(int ledNum) { switch(ledNum) { case 1: fileLed.open("/sys/class/gpio/gpio44/value"); fileLed<<"1"; fileLed.close(); break; case 2: fileLed.open("/sys/class/gpio/gpio86/value"); fileLed<<"1"; fileLed.close(); break; case 3: fileLed.open("/sys/class/gpio/gpio87/value"); fileLed<<"1"; fileLed.close(); break; case 4: fileLed.open("/sys/class/gpio/gpio88/value"); fileLed<<"1"; fileLed.close(); break; default: break; } } void beagleboneLed :: turnOff(int ledNum) { switch(ledNum) { case 1: fileLed.open("/sys/class/gpio/gpio44/value"); fileLed<<"0"; fileLed.close(); break; case 2: fileLed.open("/sys/class/gpio/gpio86/value"); fileLed<<"0"; fileLed.close(); break; case 3: fileLed.open("/sys/class/gpio/gpio87/value"); fileLed<<"0"; fileLed.close(); break; case 4: fileLed.open("/sys/class/gpio/gpio88/value"); fileLed<<"0"; fileLed.close(); break; default: break; } }
QT界面
#include "mainwindow.h" #include "QPainter" MainWindow :: MainWindow() { mainWindow = new QWidget; this->setCentralWidget(mainWindow); labelLed1 = new QLabel(" LED 1"); labelLed2 = new QLabel(" LED 2"); labelLed3 = new QLabel(" LED 3"); labelLed4 = new QLabel(" LED 4"); labelWocao = new QLabel(""); buttonLed1 = new QPushButton("OFF"); buttonLed2 = new QPushButton("OFF"); buttonLed3 = new QPushButton("OFF"); buttonLed4 = new QPushButton("OFF"); mainLayout = new QGridLayout; mainLayout->addWidget(labelLed1,0,0,1,1); mainLayout->addWidget(labelLed2,0,1,1,1); mainLayout->addWidget(labelLed3,0,2,1,1); mainLayout->addWidget(labelLed4,0,3,1,4); mainLayout->addWidget(labelWocao,1,0,2,1); mainLayout->addWidget(buttonLed1,3,0,1,1); mainLayout->addWidget(buttonLed2,3,1,1,1); mainLayout->addWidget(buttonLed3,3,2,1,1); mainLayout->addWidget(buttonLed4,3,3,1,1); mainWindow->setLayout(mainLayout); QObject::connect(buttonLed1,SIGNAL(clicked()),this,SLOT(led1Key())); QObject::connect(buttonLed2,SIGNAL(clicked()),this,SLOT(led2Key())); QObject::connect(buttonLed3,SIGNAL(clicked()),this,SLOT(led3Key())); QObject::connect(buttonLed4,SIGNAL(clicked()),this,SLOT(led4Key())); led1State = false; led2State = false; led3State = false; led4State = false; myLed.init(); this->setWindowTitle("beaglebone led test~"); this->resize(QSize(200,200)); } MainWindow :: ~MainWindow() { mainWindow->deleteLater(); mainLayout->deleteLater(); labelLed1->deleteLater(); labelLed2->deleteLater(); labelLed3->deleteLater(); labelLed4->deleteLater(); buttonLed1->deleteLater(); buttonLed2->deleteLater(); buttonLed3->deleteLater(); buttonLed4->deleteLater(); } void MainWindow::led1Key() { led1State = !led1State; if(led1State) { buttonLed1->setText("ON"); myLed.turnOn(1); } else { myLed.turnOff(1); buttonLed1->setText("OFF"); } this->update(); } void MainWindow::led2Key() { led2State = !led2State; if(led2State) { myLed.turnOn(2); buttonLed2->setText("ON"); } else { buttonLed2->setText("OFF"); myLed.turnOff(2); } this->update(); } void MainWindow::led3Key() { led3State = !led3State; if(led3State) { myLed.turnOn(3); buttonLed3->setText("ON"); } else { buttonLed3->setText("OFF"); myLed.turnOff(3); } this->update(); } void MainWindow::led4Key() { led4State = !led4State; if(led4State) { myLed.turnOn(4); buttonLed4->setText("ON"); } else { buttonLed4->setText("OFF"); myLed.turnOff(4); } this->update(); } void MainWindow::paintEvent(QPaintEvent *event) { QPainter ledPaint(this); ledPaint.setWindow(0,0,200,200); ledPaint.setPen(QPen(Qt::black,1)); if(led1State) ledPaint.setBrush(QBrush(Qt::red,Qt::SolidPattern)); else ledPaint.setBrush(QBrush(Qt::black,Qt::SolidPattern)); ledPaint.drawEllipse(11,80,30,50); if(led2State) ledPaint.setBrush(QBrush(Qt::red,Qt::SolidPattern)); else ledPaint.setBrush(QBrush(Qt::black,Qt::SolidPattern)); ledPaint.drawEllipse(57,80,30,50); if(led3State) ledPaint.setBrush(QBrush(Qt::red,Qt::SolidPattern)); else ledPaint.setBrush(QBrush(Qt::black,Qt::SolidPattern)); ledPaint.drawEllipse(103,80,30,50); if(led4State) ledPaint.setBrush(QBrush(Qt::red,Qt::SolidPattern)); else ledPaint.setBrush(QBrush(Qt::black,Qt::SolidPattern)); ledPaint.drawEllipse(149,80,30,50); }
时间: 2025-01-05 23:41:01