Arduino Serial.begin(速度、配置)不为Leonardo板编译
我想将我的串行通信配置为没有奇偶校验、1个启动位和2个停止位。用于Arduino Serial.begin(速度、配置)不为Leonardo板编译,arduino,Arduino,我想将我的串行通信配置为没有奇偶校验、1个启动位和2个停止位。用于Serial.begin(速度、配置)的状态为: (…)可选的第二个参数配置数据、奇偶校验和停止位。默认值为8个数据位,无奇偶校验,一个停止位 文档还列出了可能的配置值。根据我(有限)的理解,我需要串行_7N2或串行_8N2来满足我的要求。(我不确定数据位与我需要的1-起始位之间的关系。) 但是,我甚至不能编译,因为我不知道如何向begin方法提供配置值。(我没有太多的Arduino/C++经验) 在我的代码中,我尝试了以下两种变
Serial.begin(速度、配置)
的状态为:
(…)可选的第二个参数配置数据、奇偶校验和停止位。默认值为8个数据位,无奇偶校验,一个停止位
文档还列出了可能的配置值。根据我(有限)的理解,我需要串行_7N2或串行_8N2来满足我的要求。(我不确定数据位与我需要的1-起始位之间的关系。)
但是,我甚至不能编译,因为我不知道如何向begin方法提供配置值。(我没有太多的Arduino/C++经验)
在我的代码中,我尝试了以下两种变体:
Serial.begin(9600, SERIAL_8N2);
Serial.begin(9600, "SERIAL_8N2");
我错过什么了吗
其他信息:
Serial.begin(速度,配置)
已与最新版本一起引入
可以找到定义/实现begin方法的代码:
编辑: 根据PeterJ和borges的回复,以下变体是正确的
Serial.begin(9600, SERIAL_8N2);
然而,它仍然不起作用
我发现,如果我将配置的电路板从Arduino Leonardo更改为,编译错误不会发生
因此,这可能是一个错误,只发生在一个子集的董事会。。。或者它不被支持
编辑2:
现在问题解决了:)博尔赫斯的回答给了我正确的答案 第一个方法应该是正常的,因此您有一个编译器配置或包含问题。确保文件顶部包含以下内容:
#include <HardwareSerial.h>
#包括
此外,虽然串行_8N2是有效的,但这是一个很少使用的奇怪设置。您很可能需要序列号_8N1。您在评论中提到:(编辑:现在在标题中) 如果我将电路板从“Arduino Leonardo”更改为“Arduino Uno”,则不会出现编译错误 Arduino Leonardo在串行通信方面有一些特点:
串行
访问此通信。实际上,您可以通过USB插头访问该通信Serial1
(注意数字1!)void setup() {
Serial1.begin(9600, SERIAL_8N2);
Serial1.println("Hello?");
}
void loop() {
}
有关更多信息(推荐):
串行。开始(9600,串行)
应该足够了。您使用的是IDE版本1.0.2
?谢谢,但我肯定使用的是1.0.2。谢谢,但是包含没有帮助。然而。。。我刚刚发现,如果我把黑板从“Arduino Leonardo”改为“Arduino Uno”,我就不会出现编译错误。。。。我想与之通信的电机控制器需要根据其规格“9600 bps的串行模式,1个启动位,2个停止位,无奇偶校验”。。。那不是序列号吗?很好,已经搞定了。是的,SERIAL_8N2对于该配置是正确的,但它仍然是一个相当不寻常的配置,因此在将来,如果您与任何未知的接口,SERIAL_8N1是最好的开始。好的,谢谢,我会记住:)但是为什么我不能在我的Arduino Leonardo板上使用该方法?是虫子吗?我应该提出问题吗?或者它只是不受支持?我从来没有使用过那个特定的板,但使用的AVR确实有一个硬件UART,所以我想这是他们还没有实现的东西,所以值得提出一个问题。同时,您可以尝试SoftwareSerial,看看是否支持该功能。