Messaggi CAN da file di testo
Moderatore: ILVG mod
-
- Advertisement
3 messaggi
• Pagina 1 di 1
Messaggi CAN da file di testo
Buonasera.
Grazie anticipatamente per il servizio che offrite.
Ho il seguente problema.
Devo leggere un file .csv (con n righe) contenente un log di parametri CAN (rpm, temperatura motore, ecc.) e discriminarli sulla base del MsgID e del campo dati (8 byte), assegnandoli al rispettivo indicatore numerico, il quale dovrebbe poi variare in base al valore contenuto nel messaggio (riga).
Riesco a leggere il file mediante il VI Read From Spreadsheet File ma non so come discriminare i parametri presenti in ogni riga del file.
Spero di essere stato abbastanza chiaro.
Grazie ancora per la disponibilità e l'attenzione.
Cordiali saluti.
Grazie anticipatamente per il servizio che offrite.
Ho il seguente problema.
Devo leggere un file .csv (con n righe) contenente un log di parametri CAN (rpm, temperatura motore, ecc.) e discriminarli sulla base del MsgID e del campo dati (8 byte), assegnandoli al rispettivo indicatore numerico, il quale dovrebbe poi variare in base al valore contenuto nel messaggio (riga).
Riesco a leggere il file mediante il VI Read From Spreadsheet File ma non so come discriminare i parametri presenti in ogni riga del file.
Spero di essere stato abbastanza chiaro.
Grazie ancora per la disponibilità e l'attenzione.
Cordiali saluti.
- Darden
- Nuovo Utente
- Messaggi: 2
- Iscritto il: mer apr 01, 2020 10:23 am
Advertisement
Re: Messaggi CAN da file di testo
Se usi il read from spreadsheet vuol dire che in uscita avrai un array bidimensionale.
Da quel momento in poi devi usare i blocchetti di manipolazione degli array.
Uno di questi potrebbe essere "Index Array".
Questo blocchetto, se gli colleghi in ingresso un array 2D, ti permette di collegare l'indirizzo della riga e della colonna dell'elemento che vuoi ottenere.
Se colleghi solo l'indice della riga o solo quello della colonna, in uscita otterrai un array corrispondente a quella riga o quella colonna.
Utilizzando dei cicli FOR e dei blocchetti di manipolazione delle stringhe, puoi poi eventualmente stabilire quali righe o colonne vuoi prelevare.
Ti faccio un esempio:
Apri il file->array 2D
Estrai la prima riga (intestazioni)->array 1D
Ciclo FOR (oppure Search 1D)->Cerchi nella prima riga l'elemento che si chiama MsgID-> ottieni l'indice della colonna MsgID
Riprendi l'array 2D-> Estrai la colonna corrispondente al MsgID-> ottieni tutti i MsgID
Se fai la stessa cosa ma invece che MsgID cerchi il nome dle campo dati, poi lo unisci al precedente avrai il tuo array filtrato con solo le due colonne che ti interessano.
Se sai già a priori il numero della colonna, ti eviti la ricerca e ti limiti ad estrarre la colonna 1 e la colonna 2.
Questa cosa la puoi fare con un unico index array che è un blocchetto estensibile. basta trascinarlo verso il basso.
Otterrai cosi' i 2 array che poi con un build array puoi unire.
Stai attendo che quando fai il build array, unisce gli array 1D come righe. Quindi o suibito dopo fai un transpose 2D array, oppure anzichè il build array, usi un Insert into array.
Pe capire cosa fanno i vari blocchetti, premi ctrl+h e avrai un finestra che puntando il mouse sul blocchetto, ti da un help istantaneo.
Da quel momento in poi devi usare i blocchetti di manipolazione degli array.
Uno di questi potrebbe essere "Index Array".
Questo blocchetto, se gli colleghi in ingresso un array 2D, ti permette di collegare l'indirizzo della riga e della colonna dell'elemento che vuoi ottenere.
Se colleghi solo l'indice della riga o solo quello della colonna, in uscita otterrai un array corrispondente a quella riga o quella colonna.
Utilizzando dei cicli FOR e dei blocchetti di manipolazione delle stringhe, puoi poi eventualmente stabilire quali righe o colonne vuoi prelevare.
Ti faccio un esempio:
Apri il file->array 2D
Estrai la prima riga (intestazioni)->array 1D
Ciclo FOR (oppure Search 1D)->Cerchi nella prima riga l'elemento che si chiama MsgID-> ottieni l'indice della colonna MsgID
Riprendi l'array 2D-> Estrai la colonna corrispondente al MsgID-> ottieni tutti i MsgID
Se fai la stessa cosa ma invece che MsgID cerchi il nome dle campo dati, poi lo unisci al precedente avrai il tuo array filtrato con solo le due colonne che ti interessano.
Se sai già a priori il numero della colonna, ti eviti la ricerca e ti limiti ad estrarre la colonna 1 e la colonna 2.
Questa cosa la puoi fare con un unico index array che è un blocchetto estensibile. basta trascinarlo verso il basso.
Otterrai cosi' i 2 array che poi con un build array puoi unire.
Stai attendo che quando fai il build array, unisce gli array 1D come righe. Quindi o suibito dopo fai un transpose 2D array, oppure anzichè il build array, usi un Insert into array.
Pe capire cosa fanno i vari blocchetti, premi ctrl+h e avrai un finestra che puntando il mouse sul blocchetto, ti da un help istantaneo.
..ma ciao!


-
gepponline - Moderatore
- Messaggi: 2149
- Iscritto il: ven gen 28, 2005 11:27 am
- Località: Monticello Brianza
Re: Messaggi CAN da file di testo
Tutto chiaro.
Grazie.
Grazie.
- Darden
- Nuovo Utente
- Messaggi: 2
- Iscritto il: mer apr 01, 2020 10:23 am
3 messaggi
• Pagina 1 di 1
Chi c’è in linea
Visitano il forum: Nessuno e 1 ospite