在Qt中对变量使用system()
Use system() with a variable in Qt
我想在Qt中运行一个系统命令,如:
system("echo 50 > //sys//class//pwm-sunxi//pwm0//duty_percent")
现在的问题是,我想为上面代码中的50使用一个变量,这样我就可以使用滑块来改变
的值如果有帮助的话,我正在Cubieboard A20上运行Linux Debian发行版
我试过使用
system("echo "INTtoString(variable)" > //sys//class//pwm-sunxi//pwm0//duty_percent")
但是显示了错误
期望)
先于INTtoString
任何想法?
首先,我将使用QFile进行这个写入操作。
如果你真的希望坚持当前的概念,我个人会使用两件事:
1) QString的arg()方法来创建字符串。
2) qPrintable(myQString)返回const char*用于执行。
所以,我会写这样的东西:
QString myString = QString("echo %1 > /sys/class/pwm-sunxi/pwm0/duty_percent").arg(INTtoString(variable));
system(qPrintable(myString));
但实际上,这里有一个更好的方法:
QFile file("/sys/class/pwm-sunxi/pwm0/duty_percent");
if (file.open(QIODevice::WriteOnly | QIODevice::Text
| QIODevice::Truncate | QIODevice::Unbuffered))
if (file.write(INTtoString(variable)) != 2)
qDebug() << "Failed to write all:" << file.errorString();
else
qDebug() << "Failed to open:" << file.errorString();
// No need to close as it will be done automatically by the RAII feature
要避免shell调用,只需使用QFile
:
void change_duty_percent(int value)
{
QFile duty_pc("/sys/class/pwm-sunxi/pwm0/duty_percent");
duty_pc.open(QIODevice::WriteOnly | QIODevice::Truncate);
duty_pc.write(QString::number(value));
duty_pc.close();
}
如果您确实想使用shell,请确保通过使用QByteArray
的单独实例正确地转换为char*
:
QString command = QString("echo %1 > /sys/class/pwm-sunxi/pwm0/duty_percent").arg(value);
QByteArray commandBA(command.toLocal8Bit());
system(commandBA.data());
创建一个QString来保存命令:
QString command = QString("echo %1 > //sys//class//pwm-sunxi//pwm0//duty_percent");
则可以使用arg
将%1替换为另一个值:
system(command.arg(50).toLocal8Bit().constData());
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 将数组的地址分配给变量并删除
- 为"adjacent"变量赋值时出现问题
- enum是C++中的宏变量还是整数变量
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 用C++中的一个变量定义一个常量
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 你能重载对象变量名本身返回的内容吗
- 内置函数可查看CPP中的成员变量
- 是否可以初始化不可复制类型的成员变量(或基类)
- 如何在 C++ 中使用带有 system() 函数的字符串变量
- 使用 system() 不存储变量C++?
- 如何将C 变量数据放入System()函数中
- c++通过调用system()来获取变量集
- 如何将system()函数的输出重定向到变量
- 如何在 C++ 中转义发送到 'system' 命令的变量?
- 在Qt中对变量使用system()
- 如何在system()函数中使用c++变量
- system()中的变量调用c++