Lettura porta seriale

  • Creatore Discussione Creatore Discussione pes
  • Data di inizio Data di inizio

pes

Nuovo Utente
12 Mar 2013
10
0
0
Ho un problema di lettura dei valori che mi arrivano dalla seriale. Nel mio caso a mandarli è Arduino.
Ho creato un semplicissimo programma su Arduino che manda sulla seriale la parola "Prova " + un numero che si incrementa.
Questo è il codice:
Codice:
int cont = 0;

void setup() {
  // initialize serial communications at 9600 bps:
  Serial.begin(9600);
}
void loop() {
  Serial.print("Prova = " );                       
  Serial.println(cont++);   
  delay(500);                     
}

Ho poi creato il codice PHP che sfruttando la PHP serial class va a leggere i dati sulla seriale:

Codice:
<?php
include "php_serial.class.php";

// Let's start the class
$serial = new phpSerial;

// First we must specify the device. This works on both linux and windows (if
// your linux serial device is /dev/ttyS0 for COM1, etc)
$serial->deviceSet("/dev/ttyACM0");

// Then we need to open it
$serial->deviceOpen();

// Or to read from
$read = $serial->readPort();

// If you want to change the configuration, the device must be closed
$serial->deviceClose();

echo $read;

?>

Il problema è che quando visualizzo la pagina PHP, invece di vedere un singolo valore tipo
Prova = 1
il risultato "accumula" tutte le righe non precedentemente lette. Ogni volta che faccio un refresh mi ritrovo tutto quello che non avevo letto la volta precedente:

Refresh 1:
Prova = 3119 Prova = 3120 Prova = 3121 Prova = 3122 Prova = 3123 Prova = 3124 Prova = 3125 Prova = 3126 Prova = 3127 Prova = 3128 Prova = 3129 Prova = 3130 Prova = 3131 Prova = 3132

Refresh 2:
Prova = 3133 Prova = 3134 Prova = 3135 Prova = 3136 Prova = 3137 Prova = 3138 Prova = 3139 Prova = 3140 Prova = 3141 Prova = 3142 Prova = 3143 Prova = 3144 Prova = 3145 Prova = 3146 Prova = 3147 Prova = 3148 Prova = 3149 Prova = 3150 Prova = 3151 Prova = 3152 Prova = 3153 Prova = 3154 Prova = 3155 Prova = 3156 Prova = 3157 Prova = 3158 Prova = 3159 Prova = 3160 Prova = 3161 Prova = 3162 Prova = 3163 Prova = 3164 Prova = 3165 Prova = 3166 Prova = 3167 Prova = 3168

Refresh 3:
Prova = 3169 Prova = 3170 Prova = 3171 Prova = 3172 Prova = 3173 Prova = 3174 Prova = 3175 Prova = 3176 Prova = 3177 Prova = 3178 Prova = 3179 Prova = 3180 Prova = 3181 Prova = 3182

Refresh 4:
Prova = 3183

Refresh 5:
Prova = 3184 Prova = 3185

Refresh 6:
Prova = 3186 Prova =

Refresh 7:
3187 Prova = 3188

e così via.

Qualcuno può aiutarmi?

Grazie
 
Ultima modifica:

Discussioni simili