Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

ringknob

Hola,

tengo la siguiente pregunta. Realicé un progama en el que utilizo un botón RING y un Control NUMERIC. Lo que tiene que hacer mi programa es que cuando muevo el botón RING, tiene que cambiar los valores del Control NUMERIC, y cuando cambio los valores en NUMERIC, tambien debe cambiar la posición del boton RING según el valor que reciba.

En el primer caso resulta todo bien, osea al mover el botón Ring, los valores de NUMERIC tambien cambian.

El segundo caso es el problema, cuando le doy algún valor manualmente ó cambio los valores de NUMERIC con sus respectivas flechas de subir ó bajar, el botón RING no cambia de posición, a pesar que sí toma los valores que asume de NUMERIC. Este es el código:

    if ((event == EVENT_VAL_CHANGED)&&(ON==1))

     {
        GetCtrlVal (panelHandle, PANEL_VOLTAGE2, &volt);
        SetCtrlVal (panelHandle, PANEL_RINGKNOB, volt);
     }

talvez alguien me pueda explicar de cómo resuelvo este problema.

Gracias de antemano por toda respuesta.

Saludos.

Abel

0 kudos
Mensaje 1 de 8
3.377 Vistas

Hola Abel,

el ring no puede tomar todos los valores del numeric, en efecto puede tomar sólo los valores que hayan sido cargados mediante la función Label/Value Pairs. En efecto, si escribes en el numeric uno de los valores exactos que aparecen en el ring, este debería cambiar; igualmente cambia si te pones en el numeric con un valor cercano a uno de ellos y actuas en las flechas hasta alcanzar el valor exacto.

 

Se podría obrar de tal manera que el ring tome el valor más cercano al del numeric: por ejemplo, si el ring asume valores 0 - 100 - 200... podrías poner en la callback del numeric esta línea:

SetCtrlVal (panel, PANEL_RING, RoundRealToNearestInteger (val / 100.0) * 100.0); de esta manera el ring siempre tomará la centena más cercana al valor del numeric (esto asume que ambos controles manejen valores double).

 

Mira al ejemplo que te pongo.

 

Saludos



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 kudos
Mensaje 2 de 8
3.370 Vistas

Hola Roberto,

gracias por la pronta respuesta.

Lo que no mencioné, es que cuando en el Control NUMERIC doy los valores manualmente y enseguida <RETURN>, en ese caso si cambia la posición del botón RING. Pero cuando utilizo las flechas, ahí no cambia nada. Algún colega me mencionó que el problema puede estar en los Eventos, osea que por ejemplo no debería llamar a este Evento: (event == EVENT_VAL_CHANGED) sinó a (event == EVENT_COMMIT).

Aqui te envío todo mi programa, para que lo veas.

Nuevamente gracias.

Abel

 

PS. no sé cómo se añade un archivo en este mensaje, por eso te envié mi programa directo a tu correo electrónico.

 

0 kudos
Mensaje 3 de 8
3.365 Vistas

Hola Abel,

cuando tratas con valores en doble precisión debes tener en cuenta la aprosimación que el sistema hace en tratarlos. En tu caso, por ejemplo, mientras que si escribes "6.4" el valor queda exacto, si bajas con las flechas desde 6.5 hasta 6.4 el valor que vas a leer podría ser 6.39999999974... asy que el pasar este valor al ring el proceso fallece.

He modificado tu función SetVoltagePS2 de esta manera:

 

        GetCtrlVal (panelHandle, PANEL_VOLTAGE2, &volt);
        SetCtrlVal (panelHandle, PANEL_NUMERIC, volt);
        volt = RoundRealToNearestInteger (volt * 100.0) / 100.0;
        err = SetCtrlVal (panelHandle, PANEL_RINGKNOB, volt);

 

logrando ver las variaciones en el ring control  mientras maniobras el numeric.

 

Por lo de añadir archivos, debes buscar la etiqueta "Añadir archivos adjuntos" debajo del campo de etiquetas y allí podrás añadir lo que quieras (hay un límite en el tipo de archivos que se pueden añadir: no todas las extensiones son aceptadas; mira en la ayuda en línea para un elenco de tipos de archivos aceptados).



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 kudos
Mensaje 4 de 8
3.362 Vistas

Hola Roberto,

ahora si funciona super bien. Lo único que me faltaría es la comunicación con el aparato de la foto a travez del GPIB, pero eso ya lo tengo listo; asi que gracias por tu ayuda.

Saludos.

Abel

0 kudos
Mensaje 5 de 8
3.357 Vistas

Hola Roberto,

algo que me olvidé preguntar; solo es una cuestión de estética: Me dí cuenta que cuando muevo un botón RING ó cuando me encuentro en el Control NUMERIC, estos siempre aparecen enmarcados con una línea negra. Me imagino que esto fué diseñado asi, para que uno sepa donde se encuentra en ese momento. Existe la posibilidad de volver ese marco en transparente?

Abel

0 kudos
Mensaje 6 de 8
3.356 Vistas
No sé de alguna manera de quitar el marco del control, pero sí puedo sugerirte un truco para evitar que sea visible. El marco aparece alrededor del control solamente si éste no tiene una etiqueta: si la tiene el marco queda alrededor de esta; así pues si le das una etiqueta cualquiera y esta la mueves fuera de la área visible del panel, no tendrás algun marco alrededor del control aunque éste sea activo. Guiño
Mensaje editado por Roberto Bozzolo


Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 kudos
Mensaje 7 de 8
3.353 Vistas

Hola Roberto,

no me arrepiento de haber preguntado, es justamente lo que quería. Muchas gracias.

Abel

0 kudos
Mensaje 8 de 8
3.350 Vistas