Serial port Arduino串行写入
我正在尝试使用arduinon系列。write(buf,leng)。这是我的密码Serial port Arduino串行写入,serial-port,arduino,Serial Port,Arduino,我正在尝试使用arduinon系列。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); } 然而,当我打开串
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
首先,我读到write将二进制数据写入串行端口,打印的是ascii字符。我怎么会看到ascii字符
第二个问题是,为什么没有超过127的东西出现
每当我串行写入(>127)时,它总是在串行监视器中显示一个愚蠢的输出
是因为计算机的串行端口吗
我的主要目标是一次性将32个字节写入串行数据,以便它们都位于我的xbee传输包的相同有效负载中 输出正确。您正在编写二进制数据,但您试图将其视为ASCII,这就是为什么您看到的是例如
}
而不是125
,因为一个字节125表示ASCII中的}
<代码>125将需要3个字节才能显示为ASCII
当您写入大于127的字节时,您会看到一些奇怪的东西,因为ASCII仅包含128个字符(0到127)的定义
如果在接收电路上,您想读取与代码上完全相同的数组,那么您的草图就可以了。您只需使用某种“串行读取”,并根据需要使用数字,记住每个数字都有一个字节大小
另一方面,如果您想在串行监视器上看到以ASCII字符表示的数字,则必须将这些数字转换为ASCII代码,或者使用println
函数使用循环将数字打印为整数:
int numbers[] = {125, 126, 127, 128, 129};
for(int i = 0; i < (sizeof(numbers) / sizeof(numbers[0])); i++)
Serial.println(numbers[i]);
int number[]={125、126、127、128、129};
对于(int i=0;i<(sizeof(数字)/sizeof(数字[0]);i++)
序列号println(编号[i]);
谢谢,它的实际功能很好,只是串行监视器开始出错。我也有同样的问题。当我使用Serial.print(124)时,在Arduino中我得到三个独立的值。我得到的ascii码是“1”,ascii码是“2”,ascii码是“4”。如何从arduino发送一个简单的值,然后通过处理读取它?