Qt 5 使用 QFile 和 QDataStream 编写 Linux SysFs 条目



我可以从命令行很好地echo 100 > /sys/class/soft_pwm/pwm-35/duty_cycle为根,但我无法让我的Qt 5代码在以root身份运行时做同样的事情。下面是代码 - 我做错了什么?谢谢。

/**
 * Set the PWM on the Red / Green LEDs
 * @param percent
 */
void LedController::setLedPwm(int percent) {
    // Cap the percent
    if ( percent > 90 ) {
        percent = 90;
    }
    if ( percent < 25 ) {
        percent = 25;
    }
    // Scale to usable percent
    percent = abs(percent - 100);
    QFile file1("/sys/class/soft_pwm/pwm-35/duty_cycle");
    if (!file1.open(QIODevice::WriteOnly | QIODevice::Text)) {
        qDebug() << "LedController: Cannot set LED PWM for Red/Green LEDs [ 35 ]...";
        return;
    }
    QDataStream in1(&file1);
    QString toWrite1 = QString("%1n").arg(percent);
    qDebug() << "LedController: PWM Led [ 35 ]" << toWrite1;
    in1 << toWrite1;
    file1.close();
    QFile file2("/sys/class/soft_pwm/pwm-39/duty_cycle");
    if (!file2.open(QIODevice::WriteOnly | QIODevice::Text)) {
        qDebug() << "LedController: Cannot set LED PWM for Red/Green LEDs [ 39 ]...";
        return;
    }
    QDataStream in2(&file2);
    QString toWrite2 = QString("%1n").arg(percent);
    qDebug() << "LedController: PWM Led [ 35 ]" << toWrite2;
    in2 << toWrite1;
    file2.close();
}

> QDataStream用于二进制数据存储。若要写入文本值,请使用 QTextStream。

相关内容

  • 没有找到相关文章

最新更新