Post by Jörg OttPost by Ekimhy,
kann mir jemand Tipps geben wie ich im Hyperterminal Befehle an ein
via COM-1 angeschlossenes Gerät senden kann?
Tasten drücken. Jedes Zeichen, das du eingibst, wird unmittelbar über
die COM-Schnittstelle ausgegeben.
Post by EkimHab irgendwo gelesen dass man das direkt machen kann...wenn man z.B.
"AT" und Enter eingibt, sollte OK erscheinen und man daraufhin
weitere Befehle eingeben können.
Das gilt vermutlich für ein bestimmtes Gerät, das auf den Befehl "AT"
mit "OK" antwortet.
Post by EkimLeider erscheint bei mir überhaupt nichts.
Dann sendest du die falschen Befehle, oder das Gerät, mit dem du zu
kommunizieren versuchst, gibt prinzipiell keine Antwort aus, oder die
Schnittstellenkonfiguration (Übertragungsrate, Parität, Stoppbits,
Flusskontrolle...) stimmt nicht überein. Das müsste in der
Geräte-Dokumentation stehen.
Deine Eingabe erscheint nur dann im Terminalfenster, wenn du in der
ASCII-Konfiguration die Option "lokales Echo" aktivierst.
Post by EkimDeshalb wäre ich sehr
dankbar, wenn mir jemand hilfreiche Tipps/Links dazu sagen könnte,
Es wäre nicht schlecht, wenn du verraten würdest, um welches Gerät es
geht.
--
Gruß Jörg
Erstmal danke für deine raschen Antworten.
Okay, um etwas konkreter zu werden: es handelt sich um einen Funkempfänger,
der Wetterdaten von bestimmten Sensoren empfängt. Diese können dann vom
Funkempfänger via RS-232 ausgelesen werden.
Um den Verbindungsablauf und die Struktur der Daten kennen zu lernen, möchte
ich das Gerät testweise via Hyperterminal ansteuern. Leider habe ich zur
Zeit wenig Ahnung, wie man das konkret machen muss.
In der Doku finden sich dazu einige Hinweise, die ich aber nicht ausreichend
deuten kann.
Es gibt folgende Angaben:
Datenübertragung : 19200 Baud, Even Parity, 8 Bit, 2 Stop
// diese Daten habe ich beim Aufbau der Verbindung gesetzt - leider findet
sich keine Angabe zur verwendeten Flusssteuerung (was auch immer das ist,
ich denke das Handshake-Verfahren!?) - habe dies deshalb auf Default-Wert
("Hardware") gelassen
Datenrahmen bei Befehlen vom PC zum PC-Funk-Interface:
<SOH> <Befehl> [Para] <Prüf> <EOT>
// so soll vermutlich jeder Befehl den ich an das Gerät sende formatiert
sein
<SOH> ist das Startzeichen der Datenübertragung
// soviel ich rausgefunden habe ist dies das ASCII-Zeichen 02h
<Befehl> ist der Befehl für das Interface
// hier gibt's die Befehlsnummer (sind woanders dokumentiert) 0 - 6
[Para] sind eventuelle Parameter. Bei den Parametern ist Bit 7 immer
gesetzt
(damit sie nicht als Steuerzeichen erkannt werden).
<Prüf> ist die negative Prüfsumme, über den Befehl und nachfolgende
Parameter.
Bei diesem Wert ist Bit 7 immer gesetzt.
(hat z.B. Befehl den Wert 31h, so muss Prüf den Wert CFh haben.)
// meinen Berechnungen zu Folge müsste dann die Prüfsumme für den
Befehlswert (dezimal) 1 der hier sein: 255 - 1 = 254 (und in Hexformat
umwandeln, also FE)
<EOT> ist das Endezeichen der Datenübertragung
// entspricht ASCII-Zeichen 03h
Beschreibung eines einfachen Befehls:
Kommunikation aktivieren:
<SOH> '0' (-Summe) <EOT>
Dient zur dazu, die Kommunikation mit dem Interface aufzubauen.
Antwort des Interfaces: (1 Byte)
<ACK>
// ich nehme an, wenn ich den Befehl korrekt an das Interface sende, sollte
ich auf der Terminal-Eingabe irgendwie das <ACK> Zeichen erkennen können
// bislang habe ich das noch nicht geschafft --> es kommt auch nix zurück
Dazu noch allgemeine Hinweise:
Aktivierung der Datenübertragung:
Im Normalzustand ist das PC-Funk-Interface inaktiv und reagiert nicht auf
V24-
Signale.
// das Gerät sendet also nicht von sich aus Daten, sondern nur auf
Aufforderung hin - deswegen ist es für mich ja so wichtig, die Befehle
korrekt senden zu können
. Zur Spannungsversorgung des Interfaces muss DTR gesetzt (+12V) und
RTS gelöscht (-12V) werden.
// muss ich dies auch irgendwie gesondert behandeln?
. Zur Aktivierung ist solange der Aktivierungs-Befehl zum Interface zu
senden,
bis dieses antwortet.
. Das PC-Funk-Interface aktiviert seine Schnittstelle sobald ein Zeichen
ankommt.
Allerdings dauert es ca. 30ms bis der Oszillator stabil läuft und Befehle
ordnungsgemäß empfangen werden.
. Nachdem das Interface auf den Aktivierungs-Befehl geantwortet hat, kann
die Datenübertragung beginnen.
Die Fragen, die sich mir nun vorwiegend stellen, sind:
- wie kann ich korrekt einen Befehl absenden - z.B. anhand des oben
beschriebenen Befehls "Kommunikation aktivieren"?
dazu meine Überlegungen:
nochmals das Befehlsformat: <SOH> '0' (-Summe) <EOT>
wie müssen die gesendeten Daten aussehen? einfach als Folge von Hexziffern?
z.B. so:
02 00 FF 03 (und ENTER)
(also 02 für SOH, 00 für Befehlsnummer, FF für Prüfsumme, 03 für EOT)
// nun würde ich mir ein ACK erwarten
Ich hoffe, ich konnte mein Problem genau beschreiben und wäre sehr sehr sehr
dankbar, wenn mir jemand Tipps fürs erfolgreiche Senden eines Befehls geben
könnte,
many thx,
ekim!