Verwendung mehrerer serieller Arduino-Module

Ich stecke bei dieser scheinbar einfachen Sache fest. Ich habe ein NMEA-GPS-Modul. Es spielt keine Rolle, wie es funktioniert, es überträgt nur einen seriellen Datenstrom mit einer Baudrate von 38400.

Ich habe ein Arduino Mega mit mehreren seriellen Hardwaremodulen. Wenn ich GPS Tx direkt mit Arduinos Tx-Pin verbinde (und Arduino so programmiere, dass das standardmäßige serielle Modul nicht verwendet wird Serial0), kann ich rohe GPS-Sätze beobachten, die vom GPS-Modul mit dem seriellen Arduino-Monitor übertragen werden.

Was ich wirklich möchte, ist, das GPS-Modul an den Arduino- Serial1Port zu lesen und die Empfangsdaten über den standardmäßigen seriellen Port weiterzuleiten, Serial0ohne etwas zu tun. Damit sollte ich in der Lage sein, die Daten vom seriellen Monitor genau wie im vorherigen Fall zu überwachen.

Ich habe so etwas wie folgt versucht, aber es funktioniert nicht (es gibt einen Strom von Ziffern, ich habe versucht, alle möglichen Änderungen vorzunehmen, aber nichts hat funktioniert)

void setup(){
  Serial.begin(38400); // the default serial module, serial0
  Serial1.begin(38400); // GPS is connected to this
}

void loop(){
  if(Serial1.available()){ // if GPS data available
    Serial.print(Serial1.read()); // write it to serial0
  }
}

Hoffe hier kann mir jemand eine Lösung geben.

Sollten Sie GPS Tx nicht mit Arduino Rx (nicht Tx) verbinden?
@RedGrittyBrick nein, im ersten Fall sollte es Tx sein, weil Arduino nichts empfängt, GPS Tx verhält sich wie Arduino Tx.

Antworten (1)

Serial::print()konvertiert die Bytes in eine ASCII-Darstellung. Verwenden Sie Serial::write()stattdessen.

Konvertiert , wie Ignacio sagte, Serial.print()die Eingabe in ASCII, während Serial.write()die Binärdaten "durchgeleitet" werden. Hier ist der Link zur Arduino-Referenz: arduino.cc/en/Serial/Write