全局模块操作指南:变量、通信、光源与数据队列

摘要:本文通过 C# 示例详解 VM 平台 SDK 中全局模块的核心操作,涵盖全局变量、通信管理、光源控制和数据队列四大功能,助你高效管理自动化解决方案。


1. 全局变量管理

功能:跨流程共享数据
核心类GlobalVariableModuleTool
操作示例

// 获取全局变量对象
GlobalVariableModuleTool globalVar = (GlobalVariableModuleTool)VmSolution.Instance["全局变量1"];

// 设置变量值
globalVar.SetGlobalVar("var0", "20"); 

// 读取变量值
string value = globalVar.GetGlobalVar("var0"); 

2. 全局通信管理

功能:设备间数据交互
核心类CommManagerModuleTool
操作示例

CommManagerModuleTool commTool = (CommManagerModuleTool)VmSolution.Instance["通信管理1"];

// 发送字符串
commTool.SetString(0, "abcd"); 

// 发送整型数组
int[] data = { 10, 11, 12 };
commTool.SetInt(1, data, data.Length); 

// 读取二进制数据
byte[] receivedData = null;
commTool.GetReadData(2, ref receivedData);

3. 全局光源控制

功能:统一管理光源参数
核心类LightControlTool + GlobalLightParam
配置步骤

LightControlTool lightTool = (LightControlTool)VmSolution.Instance["全局光源1"];

// 配置光源参数
GlobalLightParam lightConfig = new GlobalLightParam {
    nDeviceIndex = 1,
    nDeviceType = (int)DeviceTypeEnum.TYPE_VC3000_GPIO,
    nTriggerTime = 100
};

// 设置通道1参数
lightConfig.stLightConfig.stChannel1 = new LightChannelConfig {
    nChannelIndex = 1,
    bChannelEnable = true,
    nLightBrightness = 150,
    nLightState = 1,
    nTriggerEdge = 1,
    nDurationTime = 10
};

// 应用配置(其他通道同理)
lightTool.SetGlobalLightParam(lightConfig);

4. 数据队列操作

功能:有序存储和检索数据
核心类DataQueueModuleTool
操作示例

DataQueueModuleTool dataTool = (DataQueueModuleTool)VmSolution.Instance["数据队列1"];

// 写入字符串数据
StringValue strData = new StringValue {
    nNum = 1,
    nIndex = 0,
    astValue = new StringInfo[256] { new StringInfo { strValue = "abcd" } }
};
dataTool.SetStringData(strData);

// 运行方案后读取数据
VmSolution.Instance.Run();
StringValue result = dataTool.GetStringData(0);

5. 异常处理

始终包裹 try-catch 捕获 SDK 异常:

try {
    // 所有操作代码
}
catch (VmException ex) {
    Console.WriteLine($"SDK异常: {ex.Message}");
}

关键注意事项
  1. 模块命名一致性
    VmSolution.Instance["模块名"] 中的名称必须与解决方案中配置的模块名称完全一致(区分大小写)。

  2. 光源通道配置

    • 需为每个通道单独设置 LightChannelConfig
    • bChannelEnable=true 启用通道
    • nDurationTime 单位默认为毫秒
  3. 数据队列时序
    调用 GetXxxData() 前需执行 VmSolution.Instance.Run() 确保数据就绪。

  4. 通信数据类型

    • SetString() 用于文本数据
    • SetInt() 传输数值数组
    • GetReadData() 获取原始字节流

总结:全局模块是自动化系统的中枢神经,通过统一管理变量、通信、硬件设备和数据流,显著提升系统可维护性和扩展性。合理使用这些功能可减少模块耦合,实现高效协同控制。

源码获取GitHub 示例仓库
官方文档VM Platform SDK Reference

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐