Arduino串口写

时间:2013-04-20 03:08:34

标签: serial-port arduino

我正在尝试使用arduinon Serial.write(buf,leng)。这是我的代码

byte buf[] = {125, 126, 127, 128, 129};

void setup() {
  // initialize serial:
  Serial.begin(9600);

}

void loop() {
  int i = Serial.write(buf, sizeof(buf));
  Serial.println(i);
  delay(1000);
}

然而,当我打开串行监视器时,这就是打印出来的

}~   5
}~   5
}~   5
}~   5

首先,我读到写入将二进制数据写入串行端口,并且该打印是ascii字符。为什么我看到ascii字符?

第二个问题是如何在127出现什么?

每当我在Serial.write(> 127)中,它总是在串口监视器中显示一个傻瓜输出?

是不是因为计算机的串行端?

我的主要目标是一次性将32个字节写入串行,因此它们都在我的xbee传输包的相同有效负载中。 ??

1 个答案:

答案 0 :(得分:1)

输出正确。您正在编写二进制数据,但是您尝试将它们视为ASCII,这就是为什么您看到}而不是125的原因,因为一个字节125代表}用ASCII。 125需要3个字节才能显示为ASCII。

当你写一个大于127的字节时,你会看到奇怪的东西,因为ASCII只包含128个字符(0到127)的定义。

如果在接收电路上你想要读取代码中完全相同的数组,那么你的草图就可以了。您只需使用某种"串行读取",并根据需要使用这些数字,请记住每个数字都有一个字节大小。

另一方面,如果要查看串行监视器上的数字(表示为ASCII字符),则必须将这些数字转换为ASCII代码,或者只使用循环将数字作为整数打印到{ {1}}功能:

println