c - Arduino:通过UDP发送整数数组

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

问题是这是相当缓慢的我得到了最大端每个传感器大约10毫秒的刷新率,我假设通过将所有整数(目前只有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();
}

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

最佳答案

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

关于c - Arduino:通过UDP发送整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37470406/

相关文章:

python - 在 Cython 中创建 C 结构

c - 如何使用 USB 端口将数据从 Arduino Uno 发送到 PC

java - 通过串行发送单独的信息

c - 我的程序在 gnu-gcc 上运行良好,但在 gnu gcc for avr 上运行不佳

在 C 中正确实现链表

arrays - 是否可以在不激活其 DidSet 属性的情况下使数组为空?

c++ - 经典数组与 std::array

javascript - 在javascript中用2个div包裹每第n block 内容

c - 如何在C中读写串口数据,open函数的问题

c - c 中返回一串零的函数