OPC UA动态客户端自定义方法输入参数的检测与类型转换需求
问题描述
调用OPC UA方法的格式为node.call_method('method_name', *args),协议要求必须将args转换为对应的数据类型。对于自定义类型,需要从ua模块中获取对应类型并构造实例,例如:ua._DB_Com_In_(ID=99, Value1=100, Value2=199)。
但作为交互式/动态客户端,无法提前知晓方法所需的参数数据类型,期望实现如下功能:
args = cast_for_method('method_name', [{'ID': 99, 'Value1': 100, 'Value2': 199}, 10]) result = node.call_method('method_name', *args)
已尝试方案
- 尝试从目标方法的
0:InputArguments变量中读取参数类型(该变量用于存储方法的参数定义) - 调用过
read_data_type()、read_data_type_as_variant_type()方法,其中read_data_type_as_variant_type()理论上应返回正确的类型,但对方法对象调用时无效,会返回所有已定义的类型 read_data_value()、read_type_definition()和read_value()看起来具备获取类型的潜力,但目前尚未成功实现预期效果- 已知
read_data_type_as_variant_type()通常可以正确返回数据类型,正在寻找可调用该方法的合适对象以获取目标方法的参数类型
内容的提问来源于stack exchange,提问作者sebastianpfischer
相关产品推荐
相关产品推荐

