private void UpdateVariables() { // 扫描模式 SCAN_MODE mode = rbtnGalv.Checked ? SCAN_MODE.GALVANOMETER : SCAN_MODE.RESONANT; m_config.SetScanMode(mode); // 扫描策略 SCAN_STRATEGY strategy = ((KeyValuePair <SCAN_STRATEGY, string>)cbxScanStrategy.SelectedItem).Key; m_config.SetScanStartegy(strategy); // 振镜系统 SCAN_MIRROR_NUM mirrorNum = rbtnThree.Checked ? SCAN_MIRROR_NUM.THREEE : SCAN_MIRROR_NUM.TWO; m_config.SetScanMirrorNum(mirrorNum); // 采集模式 & 采集数量 SCAN_ACQUISITION_MODE acquisitionMode = ((KeyValuePair <SCAN_ACQUISITION_MODE, string>)cbxAcquisitionMode.SelectedItem).Key; m_config.SetScanAcquisitionMode(acquisitionMode); // 采集模式数量 int acquisitionModeNum = (int)cbxAcquisitionModeNum.SelectedItem; m_config.SetScanAcquisitionModeNum(acquisitionModeNum); // Dwell Time m_config.SetScanDwellTime(double.Parse(cbxDwellTime.SelectedItem.ToString())); // 扫描像素 int scanPixels = ((KeyValuePair <int, string>)cbxScanPixels.SelectedItem).Key; m_config.SetScanXPoints(scanPixels); m_config.SetScanYPoints(scanPixels); // 激光[通道]开关状态 LASER_CHAN_SWITCH status = chbx405.Checked ? LASER_CHAN_SWITCH.ON : LASER_CHAN_SWITCH.OFF; m_config.SetLaserSwitch(CHAN_ID.WAVELENGTH_405_NM, status); status = chbx488.Checked ? LASER_CHAN_SWITCH.ON : LASER_CHAN_SWITCH.OFF; m_config.SetLaserSwitch(CHAN_ID.WAVELENGTH_488_NM, status); status = chbx561.Checked ? LASER_CHAN_SWITCH.ON : LASER_CHAN_SWITCH.OFF; m_config.SetLaserSwitch(CHAN_ID.WAVELENGTH_561_NM, status); status = chbx640.Checked ? LASER_CHAN_SWITCH.ON : LASER_CHAN_SWITCH.OFF; m_config.SetLaserSwitch(CHAN_ID.WAVELENGTH_640_NM, status); m_params.Calculate(); }
public API_RETURN_CODE SetLaserSwitch(CHAN_ID id, LASER_CHAN_SWITCH status) { Logger.Info(string.Format("set laser swicth: [id:{0}], [status:{1}].", id, status)); GetLaserChannel(id).Status = status; return(API_RETURN_CODE.API_SUCCESS); }
private void UpdateLaserSwitch(CheckBox chbx, CHAN_ID id) { LASER_CHAN_SWITCH status = chbx.Checked ? LASER_CHAN_SWITCH.ON : LASER_CHAN_SWITCH.OFF; this.Cursor = System.Windows.Forms.Cursors.WaitCursor; // if task is not running, just update config if (m_scheduler.TaskScanning() == false) { chbx.Checked = !chbx.Checked; status = chbx.Checked ? LASER_CHAN_SWITCH.ON : LASER_CHAN_SWITCH.OFF; m_config.SetLaserSwitch(id, status); if (LaserDevice.IsConnected()) { if (status == LASER_CHAN_SWITCH.ON) { LaserDevice.OpenChannel(id); LaserDevice.SetChannelPower(id, m_config.GetLaserPower(id)); } else { LaserDevice.CloseChannel(id); } } this.Cursor = System.Windows.Forms.Cursors.Default; return; } // task is already running if (status == LASER_CHAN_SWITCH.OFF) // 激光当前是OFF状态 { m_scheduler.StopScanTask(m_scheduler.GetScanningTask()); // 先停止扫描 chbx.Checked = true; // 再更新配置,并打开激光,设置激光功率 m_config.SetLaserSwitch(id, LASER_CHAN_SWITCH.ON); if (LaserDevice.IsConnected()) { LaserDevice.OpenChannel(id); LaserDevice.SetChannelPower(id, m_config.GetLaserPower(id)); } m_scheduler.CreateScanTask(0, "实时扫描", out ScanTask scanTask); // 创建Task,并启动 API_RETURN_CODE code = m_scheduler.StartScanTask(scanTask); this.Cursor = System.Windows.Forms.Cursors.Default; if (code != API_RETURN_CODE.API_SUCCESS) { MessageBox.Show(string.Format("启动扫描任务失败,失败码: [0x{0}][{1}].", ((int)code).ToString("X"), code)); } } else { // 激光当前是ON状态 if (m_config.GetActivatedChannelNum() == 1) // 该路激光是扫描状态下唯一开启的激光 { this.Cursor = System.Windows.Forms.Cursors.Default; return; // 作为扫描状态下唯一开启的激光,不允许关闭,直接返回 } else { m_scheduler.StopScanTask(m_scheduler.GetScanningTask()); // 先停止扫描 chbx.Checked = false; // 再更新配置,并关闭激光 m_config.SetLaserSwitch(id, LASER_CHAN_SWITCH.OFF); if (LaserDevice.IsConnected()) { LaserDevice.CloseChannel(id); } m_scheduler.CreateScanTask(0, "实时扫描", out ScanTask scanTask); // 创建Task,并启动 API_RETURN_CODE code = m_scheduler.StartScanTask(scanTask); this.Cursor = System.Windows.Forms.Cursors.Default; if (code != API_RETURN_CODE.API_SUCCESS) { MessageBox.Show(string.Format("启动扫描任务失败,失败码: [0x{0}][{1}].", ((int)code).ToString("X"), code)); } } } }