Titolo: Comunicazione via porta seriale
Categoria: Codice |
|
Ultimo Aggiornamento: 20/04/05 |
Le comunicazioni attraverso le porte seriali tipo RS 232, RS 422 o RS 485 sia in trasmissione che in ricezione possono essere gestite dallo stesso metodo. Eccone un esempio.
Utilizzaremo le seguenti variabili:
<>Port è la porta da usare per la trasmissione/ricezione.
<>Param sono le impostazioni della porta seriale (velocità, data bit, etc.).
<>In_Out: controlla l'esecuzione del While.
<>vTransmit è la stringa da trasmettere.
<>tPages è un array testo per gestire ricezioni maggiori di 30.000 caratteri.
Ecco il metodo:
C_TEXT($vRecept)
C_TEXT($ReadMem)
ARRAY TEXT(<>tPages;1)
<>PageNumber:=1
SET CHANNEL(<>Port;<>Param)
SET TIMEOUT(<>Time_Out)
<>In_Out:=
TrueWhile (<>In_Out)
RECEIVE BUFFER($vRecept)
Case of : ($vRecept#"") ` dati ricevuti
$ReadMem:=$ReadMem+$vRecept
<>ReadVar:=<>ReadVar+$vRecept
<>LongVarRead:=
Length(<>ReadVar)
If (
Length($ReadMem)>30000)
<>tPages{<>PageNumber}:=$ReadMem
$ReadMem:=""
<>ReadVar:=""
<>PageNumber:=<>PageNumber+1
CALL PROCESS(1)
INSERT ELEMENT(<>tPages;Size of array(<>tPages)+1)
End if CALL PROCESS(-1)
: (<>vTransmit#"") ` trasmissione dati
BEEP SEND PACKET(<>vTransmit+Char(13))
<>vTransmit:=""
CALL PROCESS(-1)
End case DELAY PROCESS(Current process;30)
End while SET CHANNEL(11)
In caso di alti flussi di dati potrebbe essere necessario ridurre il tempo di pausa inserito nella riga:
DELAY PROCESS(Current process;30)
Inviato da: PierPaolo Sichera |
|
Visite: 13070 |
Se accedi con utente e password, puoi aggiungere dei commenti.