Serial zu Serial

Hallo,
erst zu meine Person, Rico Wünsche vom Rande des Schwarzwaldes, Blutiger Anfänger für C und Arduino.
Den Rest habe ich immer igendwie hinbekommen :wink:

Zu meiner Aufgabe:
Ein Gerät mit Seriellen Anschluss, Pinbelegung ist vorhanden
Ein Arduino Mega 2560

ich möchte mit Arduino einen Wert zb: 0x11 über Serial1 senden und den Wert der über Serial1 zurück kommt im Serial-Monitor angezeigt werden.
Kabel sind verbunden, habe schon die einfachen Sachen mit read.serial1 probiert und habe schon mal die Bitrate vom Seriellen-Gegenüber rausbekommen (115200)

weiter komme ich aber nicht. habe schon mich belesen, finde aber nicht das richtige.

Vieleicht könnt Ihr mir helfen.

Gruß Rico

Hallo Rico,

erstmal Willkommen bei Arduino und viel Spaß damit :wink:

Zu deinem Problem:

Poste mal bitte deinen ganzen Sketch (dein geschriebenes Programm) und wenn möglich auch einen Schaltplan deiner Verdrahtung (hier jetzt evtl. nicht unbedingt notwenig, aber als Hinweis bei anderen Problemen :wink: ).
Ich hoffe, du hast bei der Verdrahtung auch berücksichtigt, dass die die richtig zusammen hängst:

Arduino - Empfänger
TX - RX
RX - TX

Also du darfst nicht die zwei gleichen Pins aufeinander legen, sondern musst sie vertauschen.

LG

Fipsi

void loop()
{
   if(Serial1.available())
     Serial.write(Serial1.read(());
}

Wenn du aber die Antwort erst auf ein Kommando hin bekommst, sollte man da noch etwas Logik einbauen, so dass erst ein neues Kommando gesendet wird, nachdem entweder eine Antwort erhalten hat oder eine bestimmte Zeit vergangen ist.

Ich nehme an, das Gerät arbeitet mit TTL-Pegel und nicht -12V/+12V RS-232

hi,

es gibt unter
Datei > Beispiele > Communication
den sketch MultiSerialMega, der macht genau, was Du brauchst.

gruß stefan

Hallo Eisbaer,

dashabe ich schon Probiert, allerdings ohne Erfolg.

Hallo Serenifly, ja sollte ein TTL-Pgel sein laut Technischen Informationen.

in dem Gerät ist selber ein Mircochip mit den man über den Serielen Anschluß komunizieren kann.
laut Technischen Infos kann ich nur Hex eingeben, Arduino sollte das ja automatisch umwandel können so wie ich verstanden habe, oder muss ich das als extra Zeile einfügen?

Gruß Gilthoniel

Der Arduino Serial Monitor sendet ASCII Zeichen, d.h. wenn du "11" eingibst wird 0x31 0x31 gesendet. Das kann man zwar wandeln, aber dann brauchst du noch ein Einlese-Routine für Strings.

Das ist zwar keine große Sache, aber besser ist du nimmst dann gleich das:

Da kannst Daten als Hex, Dezimal und Binär senden

Dabei gehe ich davon aus, dass du in einem Fenster was eingeben willst und das über den Arduino auf das Gerät weiterleiten willst.
Um auf dem Arduino Hex zu senden machst du einfach das:
Serial.write(0x11);

Da muss du aber wie gesagt aufpassen dass du das nicht zu schnell machst. Wenn man das nicht verlangsamt oder irgendwie mit der Antwort synchronisiert sendest du schon wieder was neues bevor das vorherige Telegramm überhaupt angekommen ist.

Ein entprellter Taster um was zu senden wäre auch eine Option

ersteinmal Danke für die Unterstützung;

folgende Fälle:
Serial an 0 drann; Code:

void setup() {
// initialize both serial ports:
Serial.begin(115200);
}

void loop() {
// read from port 0, send to port 1:
if (Serial.available()) {
int inByte = Serial.read();
Serial.write(inByte);
}
delay(500);
// read from port 1, send to port 0:
if (Serial.available()) {
int inByte = Serial.read();
Serial.println(inByte);
}
}

Werte bekomme ich; allerdings nicht die Gewünschten Werte sondern im Falschen Format (Thema Hex/ Dec); Gerät gibt auch akustisch eine Rückmeldung

Fall 2: Anschluß an Serial1 Programm mit der Vorgabe von User Eisbaer und delay dazwischen
ohne akustische Rückmeldung und ohne Ausgabe im SerialMonitor


Wo liegt mein Fehler? sollte ich es wohl nicht am 2.Weihnachtsfeiertag machen?

Du hast das doch so beschrieben dass du den PC an USB/Serial hängen willst. Und dein Gerät an Serial1. Und das dann durch den Arduino aufeinander umleiten willst.

Wenn das zutrifft dann programmiere es auch so. Mit Serial1 machst du da gar nichts! Da schickt das Empfangene auf der gleichen Schnittstelle wieder zurück

Und wenn du in einem Terminal Hex/Dezimal eingeben möchtest, verwende HTerm oder was ähnliches. Die Ausgabe kann man da auch formatieren.

Wenn du auf dem Arduino Dinge in Hex oder Binär ausgeben möchtest geht das mit Serial.print()/println():
http://arduino.cc/en/Serial/Print

Hallo,

@Serenifly soweit klappt es nun schon
Im Zweiten Schritt so dann ein Wert von einem NFC Chip / per Shield auf Serial / zu Serial1 geschickt werden