在 if 条件下使用 gpio 的状态
Using the state of a gpio in an if condition
我有一个函数,在该函数中我正在使用 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(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);
}
}
我收到一个错误,我不确定如何解决:
sound_p51.cpp:38: error: no match for 'operator>>' in 'id >> value'
sound_p51.cpp:40: warning: comparison with string literal results in unspecified behaviour
您正在尝试将数据放入 const char* const 变量中。 const char* const 是指向字符串的指针,其中指针不能更改,并且指向的字符串数据不能更改,因此是 const 的。
警告是因为 const char* 没有重载 == 运算符。对于这种类型的比较,您通常会使用 strcmp()
.
但是,由于您使用的是 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 示例:http://www.hertaville.com/introduction-to-accessing-the-raspberry-pis-gpio-in-c.html
我有一个函数,在该函数中我正在使用 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(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);
}
}
我收到一个错误,我不确定如何解决:
sound_p51.cpp:38: error: no match for 'operator>>' in 'id >> value'
sound_p51.cpp:40: warning: comparison with string literal results in unspecified behaviour
您正在尝试将数据放入 const char* const 变量中。 const char* const 是指向字符串的指针,其中指针不能更改,并且指向的字符串数据不能更改,因此是 const 的。
警告是因为 const char* 没有重载 == 运算符。对于这种类型的比较,您通常会使用 strcmp()
.
但是,由于您使用的是 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 示例:http://www.hertaville.com/introduction-to-accessing-the-raspberry-pis-gpio-in-c.html