/// <summary> /// Contructor of the main form /// </summary> public Form1() { InitializeComponent(); SdkInfoStruct sdkInfo = SeekwareDevice.GetSdkInfo(); sdkVersionTextBox.Text = string.Format("{0}.{1}", sdkInfo.sdk_version_major, sdkInfo.sdk_version_minor); // populate device list combo box mSeekDeviceList = SeekwareDevice.GetDeviceList(); foreach (var dev in mSeekDeviceList) { selectCameraComboBox.Items.Add(dev.SerialNumber); } // populate temperature units combo box tempUnitsComboBox.DataSource = Enum.GetValues(typeof(SeekwareDevice.SwTemperatureUnits)); tempUnitsComboBox.SelectedItem = SeekwareDevice.SwTemperatureUnits.Celsius; // populate the display lut lutComboBox.DataSource = Enum.GetValues(typeof(SeekwareDevice.SwDisplayLut)); lutComboBox.SelectedItem = SeekwareDevice.SwDisplayLut.Spectra; // set the initial state and start the find devices timer State = ControlStates.Closed; findDevicesTimer.Enabled = true; }
/// <summary> /// Open a SeekwareDevice. /// </summary> /// <param name="seekDev"></param> private void Open(SeekwareDevice seekDev) { if (seekDev.Open()) { // setup device whith current settings seekDev.TemperatureUnits = (SeekwareDevice.SwTemperatureUnits)tempUnitsComboBox.SelectedItem; seekDev.DisplayLUT = (SeekwareDevice.SwDisplayLut)lutComboBox.SelectedItem; // get info from device and fill in form items mImageSize = new Size(seekDev.ImageWidth, seekDev.ImageHeight); serialNumberTextBox.Text = seekDev.SerialNumber; firmwareVersionTextBox.Text = seekDev.FirmwareVersion; frameDimTextBox.Text = string.Format("Width={0}, Height={1}", mImageSize.Width, mImageSize.Height); errorToolStripStatusLabel.Text = "Open"; // set state this.BeginInvoke(new Action(() => State = ControlStates.OpenStopped)); } else { // Open failed, clear form data serialNumberTextBox.Text = string.Empty; firmwareVersionTextBox.Text = string.Empty; frameDimTextBox.Text = string.Empty; errorToolStripStatusLabel.Text = "Open Failed"; // set state this.BeginInvoke(new Action(() => State = ControlStates.Closed)); } }
/// <summary> /// Get connected SeewareDevice list on the timer tick /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void findDevicesTimer_Tick(object sender, EventArgs e) { findDevicesTimer.Enabled = false; // gets a list of attached devices List <SeekwareDevice> newDevices = SeekwareDevice.GetDeviceList(); List <SeekwareDevice> addedDevices = new List <SeekwareDevice>(); List <SeekwareDevice> removedDevices = new List <SeekwareDevice>(); lock (mDeviceListLockObject) { // make a list of new devices that are not in our current list foreach (var dev in newDevices) { if (mSeekDeviceList.FindIndex(x => x.SerialNumber == dev.SerialNumber) < 0) { addedDevices.Add(dev); } } // make a list of devices that have been removed from our current list foreach (var dev in mSeekDeviceList) { if (newDevices.FindIndex(x => x.SerialNumber == dev.SerialNumber) < 0) { removedDevices.Add(dev); } } // add any new devices to the mSeekDeviceList and the device combobox foreach (var dev in addedDevices) { mSeekDeviceList.Add(dev); selectCameraComboBox.Items.Add(dev.SerialNumber); } // remove any devices that are no longer attached from the mSeekDeviceList and the device combobox foreach (var remove in removedDevices) { if (mActiveDevice != null && mActiveDevice.SerialNumber == remove.SerialNumber) { if (mActiveDevice.IsOpen) { Close(mActiveDevice); } } mSeekDeviceList.Remove(remove); selectCameraComboBox.Items.Remove(remove.SerialNumber); } } findDevicesTimer.Enabled = true; }
/// <summary> /// Close a SeekwareDevice /// </summary> /// <param name="seekDev"></param> private void Close(SeekwareDevice seekDev) { if (seekDev.IsOpen) { StopLiveCapture(); seekDev.Close(); } // clear form data serialNumberTextBox.Text = string.Empty; firmwareVersionTextBox.Text = string.Empty; frameDimTextBox.Text = string.Empty; errorToolStripStatusLabel.Text = "Closed"; // set state this.BeginInvoke(new Action(() => State = ControlStates.Closed)); }
/// <summary> /// Opens the SeekwareDevice selected by the combo box. If a device is already open then close it first /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void selectCameraComboBox_SelectedIndexChanged(object sender, EventArgs e) { // if a device is currently selected, close it first lock (mDeviceListLockObject) { if (mActiveDevice != null) { Close(mActiveDevice); } if (selectCameraComboBox.SelectedIndex < mSeekDeviceList.Count) { // find the device in the deviceList that matches the serial number of the selected item from the combo box mActiveDevice = mSeekDeviceList.Where(x => x.SerialNumber == (string)selectCameraComboBox.SelectedItem).FirstOrDefault(); // open the device if dound if (mActiveDevice != null) { Open(mActiveDevice); } } } }