C 使用Serial.write串行发送字节数组时出错
使用C 使用Serial.write串行发送字节数组时出错,c,arduino,arduino-ide,C,Arduino,Arduino Ide,使用串行发送字节数组时出错。写入 byte buf[] = {125, 126, 127, 2000, 5000}; int i = Serial.write(buf, sizeof(buf)); for(int i = 0; i < (sizeof(buf) / sizeof(buf[0])); i++) { Serial.println(buf[i]); } 开始时为未知字符设置的任何时间。我使用的是Arduino 1.0.5
串行发送字节数组时出错。写入
byte buf[] = {125, 126, 127, 2000, 5000};
int i = Serial.write(buf, sizeof(buf));
for(int i = 0; i < (sizeof(buf) / sizeof(buf[0])); i++)
{
Serial.println(buf[i]);
}
开始时为未知字符设置的任何时间。我使用的是Arduino 1.0.5版本它们不是未知字符,这就是您打印的内容:
int i = Serial.write(buf, sizeof(buf));
只需检查一个buf[0]=125='{'
使用write()
可以写入没有任何格式的原始数据。第一个字节是值125,二进制011111101
。如果字符{
,则该字节对应字符{
。串行通信将传入的字节解释为字符,因此打印“{”
如果要在串行通信中将125
打印为字符串,则必须发送buf[]={49,50,53}
。或者您必须将INTGET转换为字符串。还有一个问题,就是您使用的字节类型的值大于255。请尝试更改为int16\u t
开头的字符是您发送的buff数字的ASCII表示形式。arduino串行监视器监视所有活动,并且它还打印出.write命令..writeln,您稍后执行的操作将在原始.write命令之后额外打印
您看到的是arduino发送命令的ASCII表示形式
附言:
数字2000和5000不适合该字节,因此您发送的最后两个字节可能已损坏。请确切告诉我们:“…开始时未知字符的任何时间…”?关于开始时获取未知字符的任何想法。。。。
int i = Serial.write(buf, sizeof(buf));