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.