wx__uZaz4G 发表于 2022-11-16 18:18:39

QT 操作LED Qfile权限不够

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
//    file.setFileName("/home/firefly/123");
    file.setFileName("/sys/class/leds/firefly:yellow:user/brightness");
//    system("echo none > /sys/class/leds/firefly:yellow:user/trigger");
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked(bool checked)
{
    qDebug()<<checked<<endl;
   if(!file.exists())
   {
       qDebug()<<"no led"<<endl;
       return ;
   }
    if(!file.open(QIODevice::WriteOnly))
      qDebug()<<file.errorString()<<endl;
    QByteArray buf[] = {"0","1"};

   if(checked)
   {

      ui->pushButton->setText("close");
         qDebug()<<"close"<<endl;
      file.write(buf);
   }
   else
   {
      ui->pushButton->setText("open");
      qDebug()<<"open"<<endl;
      file.write(buf);
   }
   file.close();

}


在终端上 打开文件提示permission denied
尝试 chmod 777没有用
请问是什么问题呢

dengkx 发表于 2022-11-17 09:19:33

本帖最后由 dengkx 于 2022-11-17 09:23 编辑

更改为777之后,直接使用普通用户在终端输入:
$ echo 1 > /sys/class/leds/firefly\:yellow\:user/brightness
看一下能不能控制

wx__uZaz4G 发表于 2022-11-17 13:43:35

dengkx 发表于 2022-11-17 09:19
更改为777之后,直接使用普通用户在终端输入:
$ echo 1 > /sys/class/leds/firefly\:yellow\:user/bright ...

可以的 终端可以控制 就是不能修改文件

dengkx 发表于 2022-11-17 14:56:26

wx__uZaz4G 发表于 2022-11-17 13:43
可以的 终端可以控制 就是不能修改文件

使用流看看?
file.open(QIODevice::WriteOnly | QIODevice::Text);
QTextStream out(&file);
out << 1 << "\n";

wx__uZaz4G 发表于 2022-11-17 16:41:51

dengkx 发表于 2022-11-17 14:56
使用流看看?
file.open(QIODevice::WriteOnly | QIODevice::Text);
QTextStream out(&file);


试试提示没有权限 permission denied

wx__uZaz4G 发表于 2022-11-17 16:45:43

您好 我们有没有QT 操作硬件端口的历程啊
页: [1]
查看完整版本: QT 操作LED Qfile权限不够