/// <summary> /// Sets raspberry device pin value. /// </summary> /// <param name="pin">Raspberry pin</param> /// <param name="pinValue">Raspberry pin value</param> public void SetPinValue(RaspberyPin pin, PinValue pinValue) { if (!this.IsInitialized) { throw new Exception("Raspberry device not initialized"); } if (!RaspberyPin.IsGPIOPin(pin.Code)) { throw new Exception("Can not set pin value to non GPIO pin"); } try { string pinAddress = pin.Code.ToString().Split('_').Last().Replace("0", ""); string value = ""; switch (pinValue) { case PinValue.High: value = "1"; break; case PinValue.Low: value = "0"; break; } if (Environment.OSVersion.Platform == PlatformID.Unix) { ("echo " + value + " > /sys/class/gpio/gpio" + pinAddress + "/value").Bash(); } this._devicePins.Where(p => p.Code == pin.Code).SingleOrDefault().Value = pinValue; } catch (Exception ex) { throw ex; } }
/// <summary> /// Sets raspbery device pin direction. /// </summary> /// <param name="pin">Raspberry pin</param> /// <param name="pinDirection">Raspberry pin direction</param> public void SetPinDirection(RaspberyPin pin, PinDirection pinDirection) { if (!this.IsInitialized) { throw new Exception("Raspberry device not initialized"); } if (!RaspberyPin.IsGPIOPin(pin.Code)) { throw new Exception("Can not set pin direction to non GPIO pin"); } try { string pinAddress = pin.Code.ToString().Split('_').Last().Replace("0", ""); string direction = ""; switch (pinDirection) { case PinDirection.In: direction = "in"; break; case PinDirection.Out: direction = "out"; break; } if (Environment.OSVersion.Platform == PlatformID.Unix) { ("echo " + direction + " > /sys/class/gpio/gpio" + pinAddress + "/direction").Bash(); } this._devicePins.Where(p => p.Code == pin.Code).SingleOrDefault().Direction = pinDirection; } catch (Exception ex) { throw ex; } }