无法隐式转换类型' int'到了布尔'使用GPIO引脚

时间:2018-01-22 20:04:47

标签: c# gpio

我正在使用我的Raspberry Pi 3及其GPIO引脚。我很遗憾地使用了一个PDF文件,这个文件在Arduino中编码。我已经尝试查找从Arduino到C#的转换,但只能找到从Arduino到本机C的转换。我从中得到了这个代码,它正在编译错误,我想知道原因。我查看了Stack Overflow并且无法在任何地方找到它,所以我自己问了一下。 (我已将部分代码转换为我在c#中使用的代码,如顶行。其余的我没有碰过。

void ShiftOut(GpioPin dataPin, GpioPin clockPin, bool MSBFIRST, byte command)
{
    for (int i = 0; i < 8; i++)
    {
        bool output = false;
        if (MSBFIRST)
        {
            output = command & 0b10000000;
            command = command << 1;
        }
        else
        {
            output = command & 0b00000001;
            command = command >> 1;
        }
     }
}

1 个答案:

答案 0 :(得分:1)

在C#中,boolint之间没有隐式转换。在这一行:

output = command & 0b10000000;
  1. commandbyte
  2. 0b10000000int
  3. command & 0b1000000会返回int
  4. outputbool。没有从intbool的隐式(或显式)转换,因此分配失败。
  5. 这里的问题是为什么output被声明为bool