port.dll zugriff auf RS232



  • Hallo!

    Ich schreibe gerade in borland C++, und möchte mit der seriellen Schnittstelle arbeiten.
    In der Schule Kommuniziere ich mit dem PC und dem 8051, allerdings immer via sendbyte() und readbyte() mittels der Port.dll auf der PC seite.

    zu Hause habe ich die header datei angepasst das die rts und txd ... steuerleitungen auch gehen (sollen).
    In der Referenz der port.dll ist es genau beschrieben, aber bei mir ändern sich die Zustände nicht.

    rts(0);
    txd(0); //Das schreibe ich ins Hauptprogramm, aber die Zustände bleiben
    dtr(0); //auf 11V

    Die Deklaration in der com.cpp sieht wie folgt aus:
    #include <vcl.h>

    HINSTANCE hdll; //hinstance ist ein Variablentyp der API Ebene
    typedef UINT(CALLBACK *open)(char *);
    open opencom; //Variable des neuen Datentyps wird angelegt ( Typ open)

    typedef UINT (CALLBACK *read)();
    read readbyte;

    typedef (CALLBACK *send)(UCHAR);
    send sendbyte;

    typedef (CALLBACK *close)();
    close closecom;

    typedef (CALLBACK *time_)(UINT);
    time_ timeout;

    typedef WORD (CALLBACK *dsr_)();
    dsr_ dsr;

    typedef WORD (CALLBACK *rts_)(WORD);
    rts_ rts;

    typedef WORD (CALLBACK *txd_)(WORD);
    txd_ txd;

    typedef WORD (CALLBACK *dtr_)(WORD);
    dtr_ dtr;
    //Die funktionen müssen mit den existierenden Funktionen verknüpft werden
    //-----------------------------------------------------
    bool ladeDLL (void) {
    hdll = LoadLibrary("PORT.DLL");
    if(hdll == NULL)
    {
    return false; //wenn false, dann datei nicht gefunden
    }
    else
    {
    opencom = (open)GetProcAddress(hdll,"OPENCOM"); //übergebe den handle auf die Datei
    readbyte = (read)GetProcAddress(hdll,"READBYTE"); //Beim aufruf in c wird dann die funktion in der dll ausgeführt
    sendbyte = (send)GetProcAddress(hdll,"SENDBYTE");
    closecom = (close)GetProcAddress(hdll,"CLOSECOM");
    timeout = (time_)GetProcAddress(hdll,"TIMEOUT");
    rts = (rts_)GetProcAddress(hdll,"RTS");
    txd = (txd_)GetProcAddress(hdll,"TXD");
    dtr = (dtr_)GetProcAddress(hdll,"DTR");
    return true;
    }
    }

    Ich denke das die port.dll bekannst ist, dennoch ein paar Infos auf dieser Seite
    http://www.the-starbearer.de/Praxis/ElektronikamPC/RS232/portdll.htm

    Wäre Super wenn mir da jemand helfen könnte, ich probiere schon seit Stunden.

    Danke



  • hat sich erledigt



  • Es gehört im Allgemeinen zum guten Ton eine Selbstgefundene Lösung für ein Problem im Fragethread zu posten um
    a) die Lösung zu diskutieren
    b) die Lésung für andere zur Verfügung zu stellen.

    Danke.



  • Sorry!

    Es ist nur zu Dumm,
    alles was oben steht ist korrekt!

    die Serielle Schnittstelle unterscheidet halt nicht 0 und 1, sondern -11 und +11 Volt.
    Ich habe das Minus Zeichen einfach nicht bemerkt, und habe mich geärgert das sich nichts tut:(


Anmelden zum Antworten