in data 05-10-2012 03:08 AM
Premetto che so già leggere la porta seriale con carattere per carattere
Però volevo che iniziasse a scrivere su una nuova stringa quando arriva dalla seriale il punto esclamativo e finisce con il tasto invio
per esempio se ricevuto una stringa dalla porta seriale tipo !0334234 invio
volevo che iniziasse a scrivere su una nuova stringa dal punto esclamativo e finisce con il tasto ascii invio
grazie
in data 05-10-2012 03:20 AM
Cerca di essere un po' più chiaro nella domanda...
Suppongo che tu in qualche modo riceva un flusso continuo di dati sulla seriale e voglia dividerli: corretto?
Serve però sapere dove vuoi mandare quei messaggi: in un array di stringhe, su un indicatore a video, su un file su disco... e magari anche con che programma intendi lavorare, così ti si può dare qualche esempio mirato.
Ancora meglio se puoi allegare uno scheletro di codice su cui lavorare non serve tutta l'applicazione, basta il segmento che legge dalla seriale ed elabora i dati.
in data 05-10-2012 03:34 AM
codice tipo basic però lo vorrei fatto in labview
li voglio salvare sia su un array che su una stringa che poi bisognerebbe cancellarla dopo averla elaborata che non so come si fa :d
perla stringa deve partire solo con il punto esclamativo e finire con il tasto invio
per esempio
dalla seriale mi arriva ewfrgnrgeirgù!Dfefefef "INVIO"
io parto da ! poi prendo tutta la stringa fine al carattere invio e la mando ad un'altra stringa cancellando la precedente
e poi su un array
grazie
RobertoBozzolo ha scritto:
Cerca di essere un po' più chiaro nella domanda...
Suppongo che tu in qualche modo riceva un flusso continuo di dati sulla seriale e voglia dividerli: corretto?
Serve però sapere dove vuoi mandare quei messaggi: in un array di stringhe, su un indicatore a video, su un file su disco... e magari anche con che programma intendi lavorare, così ti si può dare qualche esempio mirato.
Ancora meglio se puoi allegare uno scheletro di codice su cui lavorare non serve tutta l'applicazione, basta il segmento che legge dalla seriale ed elabora i dati.
in data 05-10-2012 03:44 AM
esempio codice in basic da trasformare in labview
receivedatamodem' ricezione singolo carattere
if receivedatamodem="!" then
stringa = stringa + receivedatamodem
end if
if receivecedemodem="Invio" then
stringa=nuovastringa
stringa=""
end if
in data 05-10-2012 04:17 AM
Potresti fare qualcosa del genere:
Però potresti anche lavorare diversamente in modo da avere già la stringa corretta senza bisogno di cercarla: invece di leggere dalla seriale carattere per carattere, potresti leggere una stringa fino ad un determinato valore (termination character). In questo modo, se prima leggi fino al punto esclamativo e scarti la stringa, poi leggi fino al ritorno a capo e conservi la stringa hai già il lavoro fatto. Perdi un po' di tempo per riconfigurare la seriale ogni volta (dell'ordine di qualche millisecondo) ma se il traffico sulla linea non è eccessivo non dovresti nemmeno accorgertene.
Per impostare la seriale potresti fare così:
in data 05-10-2012 05:00 AM
preferisco la prima opzione che userò al posto della stringa, carattere per carattere perchè possono arrivare altre tipi di stringhe "che io non so"
al posto della stringa originale vorrei mettere la porta seriale carattere per carattere è possibile?
in data 05-10-2012 05:10 AM
vorrei che il programma dopo aver trovato il punto esclamativo iniziasse a scrivere in un'altra stringa ma solo dopo aver trovato il punto esclamativo sempre leggendo la seriale carattere per carattere e terminare la nuova stringa quando arriva il tasto invio
grazie
05-10-2012 05:34 AM - modificato 05-10-2012 05:35 AM
Questa versione:
A tua cura la gestione del messaggio estratto, la gestione dei messaggi che non rispettano questo pattern (per esempio non c'è il punto esclamativo), la gestione del timeout in lettura sulla seriale.
Ripensandoci, il controllo iniziale non è necessario farlo su tutta la stringa, ma solamente sull'ultimo carattere ricevuto: è più rapido.
in data 05-14-2012 05:25 AM
Sono arrivato a questo punto provando senza while e mettendo l'avvio in modo continuo
sono riuscito a vedere se premo ! però dopo non so come scrivere i caratteri che vengono dopo
allego un immagine
grazie
in data 05-14-2012 08:42 AM
Sto usando Labview