in data 05-20-2014 10:01 AM
Ciao a tutti ragazzi,
Ho un dispositivo collegato alla porta seriale che trasmette i dati in modo continuo da cui devo leggere 6 byte in questo formato:
STX n1 n2 n3 n4 n5
STX (Start stringa) 0xFF.
Il problema è che il dispositivo mi manda i dati in modo continuo quindi quando con il visa vado a leggere il buffer l'ordine degli elementi raramente è ordinato!
Chi sà consigliarmi una soluzione?
Grazie in anticipo a tutti quanti!
Tiziano
Risolto Andare alla soluzione.
in data 05-20-2014 11:39 AM
in data 05-20-2014 11:49 AM
Grazie per la risposta Roberto,
si in effetti ci avevo pensato.. ho anche impostato nella configurazione come terminatore di stringa 0xFF ma ricevevo successivamente un errore dal reader visa.
In che modo il terminatore agisce nella comunicazione?
E successivamente il terminatore viene incluso in lettura? e se si in prima o ultima posizione?
Comunque saresti così gentile da allegarmi un piccolo sceenshot su come imposteresti il tutto?
Saluti, Tiziano.
05-20-2014 04:58 PM - modificato 05-20-2014 05:03 PM
Stiamo parlando di LabVIEW, vero?
Avevi abilitato il termination character?
Prova a dare un'occhiata a questo documento.
in data 05-20-2014 05:45 PM
Si Roberto si tratta di labview e il campo è abilitato.
Diciamo che secondo quello che mi stai dicendo una cosa del genere potrebbe andare bene?
Grazie per l'aiuto!
Tiziano.
05-21-2014 01:55 AM - modificato 05-21-2014 02:02 AM
Io toglierei il bytes at port: se hai sicuramente il terminatore non hai bisogno di dire quanto leggere; piuttosto cabla una costante pari al numero totale di caratteri fra due terminatori successivi. (Visto che il loop è molto veloce, se inserisci un bytes at port è praticamente certo che andrai a leggere quando il messaggio non è terminato, quindi non riesci a interpretarlo. Dovresti accumularlo in un buffer e poi leggere il buffer a blocchi, scaricando i messaggi completi... una complicazione inutile visto che la tua comunicazione è a formato fisso).
E poi porta fuori dal loop l'inizializzazione della seriale!
Qualcosa di questo genere:
(Poi bisogna aggiungere il settaggio dei parametri di comunicazione, la verifica delle condizioni di errore, ecc ecc...)
Dovrebbe funzionare, però considera che io non uso LV per queste cose quindi potrebbe esserci qualche particolare da aggiustare.