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ß
@ 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.
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.
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.
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;-)
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!
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 :)
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
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.
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".
@ 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