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); }
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); }