Forum: Mikrocontroller und Digitale Elektronik Hyperterminal unterschiedliche Einstellg für Senden und Emp


von Karl-Alfred Römer (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe eine serielle Funkuhr. Deren Daten möchte ich mit
Hyperterminal auslesen. Dazu muss ich ihr erst mal ein kleines
o und carriage Return senden.  Dann soll die Uhr mit einem 16 Byte
langen ASCII-String antworten, der Uhrzeit und Datum im Klartext
anzeigt.

Das Problem:
Laut mitgeliefertem Hilfetext hat die Uhr für Senden und Empfangen
unterschiedliche Schnittstellenparameter.

Daten zur Funkuhr
Geschwindigkeit:    300 bps
      Datenbits:    8       !!!
    Paritätsbit:    nein    !!!
      Stoppbits:    2


Antworten der Funkuhr
Geschwindigkeit:    300 bps
      Datenbits:    7
    Paritätsbit:    gerade
      Stoppbits:    2

Mit den Einstellungen zum Senden kann ich Daten zur Uhr senden,
die dann auch mit dem 16 Byte langen Uhrzeit-String antwortet.
Aber die Antwort ist nicht direkt lesbar, weil die Anzahl der
Datenbits ja falsch ist.

Gibt es einen Trick, wie ich gleichzeitig unterschiedliche
Einstellungen für Senden und Empfangen einstellen kann, so dass
ich einerseits korrekt senden und andererseits wieder korrekt
empfangen kann?

Danke für Eure Antworten und viele Grüße
Karl

von __ _. (unrouted)


Lesenswert?

Hallo,

wie wäre es, wenn du das Terminal auf die Sendeparameter einstellst und
die empfangenen Datenbytes (8Bit=7Daten+1Parity) in der anschließenden
Weiterverarbeitung einfach mit einem Shift nach rechts korrigierst..

(DDDDDDDP >> 1) = 0DDDDDDD

(Entspricht einer Integer division durch 2)

Ich glaube nicht das irgendein Terminal von haus aus sowas
unterstützt!

Beim Bray Terminal http://bray.velenje.cx/avr/terminal/ hab ich auch
eine kleine Skript-Funktion entdeckt, damit könntest du vielleicht die
empfangenen Bytes vor dem Anzeigen durch 2 teilen und dann ausgeben.

von Christian Rötzer (Gast)


Lesenswert?

Ich denke, Du hast Glück.
Du stellst also Hyperterminal auf 300 Baud, 8 Datenbits, No Parity, 2
Stoppbits.
Somit kannst Du der Uhr schon mal in den Hintern treten. Empfangen
kannst Du auch, aus dem Parity wird einfach das oberste Datenbit. Das
sieht in Hyperterminal dann wahrscheinlich doof aus, mit einer
selbstgestrickten Anwendung, kannst Du das Parity aber einfach per
Und-Verknüpfung mit 0x7F ausblenden oder evtl. sogar auswerten...

von __ _. (unrouted)


Lesenswert?

Sorry, das mit dem Shift war ein Mist!
Hatte nicht daran gedacht, dass zuerst das LSB gesendet wird....

von Karl-Alfred Römer (Gast)


Lesenswert?

Müsste ich denn nicht beim ersten Byte 1 Bit schieben, beim zweiten
Byte 2 Bit, beim dritten Byte 3 Bit usw. Müßte ja bei jedem weiteren
Byte ein Bit verrutschen das Ganze oder?

Falls nicht, müßte ich ja nur wissen, welcher Ziffer welches
Sonderzeichen zugeordnet ist. Und es sind ja nur 10 Ziffern.

von Christian Rötzer (Gast)


Lesenswert?

Warum solltest Du das tun wollen? Denke nicht zu kompliziert. Probier's
aus!

50% der Zeichen, die aus der Uhr kommen, sollten ja eh schon korrekt
dargestellt werden. Nachdem es eine Atomuhr ist, sollte eine bekannte
Uhrzeit/Datum erscheinen. Hast Du's schon gewagt, die Uhr mal
anzuschließen. Und? Was passiert? Du wirst ja nicht für alle Zukunft
Hyperterminal verwenden wollen, oder?

von Profi (Gast)


Lesenswert?

Was ist, wenn Du mit 7,e,2 sendest?
Die Chancen stehen 50:50, dass das Parity des o so ist wie das
erwartete Bit7, nämlich low...

Nein, geht nicht, 0D 0A kommt auch noch....
Wie reagiert die Uhr auf gesetztes Bit7 (=gesendetem Parity)?

Wenn Du 2 Serielle hast, kannst Du ja auf der einen senden und auf der
anderen mit anderen Parametern empfangen.
(2x Hyperterm oder anderes Programm aufmachen).

Nochmal zum Mitdenken:
Sta 0 1 2 3 4 5 6 7 Sto Sto    8,n,2
Sta 0 1 2 3 4 5 6 P Sto Sto    7,e,2

 0  1 1 1 1 0 0 1 0  1   1     o  8,n,2 Parity falsch
 0  1 1 1 1 0 0 1 1  1   1     o  7,e,2

 0  1 0 1 1 0 0 0 0  1   1     CR 8,n,2 Parity falsch
 0  1 0 1 1 0 0 0 1  1   1     CR 7,e,2

 0  0 1 0 1 0 0 0 0  1   1     LF 8,n,2
 0  0 1 0 1 0 0 0 0  1   1     LF 7,e,2

Bin mir nicht sicher, ob die Parities so richtig sind, aber mindestens
einmal ist sie sicher falsch.

von Karl-Alfred Römer (Gast)


Lesenswert?

Danke erst mal, dass ihr euch die Arbeit gemacht habt.

Ich habe gerade die ausgegebenen Ziffern in der DOS-ASCII-Tabelle

http://www.free-solutions.de/js/zeichensatz_ascii-dos_code.html

herausgesucht und deren Binärdarstellung mit den Ziffern verglichen
die hätten erscheinen müssen.

Dabei kam ich auf folgendes:

Ziffern 0,3,5,6 und 9 wurden korrekt übertragen.
Bei den anderen Ziffern wurde das höchste Bit von
einer Null zur Eins und damit dem ASCII-Code die
Zahl 128 aufaddiert.  Sieht schwer danach aus, als
ob das Parity-Bit das höchste Bit der 8 Bit Ziffer
überschrieben hat.

Ich müsste also in meiner Software schauen ob die Parität
gerade ist und falls ja, von dem übergebenen ASCII-Wert 128
abziehen.  Dann würde es stimmen.

Die Frage ist nur, ob ich das in meine gewünschte Anwendung
umsetzen kann.

Mal kräftig nachgrübeln.
Werde daraus dann wahrscheinlich einen neuen Thread eröffnen,
wenn ich alleine nicht weiter komme.

von TOM (Gast)


Lesenswert?

@all,

ich ahbe zwar keine Erfahrungen mit dem hier gestellten Problem doch
mit Hyperterminal hatte ich auch so meine Probleme, dass Zeichen nicht
ganz richtig übertragen bzw. empfangen wurden.
Habe im Netz ein anderes Tool gefunden das wesentlich einfacher
aufgebaut ist eventuell versuchst Du es mal mit diesen Tool.
Bei go* einfach Realterm eingeben und downloaden ca. 1,5 MB und staunen
was es alles kann.

TOM

von Christian Rötzer (Gast)


Lesenswert?

@Karl-Alfred

Es ist nicht so komlipiziert. Wie gesagt: Setze einfach immer das
oberste Bit auf null und Du hast den gesuchten ASCII-Code. Du musst
nicht ein einziges aml Einsen zählen...

von Profi (Gast)


Lesenswert?

Könntest Du mal bitte folgende oben gestellte Fragen beantworten:
Hast Du 2 serielle Schnittstellen zur Verfügung?

Hast Du schon versucht, was die Uhr macht, wenn sie falsche Parität
empfängt?

Hast Du schon mit 7,e,2 probiert zu Senden und Empfangen?

Hast Du im Hyperterm schon die verschiedenen Terminal-Emulationen
versucht?
Eigenschaften | Einstellungen | Emulation   und

Eigenschaften | Einstellungen | ASCII-Konfiguration | 7-bit-Empfang

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.