Forum: Mikrocontroller und Digitale Elektronik Befehl per RS232 über Hyper Terminal senden


von Bernd (Gast)


Lesenswert?

Hallo!

Ich muss Befehle über eine RS232 Schnittstelle an einen Kontroller 
senden (19200 Baud, 8Datenbit, 1 Stoppbit, keine Parität und kein 
Handshake). Ich würde dies mit dem Hyperterminal machen.

Der Aufbau der Kommandostrings ist wie folgt:
Mnemonic (2 Großbuchstaben), Leerzeichen, Parameter, Carriage Returen 
als Abschlusszeichen. Als Quittierung wird ein Antwortstring 
zurückgesendet.

Beispielbefehl: AB {Parameter1, Parameter2)

Habe das noch nie gemacht, deswegen meine Fragen dazu:

Kann ich hier den Befehlsstring einfach im Fenster des Hyperterminal 
eingeben und Enter drücken, dann wird er Befehl gesendet? Was genau ist 
das Carriage Return, ist das das normale Enter, mit dem ich das Senden 
bestätige? Wie wird zwischen dem String zum Senden und dem empfangenen 
unterschieden?

Welche Pins der RS232 Schnittstelle benötige ich dazu? Reichen hier RX, 
TX und GND oder muss ich sonst noch welche berücksichtigen?

Gibt es sonst noch etwas,das ich hier beachten muss?
Vielen Dank für Eure Hilfe!
Gruß

von Falk B. (falk)


Lesenswert?

@ Bernd (Gast)

>Kann ich hier den Befehlsstring einfach im Fenster des Hyperterminal
>eingeben und Enter drücken, dann wird er Befehl gesendet?

Ja. Genauer, die einzelen Zeichen werden schon gesendet, wenn du sie 
eintippst.

> Was genau ist
>das Carriage Return, ist das das normale Enter, mit dem ich das Senden
>bestätige?

Ja.

> Wie wird zwischen dem String zum Senden und dem empfangenen
>unterschieden?

Gar nicht, es wird immer empfangen.

>Welche Pins der RS232 Schnittstelle benötige ich dazu? Reichen hier RX,
>TX und GND

Ja.

>oder muss ich sonst noch welche berücksichtigen?

Meist nicht.

von Dex (Gast)


Lesenswert?

Befehlsstring kannst du so senden, musst aber darauf achten dass du ihn 
richtig dekodierst.

Carriage return ist "\r" das bedeutet dass der cursor zum anfang der 
zeile springt.

Zu dem rest verweise ich dich auf das tutorial hier auf der Seite.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Dex schrieb:
> Carriage return ist "\r" das bedeutet dass der cursor zum anfang der
> zeile springt.

Genau DAS sendet eine vernünftige Terminal-Emulation, wenn man die dicke 
Carriage-Return-Taste (CR, unterhalb von Backspace, oberhalb der rechten 
Shift-Taste) drückt. Unter Umständen tut das Gleiche auch die 
eigentliche ENTER-Taste (ganz rechts neben dem Nummerntasten-Feld), wenn 
die Terminal-Emulation nicht gerade auf "Application Keypad" 
umgeschaltet ist.

Bei den meisten Terminal-Emulationen kann man das Verhalten der CR-Taste 
aber einstellen. Richtig wäre "CR sendet CR" und nicht etwa "LF" bzw. 
"CRLF".

Ich empfehle aber statt HyperTerminal besser PuTTY. Das arbeitet auf 
jeden Fall korrekt in dieser Hinsicht (Default-Einstellung). Ausserdem 
muss man nicht erst das Hardware-Handshaking (RTS/CTS) explizit 
abschalten, damit es auch mit einer Dreidrahtverbindung (RX/TX/GND) 
funktioniert. Bei Hyper-Terminal sind da schon einige Leute drüber 
gestolpert.

von Dex (Gast)


Lesenswert?

Frank M. schrieb:
> Dex schrieb:
>> Carriage return ist "\r" das bedeutet dass der cursor zum anfang der
>> zeile springt.
>
> Genau DAS sendet eine vernünftige Terminal-Emulation, wenn man die dicke
> Carriage-Return-Taste (CR, unterhalb von Backspace, oberhalb der rechten
> Shift-Taste) drückt. Unter Umständen tut das Gleiche auch die
> eigentliche ENTER-Taste (ganz rechts neben dem Nummerntasten-Feld), wenn
> die Terminal-Emulation nicht gerade auf "Application Keypad"
> umgeschaltet ist.


ja das stimmt, mal angenommen er möchte aber irgendwann befehle 
automatisch senden, ohne sie selbst erstmal einzutippen, dann ist das 
wissen über die bedeutung von \r  nicht verkehrt;-)

von Bernd (Gast)


Lesenswert?

Danke zunächst für eure antworten!

Falk Brunner schrieb:
> Ja. Genauer, die einzelen Zeichen werden schon gesendet, wenn du sie
> eintippst.

Das bedeutet, dass das erste Zeichen schon gesendet wurde, bevor ich das 
zweite eintippe? Was ist denn dann, wenn ich das ganz langsam eintippe, 
ist das egal?



Falk Brunner schrieb:
>> Wie wird zwischen dem String zum Senden und dem empfangenen
>>unterschieden?
>
> Gar nicht, es wird immer empfangen

Ich meine, ich sehe dann im Fenster den Befehl, den ich gesendet hab. 
Nach einen Befehl kommt eine Bestätigung zurück (ein einfacher String). 
Wo steht der dann? Auch im Fenster gleich nach dem gesendeten Befehl? 
Dann würden beide Strings (gesendet und empfangen) dastehn, das meinte 
ich...

Dex schrieb:
> Befehlsstring kannst du so senden, musst aber darauf achten dass du ihn
> richtig dekodierst.

Was meinst du damit?

THX für eure Hilfe!

von Jürgen D. (poster)


Lesenswert?

Bernd schrieb:
> Was ist denn dann, wenn ich das ganz langsam eintippe,
> ist das egal?

Das must du selber wissen wie du das auf der anderen Seite gelöst hast.
Ich kenne da Protokolle die erlauben keine Pausen zwischen den Zeichen, 
anderen ist das egal.

Bei den meisten Terminalprogrammen kann man was wie "Echo" einstellen.
Ist das eingeschaltet werden die eigenen Zeichen mit dargestellt.

Es gibt Gegenstellen die empfangene Zeichen zurück senden,
da hat man dann DDooppeelleeffffeekkttee am Terminalfenster :)

von Bernd (Gast)


Lesenswert?

Jürgen D. schrieb:
> Das must du selber wissen wie du das auf der anderen Seite gelöst hast.
> Ich kenne da Protokolle die erlauben keine Pausen zwischen den Zeichen,
> anderen ist das egal.

Kann man das im Hyperterminal oder PuTTy auch einstellen, dass die 
Befehle erst mit Enter gesendet werden?

Jürgen D. schrieb:
> Bei den meisten Terminalprogrammen kann man was wie "Echo" einstellen.
> Ist das eingeschaltet werden die eigenen Zeichen mit dargestellt.

Ja, das habe ich schon eingestellt, jetzt sieht man auch die 
eingegebenen Zeichen; deswegen auch meien Frage, was man alles sieht, 
wenn eine Bestätigung zurückgesendet kommt...

Dank, lG

von Jürgen D. (poster)


Lesenswert?

Bernd schrieb:
> Kann man das im Hyperterminal oder PuTTy auch einstellen, dass die
> Befehle erst mit Enter gesendet werden?

Bei Hyperterm auf keinen  Fall, Putty weis ich nicht glaube aber auch 
nicht.
Ich verwende für sowas gerne Term95. War mal beim Nortencomander dabei, 
damals zu DOS Zeiten :)
Da kann man beliebige vorher zusamengebaute Telegramme auf die 
Funktionstasten legen.
Aber da wird es bestimmt auch was neueres geben.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Bernd schrieb:
> Kann man das im Hyperterminal oder PuTTy auch einstellen, dass die
> Befehle erst mit Enter gesendet werden?

Könnte in PuTTY unter dem Einstellungs-Menü "Terminal" funktionieren:

Local Line Editing: Force on

Da findest Du übrigens auch das "Local Echo".

von Falk B. (falk)


Lesenswert?

@ Bernd (Gast)

>> Ja. Genauer, die einzelen Zeichen werden schon gesendet, wenn du sie
>> eintippst.

>Das bedeutet, dass das erste Zeichen schon gesendet wurde, bevor ich das
>zweite eintippe?

Ja.

> Was ist denn dann, wenn ich das ganz langsam eintippe,
>ist das egal?

Bei den meisten Geräten, ja.

>Ich meine, ich sehe dann im Fenster den Befehl, den ich gesendet hab.
>Nach einen Befehl kommt eine Bestätigung zurück (ein einfacher String).
>Wo steht der dann? Auch im Fenster gleich nach dem gesendeten Befehl?

Ja.

>Dann würden beide Strings (gesendet und empfangen) dastehn, das meinte
>ich...

Ist auch so. Kann man ggf. umstellen, je nachdem, was das angeschlossene 
Gerät macht.

1. Möglichkeit. Das Gerät sendet jedes empfangene Zeichen direkt auch 
zurück. Dann sieht man immer eingegebene Zeichen + Antwort vom Gerät

2. Möglichkeit. Das Gerät sendet nur seine Antwort zurück. Dann sieht 
man im Normalfall nur die Antwort vom Gerät

3. Möglichkeit. Das Gerät sendet nur seine Antwort zurück, im 
Terminalporgramm ist aber "Lokales Echo" eingestellt. Dann sieht man 
eingegebene Zeichen + Antwort vom Gerät

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.