protected override void Dispose(bool disposing) { if (!is_open) { return; } is_open = false; stream.Close(); stream = null; }
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; }
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; }
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; }
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; }
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; } }; }