Laden...

rs232 schnittstelle abfragen

Erstellt von alexp vor 17 Jahren Letzter Beitrag vor 17 Jahren 7.195 Views
A
alexp Themenstarter:in
9 Beiträge seit 2006
vor 17 Jahren
rs232 schnittstelle abfragen

Hallo,

ich möchte einen taster realisieren der an der rs232 schnitstelle hängt, diesen möchte ich dann in c# abfragen, also ob er gedrückt wurde...

also konkret möchte ich eine diagnose bei einem kfz durchführen (adui 80) allerdings hat dieser keine obd schnittstelle, aber eine schnittstelle wo man mit einer led den fehlerspeicher ausblinken kann (aber das is ja langweilig 😁 ), die led "morst" dann einen 4 stelligen code, zwischen jeder stelle ist eine pause von 0,5sekunden und zwischen jedem code eine pause von 2,5 sekunden. anstatt der led hätte ich halt ein relais genommen das mir an meiner com-schnittstelle einen "taster" schließt.

eigentlich müsste das ja relativ trivial sein, aber leider hab ich von schnittstellenprogrammierung NULL (haha kleiner wortwitz) ahnung

ich habe was gelesen über system.io.ports oder sowas, allerdings ist das erst bei .net 2 dabei, gibt es irgendwas kostenloses für framework 1.1? für die entwicklung mit .net 2.0 wäre c# express am besten oder?

460 Beiträge seit 2004
vor 17 Jahren

Du solltest dich schon ein bischen mit den Schnittstellen beschäftigen bevor du so ein Projekt startest. Meiner Meinung ist in diesem Fall der Parallelport besser geeignet.

A
alexp Themenstarter:in
9 Beiträge seit 2006
vor 17 Jahren

in vb hat ich sowas schonmal das war aber das totale krüppel programm.

und wenn ich damit nichts mache, dann kann ich mich auch nicht damit beschäftigen, erfahrungsgemäß hab ich bessere erfolge beim "lerning-by-doing" als wenn ich mir irgendwelche dokus anschaue

460 Beiträge seit 2004
vor 17 Jahren

zuerst solltest du das hier http://de.wikipedia.org/wiki/RS232 und das hier http://de.wikipedia.org/wiki/Centronics-Schnittstelle lesen (wissen) 😉

A
alexp Themenstarter:in
9 Beiträge seit 2006
vor 17 Jahren

das ist mir bereits schon bekannt.... mittlerweile hab ich mir c# express installiert und mir das serialport control (oder so wies heißt) angeschaut und einen event gefunden der beim datenentfang feuern sollte, aber irgendwie nicht tut. sprich wenn ich die datenentpfangsleitung mit der signalmasse verbinde... oder habe ich da was falsch verstanden?

460 Beiträge seit 2004
vor 17 Jahren

Wenn du irgendwas brückst, dan ist das noch lange kein Datenempfang. Solltest du eigentlich wissen wenn du die Artikel bei wikipedia gelesen hättest.

A
alexp Themenstarter:in
9 Beiträge seit 2006
vor 17 Jahren

du behauptest also wenn sich der spannungspegel ändert ist das keine datenübertragung? oder interpretier ich das etz falsch?

460 Beiträge seit 2004
vor 17 Jahren

Bei der Seriellen Snittstelle werden die Daten mit einem 12V Pegel übertragen. Wenn Du nun ein potentialfreien Pin mit einem anderen potentialfreien Pin verbindest, passiert garnichts. Warum auch.
Außerdem wird das event wahrscheinlich erst gefeuert wenn ein komplettes Byte empfangen wurde.

185 Beiträge seit 2005
vor 17 Jahren

Hallo Alexp,

in deinem Fall würde ich einfach die Handshake-Leitungen nehmen. Da hast du dann auch den Spannungspegel den du brauchst.

S
8.746 Beiträge seit 2005
vor 17 Jahren

Original von alexp
also konkret möchte ich eine diagnose bei einem kfz durchführen (adui 80) allerdings hat dieser keine obd schnittstelle, aber eine schnittstelle wo man mit einer led den fehlerspeicher ausblinken kann...

Kein OBD? Wie alt ist denn die Karre? 20 Jahre? 😉

Ansonsten: Generell sind Messaufgaben auf dem PC schwierig. Für die Aufgabe ist eher ein kleines Microcontroller-System geeignet.

Um mit der Seriellen zu messen, mußt du die einen der Steuerleitungspins verwenden.

A
alexp Themenstarter:in
9 Beiträge seit 2006
vor 17 Jahren

@martinH:
es gibt auch einen event der feuert wenn am handshake was gehändert wurde (pin changed, wenn ich mich nicht irre)

aber wie jan sagt ist die signalmasse ja auf 0v (ich hätte gemeint da war mal irgendwas mit -3v, oder hab ich des geträumt ?, sollt ich vll mal nachmessen),

und um mit der seriellen zu messen muss ich eine der steuerleitungen verwenden? hört sich etz irgendwie merkwürdig an, aber ich lass mich gerne belehren

im großen und ganzen bin ich jetzt mehr verwirrt wie vorher....

also ihr meint beide? oder zuminderst einer.. ich soll einen der leitungen CTS, DSR oder DCD auf die signalmasse legen? und dann sollte der pin changed event feuern oder wie?

die karre ist 18, aber ich dafür 20 😁
und die kiste hat kein obd, sondern ein 2x2 vag interface, über das man auch das fahrzeug ausblinken kann (gibt zwar auch ein auslese gerät dafür ist mir aber viel zu teuer....)

und von microcontrollern halt ich nichts, weil ich mich damit schon überhaupt nicht auskenn... (bin azubi im 2. lehrjahr und hab bisjetzt nur irgndwelche büroanwendungen und webanwendungen gemacht,)

falls irgendein autobegeisterter ein bild sehn will:
http://www.mixedmaniacs.de/start.asp?seite=Gallery&album=AUDI%2080 (der silberne)

S
8.746 Beiträge seit 2005
vor 17 Jahren

Aus dem Fahrzeug kommen sowieso nur Bordnetzpegel, also 0-12 V. RS232 ist V.24/V.28 und das arbeitet mit +3 ... +15 V für logisch 0 (SPACE) und -3 ... -15 V für logisch 1 (MARK).

Du kommst also nicht um einen Schnittstellen/Pegelwandler drumrum. Kann man für um die 40€ kaufen.

A
alexp Themenstarter:in
9 Beiträge seit 2006
vor 17 Jahren

man, kann mir von euch keiner mal was schönes erzählen....? bzw. wüsste jemand von euch eine möglichkeit sowas zu realiseiren (vom ziel her) also von mir aus übern paralelport oder usb, von miraus auch über n netzwerk kabel oder über n modem oder sonstwas, hauptsach billig, leicht nach zu bauen...

185 Beiträge seit 2005
vor 17 Jahren

Hallo Alexp,

ich dachte eigendlich schon daran, daß du, wie du am Anfang geschrieben hast, ein Relais dazwischen schaltest.
Die benötigte Spannung nimmst du von der seriellen Schnittstelle vom PC.

Du setzt RTS und verbindest RTS -> Relaiskontakt -> CTS.

Damit ändert sich CTS wenn der Kontakt öffnet.

S
8.746 Beiträge seit 2005
vor 17 Jahren

Kaufe doch einfach was fertiges, z.B.:

http://www.auto-intern.de/module-pagesetter-viewpub-tid-13-pid-20.html

Gibt auch eine Shareware-Software namens VAG.COM, dann brauchst du nur noch einen kompatiblen Schnittstellenwandler.

Das ist vielleicht ganz hilfreich:

http://de.openobd.org/hardware.htm

A
alexp Themenstarter:in
9 Beiträge seit 2006
vor 17 Jahren

@svenson: vag.com kenn ich schon, alerdings kostet das wenn mans original kauft ein vermögen, und wie gesagt das auto hat keine obd schnitstelle und der adapter dan ich von obd auf 2x2 brauch der kostet schon allein 20€

@martinh

das hört sich verdammt gut an 😁

allerdings versteh ich nicht ganz was du mir sagen willst....

sehe ich das richtig, wenn ich rts setze dann hab ich auf dem rts pin spannung (+/- 12v?) und der geht zum relais rein (das relais schaltet dann den rts auf cts, wenn 12v (die vom auto) am relais(wenn die "lampe" zum ausblinken ann ist) anliegen)

und dann kann ich den cts abfragen? hab aber warscheinlich kein event dafür oder?

sagt mir bitte das ich nicht auf dem holzweg bin...

übrigens ein großes dankeschön an alle

S
8.746 Beiträge seit 2005
vor 17 Jahren

Nochmal: RS232 arbeitet erkennt ab +/- 3 V Pegelübergänge. Da wird bei 0..12 V im Bordnetz ein Problem... da geht nix ohne HW!

A
alexp Themenstarter:in
9 Beiträge seit 2006
vor 17 Jahren

also das erste problem wurde dank martinh gelöst,

das event PinChanged löst aus wenn ich beim Handshake rts setze und den dann auf cts lege

danke nochmal,

allerdings feuert das event x mal, aber ich denke da bau ich noch einfach nen timer ein mit dem ich dann anhand er zeit überprüfe ob das eine erneute verbindung ist oder noch die selbe