首页 > 解决方案 > 从 python 控制 LabVIEW 前面板返回 typeerror nonetype object is not callable

问题描述

使用下面的代码,其中 vi_path 是 .vi 文件路径,control_name 和 ind_name 是控件名称和指标名称字符串

labview = win32com.client.Dispatch("Labview.Application")
VI = labview.getvireference(vi_path)
print(f'Name: {VI.Name}')
VI.setcontrolvalue(control_name,f) # this works to set float values
s=(VI.getcontrolvalue(ind_name))

工作正常。但

VI.Run() #async = False 默认即等待 exec 完成

正在创建 TypeError:NoneType object is not callable 错误

标签: pythonwin32comlabview

解决方案


在使用 VI.Run() 之前,在其他地方的代码示例中看到此行添加了 VI._FlagAsMethod('Run') 这解决了问题。显然 LabVIEW 中的一些活动 x 方法没有被正确识别 - 奇怪,因为 getcontrolvalue 和 setcontrolvalue 方法不需要标记为方法,但 Run 方法需要。无论如何,建议在使用任何生成此 TypeError Nonetype object not callable 错误的方法之前使用 _FlagAsMethod。


推荐阅读