使用Serial.write
串行发送字节数组时出错。
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]);
}
输出:
}~??125
126
127
208
136
任何时候开始时为未知的字符。我正在使用Arduino 1.0.5版本
答案 0 :(得分:2)
它们不是Unknow字符,这就是你打印的字符:
int i = Serial.write(buf, sizeof(buf));
只需查看ASCII table buf[0] = 125 = '{'
使用write()
,您正在编写没有任何格式的原始数据。您的第一个字节是值125,以二进制01111101
表示。如果它被解释为char,则该字节对应于字符{
。您的串行通信将传入的字节解释为char,因此它打印'{`。
如果要在串行通信上打印125
字符串,则必须发送buf[] = {49, 50, 53}
。或者你必须将你的interget转换成一个字符串。
答案 1 :(得分:0)
错误的是您使用的byte
类型的值大于255.请尝试更改为int16_t
。
答案 2 :(得分:0)
开头的字符是您发送的buff编号的ASCII表示。 arduino串行监视器监视所有活动,并打印出.write命令。你以后做的.writeln会在原始的.write之后另外打印。
所以你看到的是arduino发送命令的ASCII表示。
PS: 数字2000和5000不适合字节,因此您发送的最后两个字节可能已损坏。