Menu:

Implementazioni del PPTEA



Implementiamo la RS232

Vediamo come gestire un segnale RS232 con il PPTEA.
Questa capabiitly è disponibile dalla versione 2.16b.

Cominciamo con il dire che stiamo parlando di un segnale RS232 non usb seriale o viceversa, ma seriale pura.
Può essere utile per parlare con tutti i dispositivi che non hanno la porta usb, ma anche per far dialogare più PPTEA tra loro in modo 'standard', oppure per dialogare con dispositivi che utilizzano questo modo per scambiarsi informazioni.
Se si vuole dialogare con un PC mediante la sua porta seriale il PPTEA necessita di un MAX232 (gestisce solo i livelli di tensione), mentre per far dialogare due processori non serve nulla.
Questa implementazione viene condivisa con il WIFI, cioè utilizza la stessa uscita e lo stesso ingresso.
Quindi per settare la modalità RS232 occorre settare il diciottesimo bit della SETIO.
Esempio di abilitazione comunicazione mediante seriale:

CODICE
10 SETIO=&H400FF

I comandi a disposizione sono:
A=SERIALINP - Riceve un BYTE dalla seriale ( torna -1 se non ha ricevuto nulla)
STR=SERIALINPSTR - Riceve una stringa dalla seriale (*)
SERIALOUT=VAL - Invia un BYTE o una stringa sulla seriale
SERIALCLOSE - Chiude la seriale. Può servire per utilizzare il WIFI o per resettare la pota seriale del PPTEA
Nessun comando è bloccante.
(*) Le stringhe non possono essere più lunghe di 84 caratteri.

Il PPTEA ha il suo TX sul pin 17 e il suo RX sul pin 18.

Questo è il comando che permette di settare la velocità:

CODICE
SERIALSPEED = VAL

VAL=12 '57600
VAL=19 '38400
VAL=40 '19200 baud
VAL=80 '9600 baud ' Default
VAL=160 '4800 baud

Il compilatore mette a disposizione queste costanti predefinite:

SPEED_57600
SPEED_38400
SPEED_19200
SPEED_9600
SPEED_4800

Ad esempio per settare la velocità a 19200 basta scrivere la linea di codice:

CODICE
SERIALSPEED = SPEED_19200

Iniziamo a far vedere come due PPTEA dialogano con la seriale.
Questo è il codice in EABasic del primo e del secondo PPTEA.
La connessione è semplice, il pin 17 del pimo PPTEA va al pin 18 del secondo PPTEA, e il pin 18 del primo PPTEA va al pin 17 del secondo PPTEA.
Questo è il codice dove il primo PPTEA invia un byte ed attende risposta dal secondo, se il dato no arriva aspetta due secondi segnalando un eventuale errore o il ritardo di risposta.

La connessione è quella di default:

CODICE
10 SETIO=&H400FF
20 usbout= A & "-"
25 SERIALOUT=A
30 gosub :attendi_echo
31 waitms 250
35 A++
36 a= a mod 256
40 goto 20
100 :attendi_echo
110 RESET_TIMER
120 if timer>2 then :MANCATA_RISPOSTA ' NON HA RISPOSTO
130 RIC=SERIALINP
135 IF RIC=-1 then 120
140 IF A=RIC THEN 220
150 usbout="ERR RCV:TX="& A & " RX="& RIC & CR_LF
160 return
200 :MANCATA_RISPOSTA
210 usbout="Mancata Risposta" & CR_LF
220 return

CODICE
05 SETIO=&H400FF
25 V=SERIALINP
27 if v=-1 then 25
30 usbout=v&"-"
35 SERIALOUT=v
40 goto 25



Se vogliamo far dialogare il PPTEA con un dispositivo che abbia i livelli RS232, come ad esempio il PC, occorre inserire un integrato che 'riaggiusti' la situazione.
In questo caso abbiamo utilizzato un MAX232 della Maxim e questo è il circuito.
Allego il codice per inviare i dati al pc come singoli byte:

CODICE
10 SETIO=&H400FF
20 usbout= A & "-"
25 SERIALOUT=A
30 waitms 250
35 A++
40 goto 10

E il codice dove il pptea riceve una stringa dal pc:

CODICE
05 SETIO=&H400FF
15 waitms 250
25 V=SERIALINPSTR
26 if v="" then 15
30 usbout=v
40 goto 15



Questo è il video con due PPTEA collegati tra di loro che comunicano mediante RS232.
I due compilatori che girano contemporaneamente su di unico PC servono esclusivametne per verificare lo scambio dati.



Questo è il video con il PPTEA che comunica con un PC collegato ad una sua porta seriale:



A causa del rapido evolversi nello sviluppo del software, si consiglia di seguire la discussione sul forum.




Valid XHTML 1.0 Strict



[ Back to top ] [ Home ]