in data 02-07-2011 04:24 PM
Ciao,
ho la necessità di salvare tutti i dati acquisiti istantaneamente tramite una centralina meteo collegata tramite porta seriale (temp, umidità etc) in un file txt. In pratica devo creare un file nelle cui prime due righe appena si apre dev'esserci scritto temperatura, umidità etc (come intestazione) e poi una volta avviato il programma man a mano vengono salvati i valori nelle nello spazio sottostante. In allegato ho riportato un esempio di ciò che m serve. Potreste darmi 1 aiuto?
saluti Francesco
in data 02-08-2011 02:51 AM
Ciao,
se i tupi dati fossero solo numerici la cosa più semplice sarebbe usare il Write to Spreadsheet File, ma siccome tu mischi testo e dati numerici dovrai faticare un po' di più. Data la tua versione di LabView (7.1) credo che dovrai creare manualmente la riga di testo da scrivere sul file: il Format Into String è molto comodo perchè una volta che gli hai tirato i fili dei dati puoi aprire il pannello Edit Format String e c'è una procedura guidata per sistemare le cose nel modo che ti è più comodo. Più o meno devi operare così:
Naturalmente questo è solo il nucleo con dati di esempio: un'aggiunta necessaria è avere da qualche parte il nome del file da passare all'Open File (non vorrai mica tutte le volte andartelo a cercare su disco? 😞 lo potresti chiedere all'operatore all'inizio del programma e poi passarlo al vi che scriverà i dati su disco. E poi ovviamente devi gestire gli eventuali errori che potrebbero nascere sul disco.
in data 02-08-2011 01:50 PM
Ciao,
ho realizzato la VI, anche se nella versione 7.1 non sono riuscito a trovare la funzione (write to text file). Il Vi funziona, l'unico problema è che non mi scrive le righe successive, in altre parole mi scrive solo il primo set di misure;
devo salvare prima tutti i dati in una matrice? sono sulla strada giusta? (ho provato in vari modi ma cn scarsi risultati)
In allegato c'è il file.vi
grazie
Francesco
02-09-2011 03:05 AM - modificato 02-09-2011 03:06 AM
Bè, io non ho abbastanza memoria storica per ricordarmi se quel vi c'era o no se però nella palette file I/O non lo trovi allora il write characters to file va bene, solo che per separare il testo in righe devi aggiungere un CR+LF a fine stringa.
Per quanto riguarda il problema che dici, inizialmente pensavo che nel file trovassi solo l'ultimo set di dati: il write to characters infatti per default crea un nuovo file oppure sostituisce uno con lo stesso nome se esiste. Devi tirare una costante True al parametro Append to file per aggiungere ogni volta una riga nuova.
Credo però che un problema serio sia anche il visa close a fine lettura... dovresti spostarlo fuori dal loop, a fine programma.
Poi ci sono altre cose che potrebbero semplificare il codice:
in data 02-09-2011 04:58 AM
Ciao,
grazie ho risolto. Un'ultima domanda che funzione devo utilizzare per approssimare i valori memorizzati all'interno del file alla prima cifra decimale?
Francesco
in data 02-09-2011 06:33 AM
Bè, il "%.1f" dovrebbe fare proprio questo: lo stai già usando per tutte le misure tranne la pressione: non funziona?
PS anche la riga di intestazioni dovrebbe essere portata fuori dal loop, altrimenti te la ritrovi ad ogni registrazione!
in data 02-09-2011 12:03 PM
Ciao,
ho risolto tutto per ora, questo primo step è andato; a breve arriveranno i CET e dovrò acquisire altri dati tramite daq.
grazie
Francesco