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ß
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?
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
Sorry, am anderen ende verwende ich einen usb2.0. das heißt ich nutze ein adapterkabel.
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
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
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.
Man könnte mit einem Komparator prüfen, ob an RXD -12 .. -5V anliegen.
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.
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
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?
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.
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
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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.