Esempio n. 1
0
        protected void ChangePinMode(int pinNumber, PinMode mode)
        {
            GpioPin pin = watcher.Get(pinNumber);

            if (pin != null)
            {
                pin.SetMode(mode);
                WritePinState(pin);
            }
        }
        public string DeserializeState(string state, out Dictionary <int, string> tagsState)
        {
            tagsState = new Dictionary <int, string>();

            StringBuilder log = new StringBuilder();

            if (state != null)
            {
                using (Gpio gpio = new Gpio())
                {
                    string[] lines = state.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (string line in lines)
                    {
                        string[] fields = line.Split(SEPARATOR);
                        if (fields.Length == 5)
                        {
                            try
                            {
                                int      pinNumber = Int32.Parse(fields[0]);
                                PinMode  pinMode   = (PinMode)Enum.Parse(typeof(PinMode), fields[1]);
                                PinValue pinValue  = (PinValue)Enum.Parse(typeof(PinValue), fields[2]);
                                PullMode pullMode  = (PullMode)Enum.Parse(typeof(PullMode), fields[3]);
                                string   tag       = fields[4];

                                GpioPin pin = gpio.GetPin(pinNumber);
                                pin.Tag = tag;
                                pin.SetMode(pinMode);
                                pin.SetPullMode(pullMode);
                                pin.Write(pinValue);

                                if (tagsState != null)
                                {
                                    tagsState.Add(pin.Number, pin.Tag);
                                }

                                log.AppendFormat("Pin {0} set to mode {1}, pull {2}, value {3}, tag {4}", pinNumber, pinMode, pullMode, pinValue, tag);
                            }
                            catch (Exception e)
                            {
                                log.AppendFormat("Error: {0}", e.Message);
                            }

                            log.AppendLine();
                        }
                    }
                }
            }

            return(log.ToString());
        }