Com bzw lpt ansteuern



  • Hi Ich arbeite zur zeit mit Borland C++ Bilder 1

    ich möchte gerne mit meiner lpt bzw. com Schnittstelle elektronische Dinge mit meinen Computer steuern dazu müsste ich aber wissen wie ich jetzt ganz simpel...

    Beispiel:
    
       o o o o o 
        o o o o
    
       x o o o x 
        o x o o
    

    ...Meine Schnittstelle anspreche.

    danke schonmal für eure Hilfe



  • Wie du die Hardware-Schnittstellen ansprichst hängt vom Betriebssystem ab. Das solltest du also in deiner Frage erwähnen.

    Für einzelne Pins zu setzen sind die diese Schnittstellen allerdings nicht gut geeignet (COM noch weniger als LPT). Normalerweise werden darüber ganze Bytes/Wörter/o.ä. übermittelt, keine Pins manuell gesetzt.

    edit: Oh, hab übersehen, dass du "Borland C++ Builder 1" geschrieben hast. Ist das DOS?



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum VCL/CLX (Borland C++ Builder) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hallo,

    wie du mit Borland CBuilder die Com-Schnittstelle ansteuern kannst kann ich dir verraten.

    du brauchst natürlich zwei Dateien, eine DLL und eine Header - die DLL um die Schnittstelle an zu sprechen und die Header Datei includest du in dein Projekt, damit du die einzelnen Pins ansprechen kannst.

    Diese zwei Dateien kann ich dir gerne zukommen lassen.

    Um etwas über eine Com-Schnittstelle steuern zu können musst du natürlich wissen, wie die einzelnen Pins benannt sind und welcher davon Eingang bzw. Ausgang ist.

    du hast folgende Pins:

    o o o o o
    o o o o

    nun musst du wissen, wie sie nummeriert sind, was folgendermaßen ist:

    Pin 1, Pin 2, Pin 3, Pin 4, Pin 5
    Pin 6, Pin 7, Pin 8, Pin 9

    Natürlich haben die Pins nicht nur Zahlen, sondern auch Namen:

    Pin 1: DCD
    Pin 2: RxD
    Pin 3: TxD
    Pin 4: DTR
    Pin 5: GND
    Pin 6: DSR
    Pin 7: RTS
    Pin 8: CTS
    Pin 9: RI

    so werden die Pins auch über den CBuilder angesprochen.

    Auf FormCreate (doppelklick auf deine Form) programmierst du nun:

    LoadPortDLL();
       opencom("Com1:9600,n,8,1");
    

    wobei du für "Com1" natürlich den Namen deiner Com-Schnittstelle angibst.

    die Pins können immer auf 1 oder auf 0 sitzen - die Ansprache der Pins:
    1:

    dcd(0);
    

    oder

    dcd(1);
    

    (Eingang)
    2: Ist ein "Zwitter" (Eingang und Ausgang zusammen) und wird eigentlich nicht verwendet
    3:

    txd(0);
    

    oder

    txd(1);
    

    (Ausgang)
    4:

    dtr(0);
    

    oder

    dtr(1);
    

    (Ausgang)
    5: ist ein Ground und brauch nicht angesprochen werden - weder Eingang noch Ausgang
    6:

    dsr(0);
    

    oder

    dsr(1);
    

    (Eingang)
    7:

    rts(0);
    

    oder

    rts(1);
    

    (Ausgang)
    8:

    cts(0);
    

    oder

    cts(1);
    

    (Eingang)
    9:

    ri(0);
    

    oder

    ri(1);
    

    (Eingang)

    Das sollte es soweit gewesen sein, die Dateien die du benötigst kann ich dir wie gesagt zukommen lassen - evtl. per Email?

    Gruß
    MWJK



  • und wie ging das simpel mit dem lpt port ?



  • Hallo Folk's,
    möchte dieses problem noch mal wieder beleben weil ich fast das selbe problem habe... Möchte für meine Carrera Autorennbahn einen Rundenzähler über die RS 232 Schnittstelle abrufen und dazu die einzelnen Pin Aktivieren für senden so wie 2 für empfangen....
    Habe mal die Programm hilfe von MWJK versucht mir fehlt aber dazu die zwei Dateien, eine DLL und eine Header - die DLL um die Schnittstelle an zu sprechen und die Header Datei includest du in dein Projekt, damit du die einzelnen Pins ansprechen kannst.

    kann mir jemmand Helfen Olli 😮



  • kuck dir mal folgende Funktionen an:

    sprintf(sport1,"COM%u:",ubPort);
            hComPortSensorRead = CreateFile(sport1,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_ALWAYS,0,NULL);
    
    EscapeCommFunction(hComPortSensorRead, SETRTS);
    GetCommModemStatus(hComPortSensorRead, &ModemStat);
    
    GetCommState(h,&dDCB)
    SetCommState(h,&dDCB);
    SetCommTimeouts(h,&cto);
    
    if (!WriteFile(m_hComPort,pBuff,Size,&bwr,&ov))
       WaitForSingleObject(ov.hEvent,INFINITE);
    ReadFile(m_hComPort,Buffer,sizeof(Buffer),&br,&ov);
    GetOverlappedResult(m_hComPort,&ov,&br,false);
    

    Damit habe ich auch schon eine I2C Schnittstelle über COM gemacht.

    MfG

    :schland:



  • Hi folk's,
    so öffne ich meine schnittstelle aber ich kann nicht die einzelnen Pin's setzen oder Abfragen....das ist mein Problem ...Um die Schnittstelle zu überprüfen habe ich einen RS 232 Check Tester an der schnittstelle und der reagiert auch in den er mir RtS und DtS von grüner LED auf rote umschaltet.

    Olli :schland: 🙄
    ------------------------------------------------------------------------------

    void TSchnittstelle::Schnittstelle()
    {
    hCom = CreateFile(Port,//Für Port wird die COM Schnittstelle eingesetzt.
    GENERIC_READ | GENERIC_WRITE,
    0,
    NULL,
    OPEN_EXISTING,
    0,
    NULL
    );
    // -----------------------------------------------------------------------------
    dcb.DCBlength = sizeof(DCB);
    GetCommState (hCom, &dcb);
    dcb.BaudRate = 9600; // Baudrate
    dcb.ByteSize = 8; // 8 Datenbits
    dcb.Parity = NOPARITY; // keine Parity
    dcb.StopBits = ONESTOPBIT; // 1 Stopbit
    SetCommState (hCom, &dcb);
    }
    //------- Com Port Schliessen. ------------------------------------------------
    void TSchnittstelle::Beenden()
    {
    CloseHandle(hCom);
    hCom = NULL;
    }
    // ----------------------------------------------------------------------------



  • deswegen habe ich auch diese beiden funktionen mit reingeschrieben zum setzten/lesen der einzelnen Pins

    EscapeCommFunction(hComPortSensorRead, SETRTS); 
    GetCommModemStatus(hComPortSensorRead, &ModemStat);
    

    Wer lesen kann ist klar im vorteil 🙂

    MfG :schland:



  • hi.... sorry ja danke das habe ich übersehen.... 😃
    ich bekomme aber immer noch diese fehler meldung -> E2451 Undefiniertes Sympol 'ModemStat'

    weiß net.... muß ich den die schnittstelle #include etwas setzen...

    olli :schland:



  • du must eine Variable des übergabparameters definieren (siehe Hilfe Funktion)

    MfG


Anmelden zum Antworten