C#+VisionMaster联合开发(一)_操作方案

1、加载方案(下文中的VmSolutionMain即为VmSolution.Instance)

// 加载方案 - 模块方案加载进度
VmSolution.Load(solutionFilePath, solutionPwd, isSilentExecute);  // 方案路径,文件密码,静默运行
VmSolutionMain = VmSolution.Instance;  // 临时保存,下文中的VmSolutionMain即为VmSolution.Instance

// GetVmException(Exception ex)  // 获取VM内部异常,用于规范抛出去的异常
VmSolution.OnCameraCollectCallBackEvent += VmSolution_OnCameraCollectCallBackEvent;  // 相机取图结束信息回调,可用来获取图片啥的(VM4.3)
VmSolution.OnProcessStatusStartEvent += VmSolution_OnProcessStatusStartEvent;        // 流程连续执行开始时 执行,单次执行时不执行(VM4.3)
VmSolution.OnProcessStatusStopEvent += VmSolution_OnProcessStatusStopEvent;          // 流程单次执行/连续执行结束时的事件(VM4.3)

2、获取方案路径

string vmSolutionFilePath = VmSolutionMain.SolutionPath;

3、获取方案版本号

string vmSolutionVersion = VmSolutionMain.GetSolutionVersion(solutionFilePath, solutionPwd);

4、获取方案中的流程列表

// 加载流程列表
ProcessInfoList processInfoList = VmSolutionMain.GetAllProcedureList();
if (processInfoList.nNum > 0)
{
    var processNames = processInfoList.astProcessInfo.ToList().Where(a => !string.IsNullOrEmpty(a.strProcessName)).Select(a => a.strProcessName).ToList();
}

5、获取方案中的模块列表

// 加载模块列表
ModuleInfoList moduleInfoList = VmSolutionMain.GetAllModuleList();
if (moduleInfoList.nNum > 0)
{
    List<string> vmModuleNames = moduleInfoList.astModuleInfo.Where(a => !string.IsNullOrEmpty(a.strDisplayName)).Select(a => a.strDisplayName).ToList();
}

6、执行方案

VmSolutionMain.Run();  // Run 或 SyncRun

7、获取方案运行状态

bool isRunning = VmSolutionMain.IsRunning;
ShowLog($"获取方案状态’执行完成!方案当前状态为:{isRunning}");

8、保存方案

string saveResult = VmSolution.Save();

9、方案另存为

string saveAsResult = VmSolution.SaveAs(filePath, solutionPwd);  // 文件路径,文件密码

10、关闭方案

VmSolutionMain.CloseSolution();  // 1、关闭前先判断VmSolutionMain是不是null;2、这个方法性能差还有时会卡住

11、释放方案资源

VmSolutionMain.Dispose();  // 1、释放前先判断VmSolutionMain是不是null;2、这个方法性能差还有时会卡住

12、获取VM的CPU、内存、网络使用率、加密狗状态

string cpuRate = "CPU占用率:" + VmSolution.CPUUsed.ToString();         // 
string memoryRate = "内存使用率:" + VmSolution.MemeryUsed.ToString();  // 
string networkRate = "网络使用率:" + VmSolution.NetUsed.ToString();    // 
//string dogStatus = "加密狗:" + VmSolution.StrDogState;            // 加密狗状态,我没获取到
string dogStatus = "加密狗:" + VmSolution.DogState;                 // 加密狗状态,我没获取到

 

posted @ 2025-12-14 17:31  ꧁执笔小白꧂  阅读(10)  评论(0)    收藏  举报