Go Down

Topic: Problema con lettura seriale da PHP (Read 644 times) previous topic - next topic

pespes

Ciao a tutti.
Ho un problema di lettura dei valori mandati da Arduino sulla seriale.
I dati li vorrei leggere da Raspberry a cui ho collegato Arduino con l'usb, da PHP.

Su arduino ho creato il semplice codice:
Code: [Select]
int cont = 0;

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


Su RaspBerry ho creato una pagine PHP che sfruttando la PHP serial class va a leggere i dati sulla seriale:
Code: [Select]
<?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

// etc...
?>



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

sciorty

Non conosco il php purtroppo anche se sto iniziando a guardarlo ma fai conto che su arduino hai la serial.flush() che svuota il buffer della seriale, potresti metterne uno poco prima del readport()

pespes

Grazie per l'aiuto.
Purtroppo non funziona.
Ho provato a mettere un
Code: [Select]
$serial->flush();

prima della read ma il risultato è sempre lo stesso.
Spero di avere altre soluzioni, non so più come saltarci fuori  =(

pespes

Provo a girare la richiesta in questa maniera:
qualcuno di voi è riuscito a visualizzare su una pagina web il valore rilevato da un'entrata analogica di Arduino?
Tipo: metto una sonda di temperatura su un'entrata analogica e faccio vedere il valore su una pagina web

Go Up