【发布时间】:2024-01-12 15:34:02
【问题描述】:
我正在尝试向我的“masterArduino”发送许多整数。 因为 SerialPort 对象只发送字符串。我尝试了很多方法,包括:
- 从整数创建字符串(不起作用,因为 string.length 的大小是动态的)。
- 然后我尝试将这些整数转换为字符,这是因为所有值都在 0-255 之间,然后将字符放入字符串并发送。
这类作品。但是,我认为 char 世界中的 0 没有任何价值。所以数据不对。但一定有更好的办法吗?
void sendInfo() {
for (var i = 0; i < peltiers.Length; i++) {
char tempHot = (char) peltiers[i].GetComponent<Peltier>().hot;
char charTemp = (char) peltiers[i].GetComponent<Peltier>().temp;
peltierInfo += tempHot.ToString();
peltierInfo += charTemp.ToString();
}
sp.WriteLine(peltierInfo);
Debug.Log(peltierInfo);
sp.BaseStream.Flush();
peltierInfo = "";
}
任何帮助将不胜感激!谢谢!
Arduino 代码:
void loop() {
int serialIndex = 0;
int i2cIndex = 0;
while (0 < Serial.available()) { // loop through all the received bytes
char bufferByte = 0;
bufferByte = Serial.read();
serialBuffer[serialIndex] = (byte) bufferByte; // put current index byte in array
serialIndex ++; // add index.
if (serialIndex%12==0 && serialIndex != 0) {
sendBytes(0);
}
}
//sendBytes(0);
delay(50);
}
void sendBytes(int slave) {
byte i2cBuffer[12];
int bufferIndex = slave * 12;
for (int i = 0; i < 12; i++) {
i2cBuffer[i] = serialBuffer[i + bufferIndex];
}
Wire.beginTransmission(slave+1);
Wire.write(i2cBuffer, 12);
Wire.endTransmission();
}
【问题讨论】:
-
“字符世界”中有
0,即'\0'。这是一个无法打印的空字符,如果您尝试打印它,您只会得到一个空白空间。你有发送零的问题吗?
标签: c# string unity3d arduino serial-port