protected override void Dispose(bool disposing)
        {
            if (!is_open)
            {
                return;
            }

            is_open = false;
            stream.Close();
            stream = null;
        }
Exemple #2
0
        protected override void Dispose(bool disposing)
        {
            if (!is_open)
            {
                return;
            }

            is_open = false;
            // Do not close the base stream when the finalizer is run; the managed code can still hold a reference to it.
            if (disposing)
            {
                stream.Close();
            }
            stream = null;
        }
Exemple #3
0
        public void Open()
        {
            if (is_open)
            {
                throw new InvalidOperationException("Port is already open");
            }

            if (IsWindows)             // Use windows kernel32 backend
            {
                stream = new WinSerialStream(port_name, baud_rate, data_bits, parity, stop_bits, dtr_enable,
                                             rts_enable, handshake, read_timeout, write_timeout, readBufferSize, writeBufferSize);
            }
            else             // Use standard unix backend
            {
                stream = new SerialPortStream(port_name, baud_rate, data_bits, parity, stop_bits, dtr_enable,
                                              rts_enable, handshake, read_timeout, write_timeout, readBufferSize, writeBufferSize);
            }

            is_open = true;
        }
Exemple #4
0
		public void Open ()
		{
			if (is_open)
				throw new InvalidOperationException ("Port is already open");
			
			if (IsWindows) // Use windows kernel32 backend
				stream = new WinSerialStream (port_name, baud_rate, data_bits, parity, stop_bits, dtr_enable,
					rts_enable, handshake, read_timeout, write_timeout, readBufferSize, writeBufferSize);
			else // Use standard unix backend
				stream = new SerialPortStream (port_name, baud_rate, data_bits, parity, stop_bits, dtr_enable,
					rts_enable, handshake, read_timeout, write_timeout, readBufferSize, writeBufferSize);
			
			is_open = true;
		}
Exemple #5
0
		protected override void Dispose (bool disposing)
		{
			if (!is_open)
				return;
			
			is_open = false;
			// Do not close the base stream when the finalizer is run; the managed code can still hold a reference to it.
			if (disposing)
				stream.Close ();
			stream = null;
		}
 internal ArduinoDriverSerialPort(ISerialStream serialStream)
 {
     this.serialStream = serialStream;
 }
Exemple #7
0
        public SettingsViewModel(IUserSettings userSettings, IList <ISelectableViewPart> selectableViewParts
                                 , ISpotSet spotSet, IContext context, ISerialStream serialStream)
        {
            if (selectableViewParts == null)
            {
                throw new ArgumentNullException(nameof(selectableViewParts));
            }

            this.Settings       = userSettings ?? throw new ArgumentNullException(nameof(userSettings));
            this.spotSet        = spotSet ?? throw new ArgumentNullException(nameof(spotSet));
            Context             = context ?? throw new ArgumentNullException(nameof(context));
            this.serialStream   = serialStream ?? throw new ArgumentNullException(nameof(serialStream));
            SelectableViewParts = selectableViewParts.OrderBy(p => p.Order)
                                  .ToList();
#if DEBUG
            SelectedViewPart = SelectableViewParts.Last();
#else
            SelectedViewPart = SelectableViewParts.First();
#endif

            PossibleLedCountsVertical   = Enumerable.Range(10, 190).ToList();
            PossibleLedCountsHorizontal = Enumerable.Range(10, 290).ToList();

            PropertyChanged += (s, e) =>
            {
                switch (e.PropertyName)
                {
                case nameof(SelectedViewPart):
                    var name = SelectedViewPart?.ViewPartName ?? "nothing";
                    break;
                }
            };

            Settings.PropertyChanged += (s, e) =>
            {
                switch (e.PropertyName)
                {
                case nameof(Settings.SpotsX):
                    RaisePropertyChanged(() => SpotsXMaximum);
                    RaisePropertyChanged(() => LedCount);
                    RaisePropertyChanged(() => OffsetLedMaximum);
                    break;

                case nameof(Settings.SpotsY):
                    RaisePropertyChanged(() => SpotsYMaximum);
                    RaisePropertyChanged(() => LedCount);
                    RaisePropertyChanged(() => OffsetLedMaximum);
                    break;

                case nameof(Settings.UseLinearLighting):
                    RaisePropertyChanged(() => UseNonLinearLighting);
                    break;

                case nameof(Settings.OffsetLed):
                    RaisePropertyChanged(() => OffsetLedMaximum);
                    break;

                case nameof(Settings.Autostart):
                    if (Settings.Autostart)
                    {
                        StartUpManager.AddApplicationToCurrentUserStartup();
                    }
                    else
                    {
                        StartUpManager.RemoveApplicationFromCurrentUserStartup();
                    }
                    break;

                case nameof(Settings.ComPort):
                    RaisePropertyChanged(() => TransferCanBeStarted);
                    RaisePropertyChanged(() => TransferCanNotBeStarted);
                    break;
                }
            };
        }
 /// <summary>
 /// Creates a new ArduinoDriver instance. The relevant portname will be autodetected if possible.
 /// </summary>
 /// <param name="arduinoModel"></param>
 /// <param name="autoBootstrap"></param>
 public ArduinoDriver(ISerialStream serialPortStream)
 {
     serialPortStream.SetBaudRate(DriverBaudRate);
     serialPortStream.Open();
     port = new ArduinoDriverSerialPort(serialPortStream);
 }
        public SettingsViewModel(IUserSettings userSettings, IList <ISelectableViewPart> selectableViewParts
                                 , ISpotSet spotSet, IContext context, TelemetryClient tc, ISerialStream serialStream)
        {
            WqlEventQuery query = new WqlEventQuery("SELECT * FROM Win32_DeviceChangeEvent");

            watcher = new ManagementEventWatcher(query);
            watcher.EventArrived += (s, e) => RaisePropertyChanged(() => AvailableComPorts);
            // watcher.Query = query;
            watcher.Start();
            // watcher.WaitForNextEvent();
            if (selectableViewParts == null)
            {
                throw new ArgumentNullException(nameof(selectableViewParts));
            }

            this.Settings       = userSettings ?? throw new ArgumentNullException(nameof(userSettings));
            this.spotSet        = spotSet ?? throw new ArgumentNullException(nameof(spotSet));
            Context             = context ?? throw new ArgumentNullException(nameof(context));
            this.serialStream   = serialStream ?? throw new ArgumentNullException(nameof(serialStream));
            SelectableViewParts = selectableViewParts.OrderBy(p => p.Order)
                                  .ToList();
#if DEBUG
            SelectedViewPart = SelectableViewParts.First();
#else
            SelectedViewPart = SelectableViewParts.First();
#endif

            PossibleLedCountsVertical   = Enumerable.Range(10, 190).ToList();
            PossibleLedCountsHorizontal = Enumerable.Range(10, 290).ToList();

            PropertyChanged += (s, e) =>
            {
                switch (e.PropertyName)
                {
                case nameof(SelectedViewPart):
                    var name = SelectedViewPart?.ViewPartName ?? "nothing";
                    tc.TrackPageView(name);
                    break;
                }
            };

            Settings.PropertyChanged += (s, e) =>
            {
                switch (e.PropertyName)
                {
                case nameof(Settings.SpotsX):
                    RaisePropertyChanged(() => SpotsXMaximum);
                    RaisePropertyChanged(() => LedCount);
                    RaisePropertyChanged(() => OffsetLedMaximum);
                    break;

                case nameof(Settings.SpotsY):
                    RaisePropertyChanged(() => SpotsYMaximum);
                    RaisePropertyChanged(() => LedCount);
                    RaisePropertyChanged(() => OffsetLedMaximum);
                    break;

                case nameof(Settings.LedsPerSpot):
                    RaisePropertyChanged(() => LedCount);
                    RaisePropertyChanged(() => OffsetLedMaximum);
                    break;

                case nameof(Settings.UseLinearLighting):
                    RaisePropertyChanged(() => UseNonLinearLighting);
                    break;

                case nameof(Settings.OffsetLed):
                    RaisePropertyChanged(() => OffsetLedMaximum);
                    break;

                case nameof(Settings.Autostart):
                    if (Settings.Autostart)
                    {
                        StartUpManager.AddApplicationToCurrentUserStartup();
                    }
                    else
                    {
                        StartUpManager.RemoveApplicationFromCurrentUserStartup();
                    }
                    break;

                case nameof(Settings.ComPort):
                    RaisePropertyChanged(() => TransferCanBeStarted);
                    RaisePropertyChanged(() => TransferCanNotBeStarted);
                    break;
                }
            };
        }