コード例 #1
0
ファイル: Scheduler.cs プロジェクト: letheascetic/confocal
        public API_RETURN_CODE StartScanTask(ScanTask scanTask)
        {
            if (scanTask == null)
            {
                return(API_RETURN_CODE.API_FAILED_SCAN_TASK_INVALID);
            }

            if (FindScanTask(scanTask.TaskId) == null)
            {
                return(API_RETURN_CODE.API_FAILED_SCAN_TASK_NOT_FOUND);
            }

            m_params.Calculate();                       // 计算参数
            m_params.GenerateColorMapping();            //
            m_params.GenerateAiChannelIndex();          // 计算使用PMT的情况下各个AI通道采集数据对应的Index
            m_waver.Generate();                         // 计算AO输出波形和触发信号
            scanTask.Config();                          // 配置扫描任务

            API_RETURN_CODE code = m_card.Start();      // 启动板卡

            if (code != API_RETURN_CODE.API_SUCCESS)
            {
                Logger.Info(string.Format("start scan task[{0}|{1}] failed: [{2}].", scanTask.TaskId, scanTask.TaskName, code));
                StopScanTask(scanTask);
                return(code);
            }

            scanTask.Start();                           // 启动扫描任务
            m_scanningTask = scanTask;

            if (ScanTaskStarted != null)
            {
                ScanTaskStarted.Invoke(scanTask, null);
            }

            Logger.Info(string.Format("start scan task[{0}|{1}] success.", scanTask.TaskId, scanTask.TaskName));
            return(code);
        }
コード例 #2
0
ファイル: Scheduler.cs プロジェクト: letheascetic/confocal
        public API_RETURN_CODE StopScanTask(ScanTask scanTask)
        {
            if (scanTask == null)
            {
                return(API_RETURN_CODE.API_FAILED_SCAN_TASK_INVALID);
            }

            if (FindScanTask(scanTask.TaskId) == null)
            {
                return(API_RETURN_CODE.API_FAILED_SCAN_TASK_NOT_FOUND);
            }

            m_card.Stop();
            scanTask.Stop();
            m_scanningTask = null;

            if (ScanTaskStopped != null)
            {
                ScanTaskStopped.Invoke(scanTask, null);
            }

            Logger.Info(string.Format("stop scan task[{0}|{1}].", scanTask.TaskId, scanTask.TaskName));
            return(API_RETURN_CODE.API_SUCCESS);
        }