我试图为我的Arduino Mega和SIM800L v2编写串行解析器。
以下是最简单的测试代码:
void setup() {
Serial.begin(57600); // USB
Serial2.begin(57600); // SIM800L
Serial2.write("AT+CGMM\r\n");
}
void loop() {
if(Serial2.available()) {
Serial.write(Serial2.read());
}
}
以下是禁用调制解调器回音的输出(ATE0):
AT + CGMM
SIMCOM_SIM800L
行
为了比较,这里是启用调制解调器回声的输出(ATE1):
AT + CGMM
AT + CGMM
SIMCOM_SIM800L
行
因此,您可以看到命令始终显示(启用调制解调器回显 - 两次),而 Serial2.read()
有没有办法避免串口中的echo命令?
我明白这是因为我使用的Arduino硬件串口的回声已经开启。所以我的问题的核心是如何禁用Arduino硬件串口的回声?
更新 我刚用SoftwareSerial而不是硬件serial1测试代码 - 它按预期工作 - 没有额外的回声...所以这证实了应该为Arduino硬件序列禁用回声。如果可能......
如果我使用这样的代码:
SoftwareSerial softSerial(12, 13);
void setup() {
Serial.begin(57600); // USB
softSerial.begin(57600); // SIM800L
softSerial.write("AT+CGMM\r\n");
}
void loop() {
if(softSerial.available()) {
Serial.write(softSerial.read());
}
}
输出就像我需要的那样:
SIMCOM_SIM800L
行
UPDATE2:
这似乎是我的电路板本身(或板模型)的一些硬件问题。我使用的是RobotDyn ATmega2560 + ESP8266主板,而不是原版Mega或其常用的克隆版。
答案 0 :(得分:0)
看起来这是我正在使用的板子的硬件问题(或板卡模型)。我正在使用RobotDyn ATmega2560 + ESP8266主板,而不是Original Mega或者它通常的克隆。