Qt 5 Запись записи Linux SysFs с помощью QFile и QDataStream

Я могу echo 100 > /sys/class/soft_pwm/pwm-35/duty_cycle как root просто из командной строки, но я не могу заставить свой код 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("%1\n").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("%1\n").arg(percent);
    qDebug() << "LedController: PWM Led [ 35 ]" << toWrite2;
    in2 << toWrite1;
    file2.close();

}

person PhilBot    schedule 14.01.2016    source источник
comment
Где именно не получается?   -  person Ilya    schedule 14.01.2016
comment
Попробуйте запустить через strace.   -  person Frank Meerkötter    schedule 14.01.2016
comment
Какой результат отладки вы получаете?   -  person Andreas Fester    schedule 14.01.2016
comment
Функция выполняется без сбоев. Я не вижу сообщение Cannot Set LED PWM. Проблема в том, что значение файла скважности не меняется.   -  person PhilBot    schedule 14.01.2016
comment
Вы хотите добавить или заменить содержимое файла?   -  person Ilya    schedule 14.01.2016
comment
replace - я хочу изменить значение программной ШИМ для драйвера ядра из пользовательского пространства в моем приложении Qt5   -  person PhilBot    schedule 14.01.2016


Ответы (1)


QDataStream предназначен для хранения двоичных данных. Для записи текстового значения используйте QTextStream.

person Ilya    schedule 14.01.2016