Beispiel #1
0
        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();
        }
Beispiel #2
0
 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);
 }
Beispiel #3
0
        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));
                    }
                }
            }
        }