Lampe mit einzelnen Pins ansprechen (RS232)



  • Hallo,

    zwei Sachen vorweg:

    1. ich habe schon in der FAQ nachgesehen, aber nichts gefunden, das mir weiterhilft bzw. das ich verstanden habe
    2. Ich habe leider keine Ahnung von Hardware, Pins, Hexadezimalcode usw.

    Ich möchte (muss) aber trotzdem mit unserem Programm eine Lampe ansprechen, die rot leuchten soll, wenn bei einem bestimmten Prozess etwas schief geht. Der PC ist über eine serielle Schnittstelle mit der Lampe verbunden. Der Anschluss an der Lampe hat 25 Pins, am PC sind es 9.

    Das Empfangen von Daten (an einem Kartenlesegerät) klappt, auch das notwendige Bestätigungsbit konnten wir schon senden. Dazu verwende ich

    WriteFile(hCom, lpByte, len, &dwBytesWritten, NULL);

    wobei ich als lpByte = 0x06 verwende.

    Genauso müsste man doch einen bestimmten Pin ansprechen können und damit die Lampe zum Leuchten bringen. Ich habe mir dazu schon entsprechende Tabellen zur Pinbelegung usw. angesehen, aber das hilft mir nicht weiter. Das sieht dann etwa so aus:

    Pin1 = GND
    Pin2 = TXD
    Pin6 = DSR
    ...

    DSR ist wohl 0x06 (habe ich gelesen und es funktioniert). Kann ich dann z.B. Pin1 mit 0x01 ansprechen oder wie spreche ich einzelne Pins an?? 😕

    Woher weiß ich denn, welchen Pin ich ansprechen muss? Gibt es da feste Regeln oder muss man sich den Schaltplan der Lampe bzw. der Schnittstelle ansehen (den es übrigens nicht gibt)?

    Vielen Dank schon mal!

    Michael



  • Benutz mal die Suchfunktion hier in diesem Forum.

    Vor einigen Tagen war eine ähnliche Anfrage.

    Du kannst mit speziellen Befehlen DTR/DSR (Handshake-Leitungen) setzen. Es geht nicht jedes Signal einzeln anzusprechen. TXD/RXD kannst Du vergessen.
    Dann mußt Du die parallele Schnittstelle benutzen.

    Mit Deinem WriteFile sendest Du ein ACK an das Kartenlesegerät. Das Dir dann die Daten zusendet. Nach dem Senden des Ack geht Dein TXD-Pin wieder in den Ursprungszustand zurück.

    Bist Du sicher, daß Pin 1 GND ist? Soweit ich weiss, ist das bei der 9-poligen Pin 5 und bei der 25-poligen Schnittstelle Pin 7. Oder handelt es sich um das externe Gerät?

    Evtl. muß das Signal dann noch verstärkt werden, hängt von deiner Funzel ab.

    Kann Dir im Moment leider nicht mehr helfen. Bin gleich in Urlaub.



  • Hast du dir mal die "Lampe" angesehen?
    Hängt die an der RS232 direkt dran 😮 ? Haste ein Netzteil dran?
    Also wenn da ein prozessor oder ähnliches drin ist, wird der wohl mit irgendwelchen daten gefüttert, wenn es direkt dran ist (kann ich mir nicht vorstellen) dann geht das wahrscheinlich ohne treiber gar nicht- je nach betriebssystem.
    packmers für heute



  • @packmers

    Aus der Lampe kommen zwei Kabel, eines geht zum Netzteil, das andere zum Kartenlesegerät. Dieses hängt dann an der RS232.

    @aheim

    Sorry, aber bei der Suche habe ich dazu nichts gefunden.
    Auf meinem Plan (http://www.willemer.de/informatik/seriell.htm) steht:

    Pin1 = GND Ground / Shield
    Pin7 = GND Ground

    Ach ja, schönen Urlaub!!

    Gruß
    Michael



  • Hallo

    RS232(9polig):
    1=DCD
    2=RXD
    3=TXD
    4=DTR
    5=Masse
    6=DSR
    7=RTS
    8=CTS
    9=RI

    Du kannst nur die Signale DTR und RTS direkt kontrollieren. Ihre Spannung beträgt etwa 12V gegen Masse bei max. 20mA Strom (Spannung hängt vom Porttreiber ab - lt. Typenblatt müßten es +12/-12V gegen Masse sein - meist nicht so hoch)
    Dazu schau dir den Aufbau des DCB, die Befehle GetCommDCB und SetCommDCB in der Windows-SDK an.

    MFG Mario



  • Mach ich. Ich fürchte nur, dass mir dazu das nötige Grundlagenwissen fehlt. Trotzdem danke für den Hinweis!

    Schönes Wochenende!


Anmelden zum Antworten