Forum: Mikrocontroller und Digitale Elektronik Interrupt beim Trennen einer RS 232 Schnittstelle


von Johannes S. (senzi)


Lesenswert?

Hallo, ich möchte fragen ob die Möglichkeit besteht beim Abziehen eines 
rs232 Steckers einen Interrupt auszulösen. Ich möchte in diesem 
interrupt eine flag setzen, damit nach eienm erneuten Anstecken wieder 
eine SicherheitsCode eingeben werden muss. Vielleicht kann man das auch 
auf einen anderen Weg erreichen. Viele dank.

Gruß

von Max D. (max_d)


Lesenswert?

Mehr Info :
Welche Hardware an den enden? (PC?)
Kannst du da dran rumbauen oder muss das in Software passieren?
Wie "fälschungssicher" muss das sein?

von Johannes S. (senzi)


Lesenswert?

Hardware kann ich nur schwer verändern. Verwende ein Stk16+ 
Entwicklungsboard von waveshare. rs232 wir mit Max3232 verwendet. 
Ausführung zuerst einmal so einfach wie möglich. Danke

von Johannes S. (senzi)


Lesenswert?

Sorry, am anderen ende verwende ich einen usb2.0. das heißt ich nutze 
ein adapterkabel.

von Georg (Gast)


Lesenswert?

Johannes Senzenberger schrieb:
> beim Abziehen eines
> rs232 Steckers einen Interrupt auszulösen

Ohne Änderungen garkeine - für eine RS232C-Schnittstelle ist bei 
fehlendem Anschluss alles in Ordnung, also im Ruhezustand genau wie bei 
inaktivem angeschlossenem Gerät (m.a.W., das Abziehen des Steckers 
ändert nichts). Um das zu ändern müsstest du dafür sorgen, dass bei 
eingesteckter Verbindung Statussignale aktiv geschaltet werden, z.B. DSR 
oder DCD - das ist normalerweise (und normgerecht) nicht der Fall. Falls 
du am angeschlossenen Gerät nichts ändern kannst, musst du zumindest im 
Stecker eine Brücke einfügen und auf der PC-Seite ein aktives Signal 
erzeugen, also Änderungen an der PC-Software und am Stecker vornehmen 
(am Stecker, der reingesteckt wird natürlich). Das hat allerdings den 
Nachteil, dass so ein Anschluss auch erkannt wird, wenn das 
angeschlossene Gerät garnicht eingeschaltet ist.

Georg

von Johannes S. (senzi)


Lesenswert?

Hallo Georg,

danke für die Auskunft. Ich habe nicht erwartet, dass diese Aufgabe so 
aufwendig ist. Der Plan B ist einen weiteren Timer einzufügen und nach 
einer bestimmten Zeitspanne, ohne einer weiteren Eingabe, das Programm 
zu sperren. Das sollte hinsichtlich der Sicherheit reichen.

Senzi

von Wolfgang (Gast)


Lesenswert?

Georg schrieb:
> Ohne Änderungen garkeine - für eine RS232C-Schnittstelle ist bei
> fehlendem Anschluss alles in Ordnung, also im Ruhezustand genau wie bei
> inaktivem angeschlossenem Gerät (m.a.W., das Abziehen des Steckers
> ändert nichts).

Wie kommst du zu diesem Schluss?

Das kommt immer drauf an, wie die RS232 Schnittstelle genutzt ist, i.e. 
welche Handshake-Leitungen unterstützt werden. Ein Abziehen des Steckers 
unterbricht RTS, DCD, DTE, RTR (bei RS-232-E).

Wenn natürlich nur RX und TX verfügbar sind, ist eine Erkennung nur 
durch einen hin- und her laufenden Token möglich.

von Peter D. (peda)


Lesenswert?

Man könnte mit einem Komparator prüfen, ob an RXD -12 .. -5V anliegen.

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Bei einer echten RS232-Schnittstelle aus der guten alten Zeit könnte man 
das erkennen. Ein Eingangspegel zwischen grob -3V und +3V ist weder Mark 
noch Space. Legt man den Eingang über einen hochohmigen Widerstand an 0V 
kann man das Fehlen eines Eingangssignals daran erkennen, dass der 
Eingang 0V hat, d.h. durch den Widerstand auf 0V gezogen wird.

Leider wird heutzutage bei RS232, nicht zuletzt durch die vielen 
USB-Adapter, stark gepfuscht. Da wird schon mal der Bereich um 0V, gar 
bis etwa +2V als Mark interpretiert. Damit spart man sich die 
zuverlässige Erzeugung negativer Spannungen für Mark. Das macht es 
jedoch unmöglich 0V als Erkennung für einen offenen Eingang 
heranzuziehen.

von Erwin M. (nobodyy)


Lesenswert?

Hannes Jaeger schrieb:
> Leider wird heutzutage bei RS232, nicht zuletzt durch die vielen
> USB-Adapter, stark gepfuscht. Da wird schon mal der Bereich um 0V, gar
> bis etwa +2V als Mark interpretiert.

Das machen auch viele alte Geräte, das nur eine positive Spannung wie +5 
V oder 0 V ausgegeben wird, weil man so das Erzeugen von +12 V und die 
negative Spannung einspart.
Beispielsweise kann ich ein altes Fahrrad-Ergometer und die alte 
Relaiskarte 8fa von Conrad (alte Version) nicht über einen USB-Adapter 
ansteuern und benötige dafür einen onboard-Port.
Früher konnte man das den Kunden leichter unterschieben, weil es damals, 
vor über 10 Jahren, praktisch keine USB-RS232-Adapter gab und kaum einer 
merkte das die Sachen nicht dem RS-232-Standard entsprechen und nur 
grenwertig funktionieren.

: Bearbeitet durch User
von Johannes S. (senzi)


Lesenswert?

danke für die weitern Antworten.

Wenn ich das richtige verstehe, besteht bei RX uns Tx keine reine 
SoftwareLösung zur Verfügung. Die Lösung mit dem Komperator ist bei 
neueren rs 232 verbindungen ebenfalls nicht einsetzbar.

Wie könnte man die Idee mit dem Token umsetzen?

von Rainer B. (katastrophenheinz)


Lesenswert?

Token: eigentlich ganz einfach: Falls es ein Zeichen gibt, welches im 
normnalen Datenstrom nicht vorkommen kann, also z.B. irgendwas mit 
ASCII-code < 32 oder > 128, dann nimmst du das als token-zeichen.

Falls du alle 256 Zeichen nutzt, definierst du dir willkürlich ein 
Zeichen als Token, z.B. 'X'. Um das Token 'X' vom 'X' im Datenstrom 
unterscheiden zu können, setzt du ein weiteres Zeichen davor zb. '\'. 
Dann steht allein 'X' für das Token, die Folge '\','X' für das Zeichen 
'X'. Da jetzt auch '\' eine Sonderbedeutung hat, musst du, um 
Mehrdeutigkeiten zu vermeiden, auch das Zeichen '\' mit dem Präfix '\' 
versehen, falls es im normalen Datenstrom auftaucht.

Der rest ist trivial: Eine Stelle sendet periodisch das Tokenzeichen, 
Gegenstelle antwortet drauf. Wenn keine Antwort erfolgt -> Verbindung 
getrennt.

von Anja (Gast)


Lesenswert?

Hannes Jaeger schrieb:
> Legt man den Eingang über einen hochohmigen Widerstand an 0V
> kann man das Fehlen eines Eingangssignals daran erkennen, dass der
> Eingang 0V hat, d.h. durch den Widerstand auf 0V gezogen wird.

Ein hochohmiger Widerstand an 0V ist nicht notwendig.
Die RS232-Schnittstelle hat immer einen Pull-Down Widerstand von ca 5K 
gegen 0V am Empfängereingang.

Aber vielleicht läßt sich ja noch ein Widerstand von ca 10-15K gegen 
+10..+12V (Ladungspumpenspannung vom MAX2xx legen. Dann würde je nach 
RS232 Einstellungen entweder das "Break" Signal oder Dauer- 0x00 
erkannt.

Gruß Anja

von Frank K. (fchk)


Lesenswert?

Johannes Senzenberger schrieb:
> Hardware kann ich nur schwer verändern. Verwende ein Stk16+
> Entwicklungsboard von waveshare. rs232 wir mit Max3232 verwendet.
> Ausführung zuerst einmal so einfach wie möglich. Danke

Schau Dir den MAX3223 an:

http://datasheets.maximintegrated.com/en/ds/MAX3221-MAX3243.pdf

Der hat einen !INVALID-Ausgang, der auf 1 ist, wenn gültige RS232-Pegel 
anliegen, und 0, wenn keine gültigen Pegel anliegen (kein Kabel, Gerät 
ausgeschaltet).

fchk

von Georg (Gast)


Lesenswert?

Wolfgang schrieb:
> Ein Abziehen des Steckers
> unterbricht RTS, DCD, DTE, RTR (bei RS-232-E).

Wolfgang schrieb:
> Wie kommst du zu diesem Schluss?

Vielleicht solltest du mal Normen lesen. Nicht angeschlossen = 
Statussignal inaktiv, das ist so vorgeschrieben!

Ein Modem ohne aufgebaute Verbindung (Normalfall) darf auch z.B. DCD 
nicht setzen (weil eben kein Carrier da ist) - also ändert sich beim 
Abziehen des Steckers nichts, obwohl DCD ja verwendet wird. usw. usw.

Und wenn sich beim Abziehen des Steckers nichts ändert, ist es auch 
ziemlich schwierig, daraus einen Interrupt zu erzeugen, oder ist der 
Schluss für dich nicht nachvollziehbar?

Georg

von X4U (Gast)


Lesenswert?

Johannes Senzenberger schrieb:
> Hallo, ich möchte fragen ob die Möglichkeit besteht beim Abziehen eines
> rs232 Steckers einen Interrupt auszulösen.

Mach ne Lichtschranke dran oder einen Kontakt.

von c-hater (Gast)


Lesenswert?

Johannes Senzenberger schrieb:

> Hallo, ich möchte fragen ob die Möglichkeit besteht beim Abziehen eines
> rs232 Steckers einen Interrupt auszulösen.

Das hängt natürlich sehr stark von der Hardware ab, bei der du den 
Stecker abziehst. Das RS232-Protokoll selber bietet dafür keinerlei 
Unterstützung.

Deine verdammte Aufgabe ist also, diese Hardware zu beschreiben. 
Jedenfalls wenn du auf eine zielführende Antwort wert legst...

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.