C++ 在if条件下使用gpio的状态

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

我有一个函数,在这个函数中我使用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);
      }
    }

您正试图将数据放入常量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;
    }