- Apre la seriale COM1 in lettura
- Se viene premuto il tasto "LEGGI" viene mostrata sullo schermo la riga acquisita
- Se non esistono righe nel buffer, il programma si blocca finche' non viene ricevuta una riga
( per "riga" si intende una sequenza di caratteri che termina con "RETURN" )
button .b1 -width 10 -text "leggi" -command {leggi $seriale}
button .b2 -width 10 -text "EXIT" -command {fine}
pack .b1 .b2
frame .f
text .f.text
pack .f.text
pack .f
proc fine {} {
close $seriale
exit
}
proc leggi {xseriale} {
set messaggio [gets $xseriale]
.f.text insert end "$messaggio
"
}
proc apri {} {
global seriale
set seriale [open com1: r]
fconfigure $seriale -mode 9600,n,8,1 -buffering line
}
set seriale ""
apri
serial_read_3.tcl
INFORMAZIONI SUL FUNZIONAMENTO DEL PROGRAMMA :
Questo programma legge i dati provenienti dalla com1
La com1 viene aperta automaticamente all'avvio del programma
premendo "leggi", il programma si blocca finche' non viene
ricevuto il carattere di fine linea, ovvero
3 esempi per capire :
si supponga di inviare dei dati sulla com1
costituiti da tante frasi separate da qui rappresentato con "/"
--> il buffer si riempira'
ad un certo istante "|" si supponga di leggere i dati :
buffer (prima) : "ciao/come stai?/io bene/e tu come st"
istante lettura : " | "
io vedo : "ciao" .
buffer (dopo) : "come stai?/io bene/e tu come st" .
buffer (prima) : "ciao/come stai?/io bene/e tu come st"
istante lettura : " | | "
io vedo : "ciao" , "come stai?" .
buffer (dopo) : io bene/e tu come st" .
buffer (prima) : "ciao/come stai?/io bene/e tu come st"
istante lettura : " |||| "
io vedo : "ciao" , "come stai?" , "io bene" .
buffer (dopo) : e tu come st" .
( in questo caso il programma si blocca finche' non viene )
( finita l'ultima frase : "ai?/" )
( se ad esempio dopo un'ora arriva sulla seriale "ai?/" )
( io vedro' : "e tu come stai?" )
( ora il buffer sara' completamente vuoto e se tento di )
( leggere la seriale nuovamente, il programma si piantera')
( finche' non arrivera' un dato contenente un )