C++ 在if条件下使用gpio的状态
我有一个函数,在这个函数中我使用usleep。但是,我只想在某个gpio的值为零的情况下使用usleep。以下是我目前掌握的代码:C++ 在if条件下使用gpio的状态,c++,fstream,iostream,gpio,C++,Fstream,Iostream,Gpio,我有一个函数,在这个函数中我使用usleep。但是,我只想在某个gpio的值为零的情况下使用usleep。以下是我目前掌握的代码: const char *const amplifierGPIO = "/sys/class/gpio/gpio107/value"; const char *const hardwareID = "/sys/class/gpio/gpiox/value"; bool isWM8750() { std::ifstream id(hardw
const char *const amplifierGPIO = "/sys/class/gpio/gpio107/value";
const char *const hardwareID = "/sys/class/gpio/gpiox/value";
bool isWM8750()
{
std::ifstream id(hardwareID);
if (id.is_open())
{
const char *const value;
id >> value;
if (value == "0")
{
return true;
}
}
return false;
}
void amplifierUnmute()
{
std::ofstream amp(amplifierGPIO);
if (amp.is_open())
{
amp << "1";
amp.close();
}
if(isWM8750())
{
usleep(50000);
}
}
您正试图将数据放入常量char*const变量中。const char*const是指向一个字符串的指针,指针不能更改,而指向的字符串数据不能更改,因此为const 警告是因为const char*没有重载==运算符。对于这种类型的比较,您通常会使用
但是,由于您使用C++,您可能希望使用一个STD::string,它应该解决引用的编译器消息,如:
#include <string>
// ...
bool isWM8750()
{
std::ifstream id(hardwareID);
if (id.is_open())
{
std::string value;
id >> value;
id.close();
if (value == "0")
{
return true;
}
}
return false;
}
这里还有一些关于raspberry pi gpios的例子:Change const char*const value;到std::字符串值@πάντα ῥεῖ 啊,我明白了,这是因为hardwareID被声明为指针?这么说:常量字符*常量值;这只是另一个指针,我不能只比较两个指针?通常很难写入常量。@Rob除了@user4581301所说的之外,是的。比较两个指针会比较指针。左边的地址和右边的地址匹配吗?如果是的话,那是真的。它根本不考虑指针的引用。
#include <string>
// ...
bool isWM8750()
{
std::ifstream id(hardwareID);
if (id.is_open())
{
std::string value;
id >> value;
id.close();
if (value == "0")
{
return true;
}
}
return false;
}