es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Controlando VI dentro de Project desde Python a través de COM/ActiveX

Desde NI-Site:

labview = win32com.client.Dispatch("Labview.Application")
VI = labview.getvireference(r'c:\TEMP\ctrl\ctrl.vi')
print(f'Nombre: {VI.Name}')
print(VI.getcontrolvalue('main'))

Esto funciona perfectamente siempre y cuando mi VI no esté dentro de un proyecto. Sin embargo, tengo un VI en ejecución dentro de un proyecto y quiero leer/escribir valores de control desde python. No hay errores, pero python lee/escribe en una instanciación separada del VI que está fuera del proyecto. ¿Puedo modificar la ruta del VI para que python acceda a la instancia dentro del proyecto?

Cómo reproducir:
1. Script de Python

```python
from icecream import ic
import win32com.client
import time
import numpy as np

class LabView():
    def __init__(self,vi):
        self.LabVIEW    = win32com.client.Dispatch("Labview.Application")
        self.VI         = self.LabVIEW.getvireference(vi)
    def set_potential(self,potential):
        ic(potential)
        self.VI.SetControlValue("Set Potential",potential)  


vi = r'C:\path...\testProject\test.vi'
lab = LabView(vi)


while True:
    lab.set_potential(np.random.uniform(-2,2))
    time.sleep(3)
  1. Colocar VI dentro del proyecto

  2. Abrir y ejecutar VI fuera del proyecto y empezar script python -> funciona

  3. Abra y ejecute VI desde el explorador de proyectos y ejecute el script python -> no funciona
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución

    Para leer/escribir valores de control en un VI dentro de un proyecto LabVIEW usando Python, es necesario modificar la ruta hacia el VI en el script de Python.

    La ruta hacia el VI debe incluir la ruta del proyecto, no solo la ruta del VI. En lugar de:

    vi = r'C:\ruta...\proyectoPrueba\prueba.vi'
    

    Debe utilizarse:

    vi = r'C:\ruta...\proyectoPrueba\prueba.lvproj\prueba.vi'
    

    De esta manera, LabVIEW abrirá el VI dentro del proyecto y se podrá leer/escribir los valores de control correctamente.

    Una vez realizada esta modificación, vuelva a ejecutar su script de Python y abra y ejecute el VI desde el Explorador de proyectos. En esta ocasión, Python debería ser capaz de leer/escribir los valores de control en la instancia correcta del VI.

Comments are closed.