如何禁用Arduino硬件串口的回声?

时间:2017-11-17 17:47:16

标签: arduino serial-port modem

我试图为我的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或其常用的克隆版。

1 个答案:

答案 0 :(得分:0)

看起来这是我正在使用的板子的硬件问题(或板卡模型)。我正在使用RobotDyn ATmega2560 + ESP8266主板,而不是Original Mega或者它通常的克隆。