2016-05-26 20 views
1

Ich bin neu in Arduino und ziemlich neu in der Programmierung. Ich versuche, ein Array von ganzen Zahlen über UDP an MaxMSP zu senden. Mit Hilfe der .print-Methode in den WiFiUDP Bibliothek Werken für das Senden einer ganzen Zahl pro Paket:Arduino: Senden einer Ganzzahl-Array über UDP

void loop() { 

Udp.beginPacket(hostIP, HOST_PORT); 
Udp.print("start"); 

for (int i = 0; i < NUMBER_OF_SENSORS; i++) { 
    int adcValue = analogRead(i); 
    Udp.print(adcValue); 
} 

Udp.endPacket(); 
Udp.flush(); 
} 

Das Problem ist, dass dies ziemlich langsam ist. Ich bekomme für jeden Sensor am Max-Ende eine Aktualisierungsrate von etwa 10 ms, und ich gehe davon aus, dass ich alle Integer (nur 4 im Moment) in einen einzigen Puffer schreiben und in einem eigenen Paket senden werde. Ich könnte die Geschwindigkeit vervierfachen. Ich habe es versucht:

void loop() { 

byte sensorBuffer [NUMBER_OF_SENSORS * 2]; 

for (int i = 0; i < NUMBER_OF_SENSORS; i++) {  
    int adcValue = analogRead(i); 
    sensorBuffer[i*2] = highByte(adcValue); 
    sensorBuffer[i*2+1] = lowByte(adcValue); 
    } 

Udp.beginPacket(hostIP, HOST_PORT); 
Udp.write(sensorBuffer, NUMBER_OF_SENSORS * 2); 
Udp.endPacket(); 
Udp.flush(); 
} 

Dies erzeugt Müll am Max Ende. Ich habe eine vage Idee, warum dies der Fall ist - das Array ist als 7-Bit-ASCII-Werte formatiert? - Aber ich habe nicht herausgefunden, wie ich es zur Arbeit bringen kann. Jede Eingabe wird sehr geschätzt.

Antwort

-1

Sie brauchen eine richtige Verzögerung in Leerer Schleife zu geben, da es eine bestimmte Zeit in Anspruch nimmt, ein Paket zu bilden und Leere Schleife läuft schnell und einige Pakete verloren könnten oder nicht sogar

bilden
Verwandte Themen