Arduino:通过UDP发送整数数组

时间:2016-05-26 20:29:35

标签: c arrays arduino udp

我是Arduino的新手,也是编程方面的新手。我试图通过UDP向MaxMSP发送一个整数数组。使用WiFiUDP库中的.print方法可以为每个数据包发送一个整数:

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();
}

问题是这很慢。我在Max端为每个传感器获得大约10 ms的刷新率,我假设通过将所有整数(此刻只有4个)写入单个缓冲区并将其发送到它自己的数据包,我能够将速度提高四倍。我试过这个:

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();
}

这会在Max端产生垃圾。我有一个模糊的想法为什么会这样 - 数组被格式化为7位ASCII值? - 但我还没有弄清楚如何让它发挥作用。任何意见都非常感谢。

1 个答案:

答案 0 :(得分:-1)

你需要在void循环中给出一个适当的延迟,因为它需要一个确定的时间来形成一个数据包并且void循环运行得很快并且一些数据包可能会丢失或甚至不会形成