コード例 #1
0
        private bool disposedValue = false; // To detect redundant calls

        void Dispose(bool disposing)
        {
            if (!disposedValue)
            {
                if (disposing)
                {
                    // TODO: dispose managed state (managed objects).
                    this.conn.Close();
                    this.conn.Dispose();
                    this.conn = null;

                    pushButton.ValueChanged -= PushButton_ValueChanged;
                    pushButton.Dispose();
                    pushButton = null;

                    _servoPin.Dispose();
                    _servoPin = null;

                    foreach (FinishGate fg in FinishGates)
                    {
                        fg.Dispose();
                    }
                }

                // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below.
                // TODO: set large fields to null.

                disposedValue = true;
            }
        }
コード例 #2
0
ファイル: RGBLight.cs プロジェクト: thecadams/mindmurmur
 public void Dispose()
 {
     Rpin.Stop(); Gpin.Stop(); Bpin.Stop();
     Rpin.Dispose();
     Gpin.Dispose();
     Bpin.Dispose();
 }
コード例 #3
0
        private void Timer_Tick(ThreadPoolTimer timer)
        {
            if (iteration > 4)
            {
                timer.Cancel();
                motorPin.Stop();
                motorPin.Dispose();
                return;
            }
            iteration++;

            System.Diagnostics.Debug.WriteLine(iteration);

            if (iteration == 1 || iteration == 3)
            {
                currentPulseLength = ClockwisePulseLength;
                secondPulseLength  = CounterClockwisePulseLength;
            }
            if (iteration == 2 || iteration == 4)
            {
                currentPulseLength = CounterClockwisePulseLength;
                secondPulseLength  = ClockwisePulseLength;
            }

            double desiredPercentage = currentPulseLength / (1000.0 / pwmController.ActualFrequency);

            motorPin.SetActiveDutyCyclePercentage(desiredPercentage);
        }
コード例 #4
0
        /// <summary>
        /// Will dispose all related attributes.
        /// </summary>
        public void Dispose()
        {
            // Cancel timers
            captiveButtonsValueReadTimer.Cancel();
            temperatureValueReadTimer.Cancel();
            pressureValueReadTimer.Cancel();

            // Dispose child controller
            apa102.Dispose();
            bmp280.Dispose();
            ht16k33.Dispose();

            // Dispose pins
            redPin.Dispose();
            greenPin.Dispose();
            bluePin.Dispose();
            buttonAPin.Dispose();
            buttonBPin.Dispose();
            buttonCPin.Dispose();
            buzzerPin.Dispose();

            // Dispose controllers
            pwmController  = null;
            i2cController  = null;
            gpioController = null;
        }
コード例 #5
0
 /// <inheritdoc/>
 public void Dispose()
 {
     if (bluePin != null)
     {
         if (bluePin.IsStarted)
         {
             bluePin.Stop();
         }
         bluePin.Dispose();
         bluePin = null;
     }
     if (greenPin != null)
     {
         if (greenPin.IsStarted)
         {
             greenPin.Stop();
         }
         greenPin.Dispose();
         greenPin = null;
     }
     if (redPin != null)
     {
         if (redPin.IsStarted)
         {
             redPin.Stop();
         }
         redPin.Dispose();
         redPin = null;
     }
 }
コード例 #6
0
 /// <summary>
 /// Disposes the underlying objects. This method will be called automatically and should not be called by user
 /// code, but inheritors should call the base method.
 /// </summary>
 protected override void DisposeResource()
 {
     if (_pin != null)
     {
         _pin.Dispose();
         _pin = null;
     }
 }
コード例 #7
0
        /// <summary>
        /// Free up our resources.
        /// </summary>
        public void Dispose()
        {
            pin.Dispose();
            pin = null;

            t.Dispose();
            t = null;
        }
コード例 #8
0
 private void DisposePin(PwmPin pin)
 {
     if (pin != null)
     {
         StopPin(pin);
         pin.Dispose();
         pin = null;
     }
 }
コード例 #9
0
ファイル: PwmPinBase.cs プロジェクト: placebodk/Hydriot
 virtual protected void Dispose(bool disposing)
 {
     if (disposing)
     {
         _pin.Stop();
         _pin.Dispose();
         _pin = null;
     }
 }
コード例 #10
0
        static void Main()
        {
            var _config = new configs.config(configs.Configuration.GetConfiguration());

            Console.WriteLine("Starting... RaspiFanController StartingSettings is...");
            Console.WriteLine($"PwmPin :{_config.PWMPin} GpioLogicPin: {_config.LogicPin}");

            Console.WriteLine("\n**FanSpeedSettings");
            Console.WriteLine($"*Frequency: {_config.PwmFrequency}Hz	FanMaxSpeed: {_config.MaxSpeed}%  FanMinSpeed: {_config.MinSpeed}%");
            Console.WriteLine($"*FanMaxTemp:{_config.MaxSpeedTemp}C	FanMinTemp: {_config.MinSpeedTemp}C");

            using (var logicPin = new DigitalPin(_config.LogicPin, GpioPinDirection.Out))
                using (var pwmPin = new PwmPin(_config.PWMPin, _config.PwmFrequency, 1))
                {
                    Console.CancelKeyPress += (s, e) =>
                    {
                        Console.WriteLine("終了中...");
                        logicPin.Dispose();
                        pwmPin.Dispose();
                    };
                    logicPin.State = true;
                    Thread.Sleep(3000);

                    while (true)
                    {
                        float perSpeed = 1;

                        if (!float.TryParse(File.ReadAllText("/sys/class/thermal/thermal_zone0/temp"), out float temp))
                        {
                            return;
                        }
                        temp /= 1000;

                        if (_config.MaxSpeedTemp != _config.MinSpeedTemp)
                        {
                            float perTemp = (temp - _config.MinSpeedTemp) / (_config.MaxSpeedTemp - _config.MinSpeedTemp);
                            perSpeed = (_config.MinSpeed + ((_config.MaxSpeed - _config.MinSpeed) * perTemp)) / 100;

                            if (perTemp >= 1)
                            {
                                perSpeed = _config.MaxSpeed;
                            }
                            if (perTemp <= 0)
                            {
                                perSpeed = _config.MaxSpeed > _config.MinSpeed ? _config.MaxSpeed : _config.MinSpeed;
                            }
                        }

                        perSpeed = Math.Min(Math.Max(perSpeed, 0), 1);

                        Console.WriteLine($"[{DateTime.Now:yyyy/mm/dd HH:MM:ss}] Temp: {temp}C, Spd: {perSpeed * 100}%");
                        pwmPin.Duty = perSpeed;
                        Thread.Sleep(_config.GetStatePeriod * 1000);
                    }
                }
        }
コード例 #11
0
        /// <summary>
        /// Cleanup
        /// </summary>
        public void Dispose()
        {
            redPin.Stop();
            redPin.Dispose();

            greenPin.Stop();
            greenPin.Dispose();

            bluePin.Stop();
            bluePin.Dispose();
        }
コード例 #12
0
        /// <summary>
        ///     Disposes of the object releasing control the pins.
        /// </summary>
        /// <param name="disposing">Whether or not this method is called from Dispose().</param>
        private void Dispose(bool disposing)
        {
            if (Disposed)
            {
                return;
            }

            if (disposing)
            {
                PwmPin.Dispose();
                _directionPin1.Dispose();
                _directionPin2.Dispose();
            }

            Disposed = true;
        }
コード例 #13
0
ファイル: MainPage.xaml.cs プロジェクト: yinyue200/GpioTest
        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            await load();

            try
            {
                var id = int.Parse(gpio.Text);
                switch (pwmselect.SelectedIndex)
                {
                case 1:
                case 0:
                {
                    gpioPin?.Dispose();
                    gpioPin = null;
                    pwmPin?.Dispose();
                    pwmPin = null;
                    try
                    {
                        pwmPin = pwmController.OpenPin(id);
                    }
                    catch (Exception err)
                    {
                        _ = new MessageDialog("打开指定硬件PWM GPIO接口失败" + err.ToString()).ShowAsync();
                    }
                }
                break;

                default:
                {
                    if (gpioController.TryOpenPin(id, GpioSharingMode.Exclusive, out var pin, out var gpioOpenStatus))
                    {
                        pwmPin?.Dispose();
                        pwmPin = null;
                        gpioPin?.Dispose();
                        gpioPin = null;
                        gpioPin = pin;
                    }
                    else
                    {
                        _ = new MessageDialog("打开指定GPIO接口失败").ShowAsync();
                    }
                }
コード例 #14
0
 private void MainPage_Unloaded(object sender, RoutedEventArgs e)
 {
     pwmPin.Stop();
     pwmPin.Dispose();
     timer.Stop();
 }
コード例 #15
0
ファイル: Program.cs プロジェクト: JunYingLai/win-demo-apps
        static async Task MainAsync()
        {
            string input = "";
            bool   exit  = input.Equals("exit");

            UpBridge.Up upb = new UpBridge.Up();
            Console.WriteLine("UWP console PWM test:");
            PwmController controller = await PwmController.GetDefaultAsync();

            pin1.pin = 0;
            //print Board INFO
            Console.WriteLine(upb.BoardGetManufacture() + "\n"
                              + "Board Name:  " + upb.BoardGetName() + "\n"
                              + "BIOS Ver:    " + upb.BoardGetBIOSVersion() + "\n"
                              + "Firmware Ver:" + upb.BoardGetFirmwareVersion().ToString("X") + "\n");
            PwmPin pin = controller.OpenPin(0);

            Console.WriteLine(Usage);
            while (exit == false)
            {
                Console.Write(pin1.pin.ToString() + ">");
                input = Console.ReadLine();
                string[] inputnum = input.Split(' ');
                switch (inputnum[0].ToLower())
                {
                case "list":
                    pwmlist();
                    break;

                case "set":
                    if (inputnum.Length == 2)
                    {
                        int pin_convert;
                        if (int.TryParse(inputnum[1], out pin_convert))
                        {
                            if (pin_convert == pin1.pin)
                            {
                                Console.WriteLine("This Pin is currently setting");
                            }
                            else
                            {
                                pin1.pin = pin_convert;
                                try
                                {
                                    controller = await PwmController.GetDefaultAsync();

                                    pin = controller.OpenPin(pin1.pin);
                                }
                                catch (Exception e)
                                {
                                    Console.WriteLine(e.Message);
                                }
                                Console.WriteLine("You select pin   " + pin1.pin + "   to set");
                            }
                        }
                        else
                        {
                            Console.WriteLine("Please input : set {int}");
                        }
                    }
                    else
                    {
                        Console.WriteLine("Please input : set {int}");
                    }
                    break;

                case "get":
                    if (inputnum.Length == 1)
                    {
                        Console.WriteLine("Pin  " + pin1.pin + "\n");
                        Console.WriteLine("Max Frequency    :   " + controller.MaxFrequency + "\n");
                        Console.WriteLine("Min Frequency    :   " + controller.MinFrequency + "\n");
                        Console.WriteLine("Actual Frequency :   " + controller.ActualFrequency + "\n");
                        Console.WriteLine("Duty Cycle       :   " + pin.GetActiveDutyCyclePercentage() + "\n");
                        Console.WriteLine("Pin Status       :   " + pin.IsStarted + "\n");
                    }
                    else
                    {
                        Console.WriteLine("Please input : get");
                    }
                    break;

                case "frequency":
                    if (inputnum.Length == 2)
                    {
                        try
                        {
                            if (double.TryParse(inputnum[1], out pin1.pin_ActualFrequency))
                            {
                                Console.WriteLine("Frequency set : " + pin1.pin_ActualFrequency);
                                controller.SetDesiredFrequency(pin1.pin_ActualFrequency);
                                pin.Start();
                            }
                            else
                            {
                                Console.WriteLine("Please input : frequency {double}");
                            }
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e.Message);
                        }
                    }
                    else
                    {
                        Console.WriteLine("Please input : frequency {double}");
                    }
                    break;

                case "duty":
                    if (inputnum.Length == 2)
                    {
                        try
                        {
                            if (double.TryParse(inputnum[1], out pin1.pin_DutyCycle))
                            {
                                Console.WriteLine("duty set : " + pin1.pin_DutyCycle);
                                pin.SetActiveDutyCyclePercentage(pin1.pin_DutyCycle);
                                pin.Start();
                            }
                            else
                            {
                                Console.WriteLine("Please input : duty {double}");
                            }
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e.Message);
                        }
                    }
                    else
                    {
                        Console.WriteLine("Please input : duty {double}");
                    }
                    break;

                case "exit":
                    exit = inputnum[0].Equals("exit");
                    pin.Dispose();
                    break;

                case "help":
                default:
                    Console.WriteLine(Usage);
                    break;
                }
            }
        }
コード例 #16
0
 public void Dispose()
 {
     m_PwmPin.Dispose();
 }
コード例 #17
0
ファイル: Servo.cs プロジェクト: EngineerDDP/RPiClient
 public void Dispose()
 {
     Singal.Stop();
     Singal.Dispose();
 }