Discusiones sobre Productos NI

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

Medias y almacenamiento en archivos

Alguien me puede echar una mano, ando bastante perdida. He probado a correr los bucles en paralelo, a sacar la lectura de datos fuera, crear un array con las medias de los minutos.. pero no consigo que funcione.

 

Adjunto el trabajo que he realizado para la adquisición de datos cada minuto.

Gracias. 

0 kudos
Mensaje 21 de 40
1.925 Vistas

Tengo un programa que funciona del modo"multiagente". Cada agente realiza diferentes funciones independientes.

En el caso que te adjunto hay un agente que, entre otras cosas, se encarga de actualizar la ruta (path) donde se grabarán diferentes datos. Concretamente al cambio de dia ( new path.jpg).

Otro agente incorpora un subinstrumento (save.vi) que permite cerrar el fichero y abrir uno nuevo cuando se detecta un path diferente.

La comparación entre los dos "paths" la realizamos medianto shift registers (new file.jpg).

 

Esta es la manera que tengo de crear nuevos ficheros de forma automatica cada dia. En tu caso, si quieres crear ficheros cada hora puedes implementarlo al cambio de hora, etc...

 

Espero que te sirva de ayuda.

 

 

Vicen

 

LV 7.1/WinXP

Descargar todos
Mensaje 22 de 40
1.918 Vistas

Hola Vicens, gracias por la ayuda.

 

Mi problema no viene a la hora de crear los ficheros, sino a la hora de crear los datos que voy a guardar en esos ficheros. Me explico:

 

Ahora mismo tengo una aplicación que lee datos cada segundos de un puerto rs-232. Cada minuto realiza la media del array que contiene esos datos y esa media la guarda en un archivo de texto.

 

Mi problema viene, a que necesitaria realizar esa misma función para cada 10 minutos, cada hora.. La primera idea que se me ocurrió era realizar bucles en paralelo, es decir, lo mismo que he explicado arriba pero en vez de para cada minuto para cada 10 minutos por ejemplo. Pero no sé si es porque ambos bucles leen del mismo puerto que termina por quedarse colgada la aplicación o no funcionar directamente.

 

La otra idea que probé fue una vez calculado el valor de cada minuto, quedarme con ese valor y hacer un bucle para los 10 minutos por ejemplo, pero eso hace que al estar en linea cuando entra en el bucle de los 10 minutos, el bucle anterior se queda parado hasta que termine.. por lo cual tampoco me sirve.

 

Aqui es mi problema, que no sé realmente como plantearlo.

 

Un saludo y gracias. 

0 kudos
Mensaje 23 de 40
1.914 Vistas

Adjunto ajemplo, a ver si te inspira alguna cosa.

 

 

Vicen

 

LV7.1/WinXP

 

Mensaje editado por vicens
Mensaje 24 de 40
1.907 Vistas

Hola,

 

muchas gracias Vicens pero sigo igual de perdida, esto de que no funcionen bien los bucles en paralelo me ha descolocado totalmente y no se me ocurre otra forma de poder realizarlo. 

0 kudos
Mensaje 25 de 40
1.889 Vistas

¿La lectura del rs232 la haces continuadamente, o solo quieres leer el puerto cada 10 min?

 

Mensaje 26 de 40
1.886 Vistas

Hola, 

La lectura tiene que ser continua. Ahora mismo el funcionamiento es el siguiente: hago 60 lecturas en un minuto que almaceno en un array, y cada minuto realizo la media de los elementos de este array y esta es la que almaceno en un archivo. Para las otras opciones que tengo que realizar, tendría que ser algo similar.. realizar X lecturas y pasado ese tiempo (por ejemplo en un caso 10 minutos) hacer la media de esos 10 minutos y esa almacenarla en un archivo.

Te adjunto una captura de imagen de mi proceso de lectura, por si se te ocurre algo. 

 

Un saludo y gracias. 

0 kudos
Mensaje 27 de 40
1.879 Vistas

Hola,

aqui sigo atascada con mi aplicación, he estado realizando diferentes pruebas y me ha surgido la siguiente pregunta ¿es imposible realizar varios bucles en paralelo que realicen operaciones de lectura de un puerto rs-232? En las pruebas que he realizado, la aplicación funciona bien (o eso parece) si solo tengo los dos primeros bucles, pero si añado más, termina por ejecutar solo algunos bucles (en cada ejecución se comporta de forma diferente) y los que se ejecutan se van quedando parados, trabajando con retraso.

 

Adjunto el vi por si alguien puede echarle un vistazo y decirme donde está el fallo o como lo puedo realizar de otra forma. Gracias.

 

 

0 kudos
Mensaje 28 de 40
1.852 Vistas

Hola vista,

 

Me he leido tus posts y creo que uno de los problemas principales a la mayoria de tus problemas es que estas programando un while dentro de otro while dentro de otro while !

 

Yo haría "máquinas de estados".

 

Te adjunto una imagen de cómo sería un prototipo de tu código con máquinas de estados. La de arriba es la principal y controla el flujo de programa. La estruc tura es un case dentro de un while con un sistema de colas. El while se ejecuta siempre, pero el case se ejecuta sólo si existe algo en la cola ( o sea la máquina de arriba controla la de abajo, cuando insertas algun valor en su cola.

En la máquina de arriba realizaría el contador (un estado que se repite siempre que va contando segundos .... cada 60 tengo que hacer esto ... etc ... y lo hago en la máquina de estados de abajo, de mientras sigo contando.

 

Luego el problema que tienes  con que el puerto visa solo funciona dentro del del case es porque al sacarlo fuera tienes que usar el "shift register", es cómo una continuación del código que existe.. lo de la derecha es justo lo que tengo en la izquierda a la siguiente iteración del while.

 

Otra cosa que te aconsejo es que para llenar el array utilizes un contados (con otro shift register) en lugar de el contador que existe en el while... El motivo es que, imaginate que de golpe le metes 10 valores al array ... por lo que su índice de array sería el 11. A la siguiente iteración (la 2) si coges el índice del while la empiezas a escribir en la posición dos del array y no la 11 (en el ejemplo le he puesto un +1, pero puedo ser un + algo que lo puedes hacer de manera automatica).

 

espero que de algo te sirva,

 

PD, hace poco metí por el foro un contador que contaba horas realizado con la estructura máquina de estados.

 

suerte  

Mensaje 29 de 40
1.843 Vistas

Hola Vista22,

 

me parece que podemos entendernos. Hace algún tiempo hice algo parecido. Pásame lo último que tengas hecho y lo miro a ver si encuentro el fallo. 

 

Saludos y suerte. 

 

Por cierto, me ayudaron mucho los tutoriales que encontré por internet. Te recomiendo una busqueda exaustiva y hacer un par de ellos. Si le das fuerte no tardarás más de 2 días.

 

Bye!!

Mensaje 30 de 40
1.839 Vistas