Ejecute de forma remota el script JSL con parámetrosHola,
Actualmente tenemos un script JMP que ejecutamos para el análisis/informe de datos. Me gustaría activar este script al final de la adquisición de datos (LabVIEW a través de ActiveX). Localicé la función RunJSLFile pero solo tiene la ruta del archivo como entrada.
¿Cómo puedo implementar pasar un parámetro a JMP para usar en el script (una cadena que identifica el número de pieza)? ¿Necesito usar RunCommand para crear una variable global que luego utilice el script? Si es así, ¿cómo sería el comando?
Gracias.
Re: Ejecutar secuencia de comandos JSL de forma remota con parámetrosPD: si tiene acceso a RunCommand desde labview/ActiveX, puede omitir el archivo vbs por completo y poner ese código en su aplicación existente.
Re: Ejecutar secuencia de comandos JSL de forma remota con parámetrosTu pregunta tiene un par de dimensiones.El primero es el problema de iniciar JMP de forma remota, el segundo es un problema legal.Hay formas de iniciar una sesión JMP en una computadora remota.La mayor parte de eso sería manejado por la funcionalidad del sistema operativo y su relación con el programa de aplicación que ha escrito.
La segunda, es una cuestión de licencias. Debe asegurarse de que cada persona que ejecuta esta sesión remota de JMP esté cubierta por su acuerdo de licencia para obtener autorización/licencia para ejecutar JMP.
Re: Ejecutar secuencia de comandos JSL de forma remota con parámetrosSí, hay documentación sobre la automatización OLE y he leído la mayor parte.Si bien es útil, para tareas generales, como iniciar un archivo .jmp, parece insuficiente con respecto a las amplias posibilidades de interactuar con otros programas.¿Hay documentación más detallada en alguna parte?
Por ejemplo, ¿puedo ejecutar de forma remota un script JMP desde una computadora (que no tiene JMP instalado) a través del acceso a la red a una computadora que tiene JMP instalado?¿O necesita algunos archivos que son parte de la instalación de JMP (como jmp.tlb)?
Re: Ejecutar secuencia de comandos JSL de forma remota con parámetroshttp://www.jmp.com/support/help/OLE_Automation.shtml tiene documentaciónRe: Ejecutar secuencia de comandos JSL de forma remota con parámetrosPuede incluir una función 'principal' en su secuencia de comandos JSL, incluirla en una sesión JMP llamada por un vbscript y luego llamar a la función principal en su secuencia de comandos con argumentos.Aquí hay un ejemplo:
archivo .vbs:
'Create the JMP application object
set jmp = Wscript.CreateObject("JMP.Application")
'read the existing jsl script
jmp.RunCommand("include( ""C:/ScriptWithParam.jsl"" );")
'set parameter values
param1 = "some value"
'Run a function inside the script
jmp.RunCommand("MakeTable( """ & param1 & """ );")
Archivo JSL:
MakeTable = function({param1 = "2"},
result = 1;
colvalues = {"Your value was",Char(param1)};
colvalues = Eval List(colvalues);
New Table( "test",
Add Rows( 2 ),
New Column( "Column 1",
Character,
"Nominal",
Set Values( colvalues )
)
);
show(param1);
result = 0;
Return(result);
);Re: Ejecutar secuencia de comandos JSL de forma remota con parámetrosEsto parece un enfoque viable y funcionaría muy bien para las tablas que contienen datos para analizar. Esta aplicación es ligeramente diferente ya que procesamos datos que se almacenan fuera de JMP (base de datos SQL). Podría crear una tabla para contener el script (esencialmente un contenedor), pero creo que debería haber un mejor enfoque para esta aplicación.
El script en cuestión NO está contenido en una tabla actualmente. Es un archivo independiente *.jsl que contiene funciones escritas personalizadas para cargar datos de varias consultas SQL, generar múltiples tablas y gráficos y luego recopilar los gráficos en un diario.
si hago jmp.RunCommand("ID = "12345";") , esto creará una variable global que el script pueda ver... ejecutar a través de
jmp.RunJSLFile("") que utiliza ::ID dentro de varias funciones?
Re: Ejecutar secuencia de comandos JSL de forma remota con parámetrosEstoy seguro de que alguien más puede hacer esto de manera más elegante, pero aquí hay un método que usa vbscript.
Pegue esto en un archivo .vbs en una computadora con Windows.
'Create the JMP application object
set jmp = Wscript.CreateObject("JMP.Application")
'Open a data table that already contains your script
set jmpdoc = jmp.OpenDocument("C:/test.jmp")
'Make it visible for demo
jmpdoc.Visible = True
'Set a table variable to be your 'parameter'
jmp.RunCommand("current data table() << Set Table Variable( ""input"", 20); ")
'Run the script
jmp.RunCommand("eval(Current Data Table() << Get Table Property( ""add Column"" ));")
Luego haga una tabla de datos llamada test.jmp en su unidad C con un script guardado llamado "agregar columna" que contenga esto:
dt = current data table();
val = dt << Get Table Variable("input");
New Column( "Column 2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Values( {val, val, val} )
);
Haga doble clic en el archivo vbs y debería ver una nueva columna con tres filas establecidas en 20.