Python Example出现无法匹配给定参数报错
来源: | 作者:JYTEK | 发布时间: 2024-09-19 | 526 次浏览 | 分享到:

关键词:Python、pythonnet、Python for .NET、No method matches given arguments


1.问题描述

客户使用Python 3.9版本的解释器运行JY5500_V1.0.5_PythonExamples时,出现以下报错:

“No method matches given arguments for JY5500AITask.AddChannel”


2.问题原因

简仪产品Python驱动开发环境为pythonnet 2.5.3。客户使用的pythonnet 版本为3.0及以上。

出现此报错的原因为pythonnet 3.0及以上版本不再支持将整数隐式地转换为Enum类型,所以出现无法匹配给定的参数问题。


3.解决办法

由于pythonnet 3.0及以上版本不再支持将整数隐式地转换为Enum类型,需要将Python驱动中Enum的调用方式做修改,具体修改方式如下:

  • 以JY5500为例,运行JY5500AIContinuous.py范例,则需修改AITerminal及AIMode枚举,如图 3-1。

图 3-1 运行范例中需要修改的枚举


  • 在“C:UsersXXX(本机名称)AppDataLocalProgramsPythonPython36Libsite-packagesSeeSharpJYTEKHardwareDAQ(板卡类型)”路径下找到并打开JY5500.py。

  • 以修改AIMode枚举为例,在JY5500.py中找到JY5500_AIMode枚举位置,将整数替换成枚举名(对应项在枚举中的索引号),进行如图 3-2修改。

图 3-2 枚举修改


  • 对应项在枚举中的索引号查找方式:打开C#范例 JY5500_V4.1.5_Example,在AI Continuous范例中找到AIMode的枚举如图 3-3,也可右击JY5500AITask转到定义,可以看到AITask中所有的枚举类型,在所有类型中寻找所需类型,如图 3-4。

图 3-3 打开范例 找到需要修改的枚举



图 3-4 AITask所包含枚举

  • 将范例中用到的枚举进行上述修改,再运行JY5500AIContinuous.py范例,报错问题已解决,可正常使用。