Discussion:
Hyperterminal HowTo
(zu alt für eine Antwort)
Ekim
2005-01-08 22:53:09 UTC
Permalink
hy,

kann mir jemand Tipps geben wie ich im Hyperterminal Befehle an ein via
COM-1 angeschlossenes Gerät senden kann?

Hab 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.

Leider erscheint bei mir überhaupt nichts. Deshalb wäre ich sehr dankbar,
wenn mir jemand hilfreiche Tipps/Links dazu sagen könnte,

vielen Dank im Voraus,

ekim!
Jörg Ott
2005-01-09 09:36:36 UTC
Permalink
Post by Ekim
hy,
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 Ekim
Hab 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 Ekim
Leider 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 Ekim
Deshalb 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
Ekim
2005-01-09 10:34:57 UTC
Permalink
Post by Jörg Ott
Post by Ekim
hy,
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 Ekim
Hab 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 Ekim
Leider 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 Ekim
Deshalb 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!
Norbert Hahn
2005-01-10 13:31:46 UTC
Permalink
Post by Ekim
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
Flusssteuerung heißt im engl. Handshake. Entweder in Hardware oder mit
CTRL-S und CTRL-Q in Software realisiert.
Post by Ekim
<SOH> ist das Startzeichen der Datenübertragung
das kann man ja mit CTRL-B noch eintippen, aber ...
Post by Ekim
<Prüf> ist die negative Prüfsumme, über den Befehl und nachfolgende
Parameter.
Da kann es Probleme geben. Ich wüsste nicht, wie man 7F eingibt.
Post by Ekim
Bei diesem Wert ist Bit 7 immer gesetzt.
(hat z.B. Befehl den Wert 31h, so muss Prüf den Wert CFh haben.)
Wie sind die Bits numeriert? von 0 bis 7 oder 1 bis 7?
Oben schreibst du "Datenübertragung : 19200 Baud, Even Parity"... ist da
wirklich 8-Bit gemeint?
Post by Ekim
nochmals das Befehlsformat: <SOH> '0' (-Summe) <EOT>
Welche Null ist das? Hex 00 oder Hex 30?
Post by Ekim
wie müssen die gesendeten Daten aussehen? einfach als Folge von Hexziffern?
02 00 FF 03 (und ENTER)
(also 02 für SOH, 00 für Befehlsnummer, FF für Prüfsumme, 03 für EOT)
Wie gibt man FF am Hyperterminal ein?

Ist da kein Beispiel dabei?

Ich habe sowas früher (TM) immer mit einem Programm gemacht, das mir die
ganze Verzierung um den Befehl und die Parameter abgenommen hat.

Norbert
Ekim
2005-01-10 16:34:29 UTC
Permalink
Post by Norbert Hahn
Post by Ekim
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
Flusssteuerung heißt im engl. Handshake. Entweder in Hardware oder mit
CTRL-S und CTRL-Q in Software realisiert.
Post by Ekim
<SOH> ist das Startzeichen der Datenübertragung
das kann man ja mit CTRL-B noch eintippen, aber ...
CTRL-B entspricht <SOH>, sehe ich das richtig? wo erfährt man sowas?
Post by Norbert Hahn
Post by Ekim
<Prüf> ist die negative Prüfsumme, über den Befehl und nachfolgende
Parameter.
Da kann es Probleme geben. Ich wüsste nicht, wie man 7F eingibt.
Das ist ja auch genau mein Problem...ich habe keine Ahnung in welchem Format
man die Befehle eingeben soll...soll das eine Hexfolge sein, oder eine
Bitfolge von 0 und 1en, oder ASCII-Zeichen, oder irgendwas ganz anderes?
Post by Norbert Hahn
Post by Ekim
Bei diesem Wert ist Bit 7 immer gesetzt.
(hat z.B. Befehl den Wert 31h, so muss Prüf den Wert CFh haben.)
Wie sind die Bits numeriert? von 0 bis 7 oder 1 bis 7?
Oben schreibst du "Datenübertragung : 19200 Baud, Even Parity"... ist da
wirklich 8-Bit gemeint?
Diese Angaben sind Auszüge aus dem Handbuch...und da steht schon deutlich
"19200 Baud, Even Parity, 8 bit, 2 Stoppbit"
Wie die Bits nun numeriert sind weiß ich leider selber nicht...es findet
sich auch kein Hinweis dazu ;-(
Post by Norbert Hahn
Post by Ekim
nochmals das Befehlsformat: <SOH> '0' (-Summe) <EOT>
Welche Null ist das? Hex 00 oder Hex 30?
auch hier gibt es keine näheren Angaben im Handbuch, aber da es unter
Hochkomma steht und diese 0 außerdem für den Befehl mit der Nummer 0 steht,
nehme ich an dass das ASCII-Zeichen mit dem Wert '0' gemeint ist...also Hex
30.
Post by Norbert Hahn
Post by Ekim
wie müssen die gesendeten Daten aussehen? einfach als Folge von Hexziffern?
02 00 FF 03 (und ENTER)
(also 02 für SOH, 00 für Befehlsnummer, FF für Prüfsumme, 03 für EOT)
Wie gibt man FF am Hyperterminal ein?
Ist da kein Beispiel dabei?
nein, es ist kein Beispiel dabei...nur genau die Informationen die ich
versucht habe hier zu beschreiben. Wie man FF am Hyperterminal eingeben soll
ist ja Inhalt meiner Frage - das wollte ich eigentlich in Erfahrung bringen
;-/
Post by Norbert Hahn
Ich habe sowas früher (TM) immer mit einem Programm gemacht, das mir die
ganze Verzierung um den Befehl und die Parameter abgenommen hat.
auch ich möchte später das ganze mit einem Java-Programm
automatisieren...ich dachte bloß, dass zum einfachen Test der Kommunikation
das Hyperterminal sehr geeignet wäre, da ich Fehlerquellen die durch das
Java-Programm entstehen könnten zu diesem Zeitpunkt noch ausschließen kann.

aber das Problem bleibt ja das gleiche...wenn ich das angenommen mit einem
Java-Programm mache, muss ich auch genau wissen in welchem Format ich die
Befehle ans Gerät senden muss um eine Antwort mit den gewünschten Daten zu
erhalten...
..gäbe es außer dem Hyperterminal noch eine andere Möglichkeit die
Kommunikation auf dieser Ebene noch möglchist einfach zu testen???
Irgendwelche Tipps?


mfg,
ekim
Markus Strehlau
2005-01-10 18:29:39 UTC
Permalink
Post by Ekim
CTRL-B entspricht <SOH>, sehe ich das richtig? wo erfährt man sowas?
CTRL-A entspricht Ascii 1
CTRL-B entspricht Ascii 2
...
CTRL-Z entspricht Ascii 26

Googeln nach ascii tabelle ergab als 1. Link
http://www.torsten-horn.de/techdocs/ascii.htm



Markus
Ekim
2005-01-10 22:27:03 UTC
Permalink
Post by Markus Strehlau
Post by Ekim
CTRL-B entspricht <SOH>, sehe ich das richtig? wo erfährt man sowas?
CTRL-A entspricht Ascii 1
CTRL-B entspricht Ascii 2
...
CTRL-Z entspricht Ascii 26
Googeln nach ascii tabelle ergab als 1. Link
http://www.torsten-horn.de/techdocs/ascii.htm
Markus
thanks
Ansgar Strickerschmidt
2005-01-12 09:55:45 UTC
Permalink
Post by Ekim
Post by Norbert Hahn
Wie gibt man FF am Hyperterminal ein?
<ALT> gedrückt halten und '255' auf dem Ziffernblock eingeben (allgemein
gesprochen: den Dezimalwert des gewünschten ASCII-Codes - '7F' wird dann
zu '127' usw.).
Damit kann man jedes Zeichen erzeugen.
Post by Ekim
aber das Problem bleibt ja das gleiche...wenn ich das angenommen mit einem
Java-Programm mache, muss ich auch genau wissen in welchem Format ich die
Befehle ans Gerät senden muss um eine Antwort mit den gewünschten Daten
zu erhalten...
Es kann sein, dass Du von einem ACK gar nichts zu sehen bekommst, weil es
kein darstellbares Zeichen ist...

Ich würde mir in irgendetwas Hardwarenahem (z.B. ein altes Turbo Pascal
unter DOS) ein Progrämmchen schreiben, das nichts anderes macht, als
HEX-Codes entgegenzunehmen, in ein 8-Bit-Zeichen umzuwandeln und an die
serielle Schnittstelle auszugeben sowie die Antwort zurück umzuwandeln und
darzustellen.

Ansgar
--
Mails an die angegebene Adresse erreichen mich - oder auch nicht! Gueltige
Adresse gibt's bei Bedarf!
Mail to the given e-mail address may or may not reach me! Valid response
address will be given when required!
Michael Hemmer
2005-01-13 09:56:44 UTC
Permalink
Post by Ansgar Strickerschmidt
Post by Norbert Hahn
Wie gibt man FF am Hyperterminal ein?
<ALT> gedrückt halten und '255' auf dem Ziffernblock eingeben
Vorsicht, Falle - "0255", nicht "255"! Ohne die führende Null wird jede
Zahl größer als 127 (0x7F) als Code im DOS-Zeichensatz interpretiert,
der entsprechende Buchstabe im Windows-Zeichensatz gesucht und *dessen*
Code gesendet.

Welch lustige Verwirrung dadurch entsteht, lässt sich in der
Zeichentabelle von Windows XP (auch 2000?) schön sehen, wenn man
"DOS: Westeuropa" als "Zeichensatz" auswählt. Fährt man dann mit der
Maus über einen Buchstaben, werden Windows-(= Unicode-) und DOS-
Zeichencode angezeigt. Alt+255 erzeugt zum Beispiel 0x98 statt 0xFF
(was Alt+0255 hingegen korrekt tut).

Gruß,

Michael
Jörg Ott
2005-01-10 19:54:29 UTC
Permalink
Post by Norbert Hahn
Post by Ekim
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
Flusssteuerung heißt im engl. Handshake. Entweder in Hardware oder mit
CTRL-S und CTRL-Q in Software realisiert.
Zu testzwecken würde ich es erst einmal gan ohne Handshake probieren.
Post by Norbert Hahn
Post by Ekim
<SOH> ist das Startzeichen der Datenübertragung
das kann man ja mit CTRL-B noch eintippen, aber ...
Post by Ekim
<Prüf> ist die negative Prüfsumme, über den Befehl und nachfolgende
Parameter.
Da kann es Probleme geben. Ich wüsste nicht, wie man 7F eingibt.
Im Hex-Editor erstellte Befehlsdatei senden?
--
Gruß Jörg
Jörg Ott
2005-01-10 19:58:15 UTC
Permalink
Post by Jörg Ott
Post by Norbert Hahn
Post by Ekim
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
Flusssteuerung heißt im engl. Handshake. Entweder in Hardware oder
mit CTRL-S und CTRL-Q in Software realisiert.
Zu testzwecken würde ich es erst einmal gan ohne Handshake probieren.
Post by Norbert Hahn
Post by Ekim
<SOH> ist das Startzeichen der Datenübertragung
das kann man ja mit CTRL-B noch eintippen, aber ...
Post by Ekim
<Prüf> ist die negative Prüfsumme, über den Befehl und nachfolgende
Parameter.
Da kann es Probleme geben. Ich wüsste nicht, wie man 7F eingibt.
Im Hex-Editor erstellte Befehlsdatei senden?
BTW: Es gibt Zwischenstecker für RS-232, mit denen man die Kommunikation
zwischen Gerät und Software X über einen 2. COM-Port abhören kann. Das
führt häufig schneller zum Ziel als Selbstgestricktes nach Handbuch.
--
Gruß Jörg
Ekim
2005-01-14 19:39:56 UTC
Permalink
Post by Jörg Ott
Post by Jörg Ott
Post by Norbert Hahn
Post by Ekim
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
Flusssteuerung heißt im engl. Handshake. Entweder in Hardware oder
mit CTRL-S und CTRL-Q in Software realisiert.
Zu testzwecken würde ich es erst einmal gan ohne Handshake probieren.
Post by Norbert Hahn
Post by Ekim
<SOH> ist das Startzeichen der Datenübertragung
das kann man ja mit CTRL-B noch eintippen, aber ...
Post by Ekim
<Prüf> ist die negative Prüfsumme, über den Befehl und nachfolgende
Parameter.
Da kann es Probleme geben. Ich wüsste nicht, wie man 7F eingibt.
Im Hex-Editor erstellte Befehlsdatei senden?
BTW: Es gibt Zwischenstecker für RS-232, mit denen man die Kommunikation
zwischen Gerät und Software X über einen 2. COM-Port abhören kann. Das
führt häufig schneller zum Ziel als Selbstgestricktes nach Handbuch.
--
Gruß Jörg
naja, vielen Dank erstmal allen die sich bei dieser Diskussion beteiligt
haben.

Mein ursprüngliches Problem konnte ich somit lösen, also ich weiß nun wie
ich die Daten korrekt eingeben kann - ich sende mittlerweile also die
richtigen Daten an den Funkempfänger.

Unglücklicherweise erhalte ich aber von diesem keine Antwort - eigentlich
sollte ich aber. Ich vermute dass das daran liegt, weil mir bislang im
Hyperterminal keine Möglichkeit bewusst ist, wie ich die Leitung DTR setzen
und RTS löschen kann - was im Handbuch ja gefordert wird. Gibt es so eine
Möglichkeit?

Mittlerweile bin ich auch vom Hyperterminal weggegangen und habe mir ein
kleines Java-Programm geschrieben, das genau dieselben Daten sendet und
anschließend horcht, ob etwas zurück kommt - der Vorteil bei Java ist, dass
ich hier die Leitungen DTR und RTS nach meinen Vorstellungen setzen kann -
doch leider gilt auch hier (noch): --> keine Antwort vom Interface ;-(

Vielleicht hat ja noch jemand eine Anregung was ich falsch mache!?

Auf jeden Fall vielen Dank,

ekim!
Jörg Ott
2005-01-15 10:12:37 UTC
Permalink
Post by Ekim
[...]
naja, vielen Dank erstmal allen die sich bei dieser Diskussion
beteiligt haben.
Mein ursprüngliches Problem konnte ich somit lösen, also ich weiß nun
wie ich die Daten korrekt eingeben kann - ich sende mittlerweile also
die richtigen Daten an den Funkempfänger.
Zumindest glaubst du das. Ob die Daten wirklich korrekt sind, kannst du
ja nur an einer Reaktion des Empfängers erkennen.
Post by Ekim
Unglücklicherweise erhalte ich aber von diesem keine Antwort -
eigentlich sollte ich aber. Ich vermute dass das daran liegt, weil
mir bislang im Hyperterminal keine Möglichkeit bewusst ist, wie ich
die Leitung DTR setzen und RTS löschen kann - was im Handbuch ja
gefordert wird. Gibt es so eine Möglichkeit?
Das ist der sogenannte Hardware-Handhake (Flussteuerung).
Post by Ekim
Mittlerweile bin ich auch vom Hyperterminal weggegangen und habe mir
ein kleines Java-Programm geschrieben, das genau dieselben Daten
sendet und anschließend horcht, ob etwas zurück kommt - der Vorteil
bei Java ist, dass ich hier die Leitungen DTR und RTS nach meinen
Vorstellungen setzen kann - doch leider gilt auch hier (noch): -->
keine Antwort vom Interface ;-(
Vielleicht hat ja noch jemand eine Anregung was ich falsch mache!?
Fragst du denn den DTR/RTS-Status ab, bevor du sendest? Im Zweifelsfall
ist denke ich der Handshake Schuld daran, dass nichts passiert. Dieser
Mechanismus ist normalerweise auch ziemlich überflüsssig, ich habe in
solchen Fällen ein selbstgebautes RS232-Kabel mit kurzgeschlossenen
CTS/DTS RTS/RTR-Leitungen verwendet. Damit erteilt das Gerät sich dann
immer selbst die Sendefreigabe, wenn es Daten loswerden will. Solche
Loopback-Schaltungen sind z.B. hier gezeigt:

http://www.orthoclinical.com/Support/v51Specs.aspx?id=2

Wie du siehst gibt es "das" RS-232-Kabel nicht, sondern reichlich
Varianten.
--
Gruß Jörg
Ekim
2005-01-15 10:40:55 UTC
Permalink
Post by Jörg Ott
Post by Ekim
[...]
naja, vielen Dank erstmal allen die sich bei dieser Diskussion
beteiligt haben.
Mein ursprüngliches Problem konnte ich somit lösen, also ich weiß nun
wie ich die Daten korrekt eingeben kann - ich sende mittlerweile also
die richtigen Daten an den Funkempfänger.
Zumindest glaubst du das. Ob die Daten wirklich korrekt sind, kannst du
ja nur an einer Reaktion des Empfängers erkennen.
Die Daten sind korrekt, weil ich das mittels einer zwischengeschalteten
Serial-Port-Überwachung ansehen kann - und da sind die Daten gleich als
jene, die mit der mitgelieferten Auswertesoftware gesendet werden.
Post by Jörg Ott
Post by Ekim
Unglücklicherweise erhalte ich aber von diesem keine Antwort -
eigentlich sollte ich aber. Ich vermute dass das daran liegt, weil
mir bislang im Hyperterminal keine Möglichkeit bewusst ist, wie ich
die Leitung DTR setzen und RTS löschen kann - was im Handbuch ja
gefordert wird. Gibt es so eine Möglichkeit?
Das ist der sogenannte Hardware-Handhake (Flussteuerung).
Aha! - aber meist steht anstatt Hardware-Handshake die Leitungen RTS/CTS
bzw. die Gegenstücke RTR/DTS - hat aber auch DTR was damit zu tun?
Post by Jörg Ott
Post by Ekim
Mittlerweile bin ich auch vom Hyperterminal weggegangen und habe mir
ein kleines Java-Programm geschrieben, das genau dieselben Daten
sendet und anschließend horcht, ob etwas zurück kommt - der Vorteil
bei Java ist, dass ich hier die Leitungen DTR und RTS nach meinen
Vorstellungen setzen kann - doch leider gilt auch hier (noch): -->
keine Antwort vom Interface ;-(
Vielleicht hat ja noch jemand eine Anregung was ich falsch mache!?
Fragst du denn den DTR/RTS-Status ab, bevor du sendest? Im Zweifelsfall
ist denke ich der Handshake Schuld daran, dass nichts passiert. Dieser
Mechanismus ist normalerweise auch ziemlich überflüsssig, ich habe in
solchen Fällen ein selbstgebautes RS232-Kabel mit kurzgeschlossenen
CTS/DTS RTS/RTR-Leitungen verwendet. Damit erteilt das Gerät sich dann
immer selbst die Sendefreigabe, wenn es Daten loswerden will. Solche
http://www.orthoclinical.com/Support/v51Specs.aspx?id=2
Wie du siehst gibt es "das" RS-232-Kabel nicht, sondern reichlich
Varianten.
Habe es mittlerweile geschafft, die Daten korrekt zu senden und eine
entsprechende Antwort vom Interface zu bekommen.
Mein dummer Fehler war der, dass ich im Java-Programm zuerst die Leitungen
DTR/RTS gesetzt habe, und erst danach die Connection-Settings (19200
baud,...) spezifiziert habe - was in dieser Reihenfolge aber leider nicht
funktioniert!

many thx,
ekim

Ekim
2005-01-10 22:34:43 UTC
Permalink
Post by Jörg Ott
Post by Norbert Hahn
Post by Ekim
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
Flusssteuerung heißt im engl. Handshake. Entweder in Hardware oder mit
CTRL-S und CTRL-Q in Software realisiert.
Zu testzwecken würde ich es erst einmal gan ohne Handshake probieren.
Post by Norbert Hahn
Post by Ekim
<SOH> ist das Startzeichen der Datenübertragung
das kann man ja mit CTRL-B noch eintippen, aber ...
Post by Ekim
<Prüf> ist die negative Prüfsumme, über den Befehl und nachfolgende
Parameter.
Da kann es Probleme geben. Ich wüsste nicht, wie man 7F eingibt.
Im Hex-Editor erstellte Befehlsdatei senden?
Danke für den Hinweis - klingt eigentlich einleuchtend ;-)
Habe mir daher gleich einen Hexeditor besorgt und eine Datei erstellt, die
meiner Meinung nach das richtige Format haben sollte. Sie sieht so aus:
01 30 D0 04 (<-- Hexwerte)
<SOH> <Befehlsnummer '0'> <negative Prüfsumme> <EOT> (<-- dem solls
entsprechen)

Hab sodann die Datei gespeichert und im Hyperterminal mit den im Handbuch
angegebenen Verbindungsdaten (19200 baud, 8 bit, 2 stoppbit, even parity)
eine Verbindung aufgebaut...dann auf Übertragung--> Datei senden
(verwendetes Protokoll: Z-Modem mit Wiederherstellung)

Daraufhin erhalte ich aber leider nach wenigen ms die Fehlermeldung
"Unzulässiges Nachrichtenformat".
Da diese Fehlermeldung in einer Message-Box erscheint, nehme ich an, dass
das Format der Hexdatei an sich nicht stimmt und Hyperterminal damit nicht
klar kommt, und ich denke nicht dass die Fehlermeldung von meinem
Funk-Empfänger der die Daten erhalten soll, kommt, oder etwa doch??

Nochwas: Habe den Tipp berücksichtigt und vorerst die Flusskontrolle
ausgeschaltet. Es funktioniert aber sowohl mit als auch ohne nicht.

Was mache ich noch falsch???

thx again,
ekim
Norbert Hahn
2005-01-11 11:05:59 UTC
Permalink
Post by Ekim
Habe mir daher gleich einen Hexeditor besorgt und eine Datei erstellt, die
01 30 D0 04 (<-- Hexwerte)
<SOH> <Befehlsnummer '0'> <negative Prüfsumme> <EOT> (<-- dem solls
entsprechen)
Dann probier auch gleich mal die Null statt 0x30 mit 0x00 zu senden.
Post by Ekim
Hab sodann die Datei gespeichert und im Hyperterminal mit den im Handbuch
angegebenen Verbindungsdaten (19200 baud, 8 bit, 2 stoppbit, even parity)
eine Verbindung aufgebaut...dann auf Übertragung--> Datei senden
(verwendetes Protokoll: Z-Modem mit Wiederherstellung)
Daraufhin erhalte ich aber leider nach wenigen ms die Fehlermeldung
"Unzulässiges Nachrichtenformat".
Das Hyperterminal filtert u.U. Steuerzeichen heraus. Warum benutzt
Post by Ekim
Was mache ich noch falsch???
Falsches Betriebssystem oder falsches Programm?

Norbert
Ansgar Strickerschmidt
2005-01-12 10:07:29 UTC
Permalink
Post by Ekim
Post by Jörg Ott
Im Hex-Editor erstellte Befehlsdatei senden?
Danke für den Hinweis - klingt eigentlich einleuchtend ;-)
Habe mir daher gleich einen Hexeditor besorgt und eine Datei erstellt, die
01 30 D0 04 (<-- Hexwerte)
<SOH> <Befehlsnummer '0'> <negative Prüfsumme> <EOT> (<-- dem solls
entsprechen)
Ähm, ist die Prüfsumme richtig? 30 = 00110000 binär -> Prüfsumme müsste
11001111 = CF sein (Einer-Komplement). Außerdem solltest Du prüfen, ob mit
Befehl '0' das Zeichen '0' (0x30, dezimal 48) oder ASCII-0 (0x00) gemeint
ist.
Post by Ekim
Hab sodann die Datei gespeichert und im Hyperterminal mit den im Handbuch
angegebenen Verbindungsdaten (19200 baud, 8 bit, 2 stoppbit, even parity)
eine Verbindung aufgebaut...dann auf Übertragung--> Datei senden
(verwendetes Protokoll: Z-Modem mit Wiederherstellung)
Autsch. Du musst als ASCII (bzw. nacktes Binärformat, da kommen auch alle
Steuerzeichen mit) senden.

Ansgar
--
Mails an die angegebene Adresse erreichen mich - oder auch nicht! Gueltige
Adresse gibt's bei Bedarf!
Mail to the given e-mail address may or may not reach me! Valid response
address will be given when required!
Loading...