【发布时间】:2016-01-14 21:13:22
【问题描述】:
我可以在命令行中以 root 身份 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("%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();
}
【问题讨论】:
-
到底哪里失败了?
-
尝试使用 strace 运行它。
-
你得到的调试输出是什么?
-
函数执行没有失败。我没有看到“无法设置 LED PWM”消息。问题是占空比文件的值没有改变。
-
您要追加还是替换文件内容?