Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt5使用QFile和QDataStream编写Linux SysFs条目_Linux_Qt_Qt5_Qfile_Sysfs - Fatal编程技术网

Qt5使用QFile和QDataStream编写Linux SysFs条目

Qt5使用QFile和QDataStream编写Linux SysFs条目,linux,qt,qt5,qfile,sysfs,Linux,Qt,Qt5,Qfile,Sysfs,我可以echo 100>/sys/class/soft\u pwm/pwm-35/duty\u cycle作为root用户,从命令行可以很好地执行,但是我无法让我的Qt 5代码在作为root用户运行时执行相同的操作。下面是代码-我做错了什么?谢谢 /** * Set the PWM on the Red / Green LEDs * @param percent */ void LedController::setLedPwm(int percent) { // Cap the

我可以
echo 100>/sys/class/soft\u pwm/pwm-35/duty\u 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();

}
/**
*在红色/绿色LED上设置PWM
*@参数百分比
*/
无效LED控制器::设置LED脉宽调制(整数百分比){
//限制百分比
如果(百分比>90){
百分比=90;
}
如果(百分比<25){
百分比=25;
}
//缩放到可用百分比
百分比=绝对值(百分比-100);
QFile文件1(“/sys/class/soft_pwm/pwm-35/占空比”);
如果(!file1.open(QIODevice::WriteOnly | QIODevice::Text)){

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

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

它到底在哪里失败?请尝试使用strace运行它。您得到的调试输出是什么?该函数执行时不会出现故障。我没有看到“无法设置LED PWM”消息。问题是占空比文件的值没有更改。是否要删除或替换文件内容?具体失败在哪里?请尝试使用strace运行它。您得到的调试输出是什么?该功能执行时没有失败。我没有看到“无法设置LED PWM”消息。问题是占空比文件的值没有更改。是否要删除或替换文件内容?