以串行方式接收字符串,问题。团结 - >阿杜伊诺
Receiving string in Serial, issue. Unity -> Arduino
我正在通过串口从 Unity 向波特率为 115200 的 Arduino Mega 发送一个字符串。该字符串被解析为一个 uInt_8 数组,并通过 i2c 以 12 字节的数据包发送给其他 arduino。这很好用,但仅适用于前 10 个字节 (0-9),因此它必须与两位小数 (10、11) 有关。 24 字节的字符串如下所示,0,255,0,055,0,025,0,255,0 等。这些值始终介于 0/1 和 0/255 之间。
void loop() {
int serialIndex = 0;
if(Serial.available() > 0){
while (0 < Serial.available()) { // loop through all the received bytes
String bufferString;
uint8_t bufferInt;
bufferString = Serial.readStringUntil(',');
bufferInt = bufferString.toInt();
serialBuffer[serialIndex] = bufferInt; // put current index byte in array
serialIndex ++; // add index.
}
sendBytes();
}
delay(50);
}
void sendBytes(){
for(int i = 0; i<boards; i++){
// int i2cIndex = i*12;
// for(int j = 0; j <12; j++){
// i2cBuffer[j] = serialBuffer[j+i2cIndex];
// }
Wire.beginTransmission(i+1);
Wire.write(serialBuffer, 12);
Wire.endTransmission();
}
}
感谢 George Profenza 以正确的方式推动。
我改变了这个:
if(Serial.available() > 0){
对此:
if(Serial.available() == 30){
我还降低了 Unity 中的发送频率,但我现在正在 arduino en unity 之间实施握手以提高速度和效率。
我构建了这个:https://github.com/relativty/wrmhl
使用它,您可以创建无延迟的 Unity3D 和 Arduino 体验。
我正在通过串口从 Unity 向波特率为 115200 的 Arduino Mega 发送一个字符串。该字符串被解析为一个 uInt_8 数组,并通过 i2c 以 12 字节的数据包发送给其他 arduino。这很好用,但仅适用于前 10 个字节 (0-9),因此它必须与两位小数 (10、11) 有关。 24 字节的字符串如下所示,0,255,0,055,0,025,0,255,0 等。这些值始终介于 0/1 和 0/255 之间。
void loop() {
int serialIndex = 0;
if(Serial.available() > 0){
while (0 < Serial.available()) { // loop through all the received bytes
String bufferString;
uint8_t bufferInt;
bufferString = Serial.readStringUntil(',');
bufferInt = bufferString.toInt();
serialBuffer[serialIndex] = bufferInt; // put current index byte in array
serialIndex ++; // add index.
}
sendBytes();
}
delay(50);
}
void sendBytes(){
for(int i = 0; i<boards; i++){
// int i2cIndex = i*12;
// for(int j = 0; j <12; j++){
// i2cBuffer[j] = serialBuffer[j+i2cIndex];
// }
Wire.beginTransmission(i+1);
Wire.write(serialBuffer, 12);
Wire.endTransmission();
}
}
感谢 George Profenza 以正确的方式推动。
我改变了这个:
if(Serial.available() > 0){
对此:
if(Serial.available() == 30){
我还降低了 Unity 中的发送频率,但我现在正在 arduino en unity 之间实施握手以提高速度和效率。
我构建了这个:https://github.com/relativty/wrmhl 使用它,您可以创建无延迟的 Unity3D 和 Arduino 体验。