首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过COM/ActiveX从Python控制项目中的VI

通过COM/ActiveX从Python控制项目中的VI
EN

Stack Overflow用户
提问于 2021-11-25 15:53:43
回答 2查看 333关注 0票数 0

来自NI-站点:

代码语言:javascript
运行
复制
labview = win32com.client.Dispatch("Labview.Application")
VI = labview.getvireference(r'c:\TEMP\ctrl\ctrl.vi')
print(f'Name: {VI.Name}')
print(VI.getcontrolvalue('main'))

只要我的虚拟仪器不在一个项目中,这是非常好的工作。但是,我在一个项目中有一个正在运行的VI,并且希望从python中读取/写入控件值。没有错误,但是python读取/写到项目之外的VI的单独实例。我是否可以修改VI的路径,以便python访问项目中的实例?

如何复制:

  1. Python脚本 从icecream导入import win32com.client导入时间为np类LabView():def __init__(self,vi):self.LabVIEW =self.LabVIEW.getvireference self.VI = self.LabVIEW.getvireference(vi) def set_potential(self,势能):ic (势)self.VI.SetControlValue(“集势”),) vi =r‘C:\path.\testProject\test.vi’lab = LabView(vi),而True: lab.set_potential(-2,2) time.sleep(3)
  2. 项目内部第六处
  3. 在项目之外打开并运行VI并启动python脚本->工作
  4. 从打开并运行VI并启动python脚本->无法工作
EN

回答 2

Stack Overflow用户

发布于 2021-12-29 20:35:26

您可能会考虑构建一个vi,您可以通过工具调用它(目前只有窗口),然后通过python的命令行进行接口。

票数 0
EN

Stack Overflow用户

发布于 2022-03-01 17:48:05

这应该能让你对如何做这件事有一些想法。我在这件事上很成功。您必须使用OpenProject active x方法获得对项目的引用,然后使用project.Application在项目上下文中获得对应用程序的引用。从那时起,它的工作方式类似于与非项目VI的通信,即用proj.Application替换proj.Application引用

代码语言:javascript
运行
复制
class LabView():
    def __init__(self,project_path=''): #vi path 
        self.LabVIEW_Top    = win32com.client.Dispatch("Labview.Application")
        self.LabVIEW=self.LabVIEW_Top #init as if there is no project
        if project_path !='' :# project path was provided
            self.LabVIEW_Top._FlagAsMethod('OpenProject')
            proj=self.LabVIEW_Top.OpenProject(project_path)
            self.LabVIEW=proj.Application #over ride to project application
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70114011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档