Schnittstellen einbinden



  • Jochen Kalmbach schrieb:

    Damit geht es 100%ig schief!

    es muss nicht unbedingt schief gehen, aber alles andere ist eben viel einfacher.
    (ich weiss auch nicht warum die dafür 'nen kerneltreiber nehmen. einfache in/out instructions bekommt man nit 'nem kleinen trick auch so zum laufen).



  • net schrieb:

    Jochen Kalmbach schrieb:

    Damit geht es 100%ig schief!

    es muss nicht unbedingt schief gehen

    Es geht mit 100% iger Sicherheit schief, da die seriellen Schnittstellen vom OS automatisch erkannt werden und somit der Treiber auf die Ports zugreift.
    Wenn nun sowohl der Treiber als auch Deine App auf den gleichen Port zugreifen, dann kommt mit 100%iger Sicherheit was durcheinander (schau Dir mal die Port-Beschreibung des UARTS an, dann siehst Du warum).

    net schrieb:

    (ich weiss auch nicht warum die dafür 'nen kerneltreiber nehmen. einfache in/out instructions bekommt man nit 'nem kleinen trick auch so zum laufen).

    Dazu sag ich jetzt mal nix.



  • net schrieb:

    (ich weiss auch nicht warum die dafür 'nen kerneltreiber nehmen. einfache in/out instructions bekommt man nit 'nem kleinen trick auch so zum laufen).

    Kannst Du den Trick mal verbreiten? Würde mich brennend interessieren für eine Meßaufgabe.



  • Jochen Kalmbach schrieb:

    (schau Dir mal die Port-Beschreibung des UARTS an, dann siehst Du warum).

    meinste weil die dinger 'nen interrupt auslösen wenn sie ein zeichen empfangen haben oder bei parity errors oder sowas? das kann man doch bestimmt umkonfigurieren (glaube ich zumindest)...



  • Hallo!!

    Ich wollte mich erstmal für die vielen nützlichen Antworten bedanken!!
    Muss natürlich mit Windows programmieren...
    Check aber so einige Sachen nicht! Habe hauptsächlich den Code von DarthZiu benutzt http://www.winapi.net/index.php?inhalt=t3

    Jetzt habe ich alles schön eingebunden und Baud und co eingesetzt! Check jetzt nicht was bei ReadData rein soll char *buffer und iMaxCount?

    Der bringt bei mir auch immer die selbe Ausgabe obwohl sich die gesendeten Werte verändert haben. 😕

    Kann sein das ich bekannten Wald nicht seh aber hoffe ihr könnt mir weiter helfen.

    Merci Becks!!



  • Wo siehst du iMaxCount? 😕

    ReadData will von dir einen Zeiger auf eine Zeichenkette (char-Array), die du vorher allokiert hast. Die Methode schreibt dir die empfangenen Zeichen in dieses char-Array und gibt dir zurück, wieviele Zeichen sie in dieses Array geschrieben hat.



  • iMaxCount (steht auch bei der ReadData als 2. Parameter) sind dann wohl die Anzahl der Werte die er empfangen soll oder seh ich das falsch?

    Und in diesem Buffer liegen dann die werte die aus der COM Schnittstelle ausgelesen wurden. Mit denen müsste man doch dann weiterarbeiten können, oder täusch ich mich da völlig?

    Welche Methoden der Klasse muss ich eigentlich zum auslesen alles benutzen! ModeSet, open, ReadData, Close oder brauch ich noch mehr???



  • Sorry aber ich wollt mich nochmals in Erinnerung bringen. Hoffe es kann mir noch jemand weiterhelfen. Danke



  • Becks schrieb:

    iMaxCount (steht auch bei der ReadData als 2. Parameter) sind dann wohl die Anzahl der Werte die er empfangen soll oder seh ich das falsch?

    Das ist der Code von der Seite, die du verlinkt hast. Da seh ich nix vom iMaxCount...

    int CSerial::ReadData (char *buffer) // Buffer (*buffer), der die Zeichen bekommt
    {
       if (INVALID_HANDLE_VALUE == hComm) // COM-Port überhaupt geöffnet?
           return(0);
    
       DWORD dwRead = 0;
       char chRead;
       int i = 0;
    
       while (ReadFile(hComm, &chRead, 1, &dwRead, NULL)) // wurde ein Zeichen gelesen?
       {
           if (dwRead != 1) // ..wenn nicht, dann ist hier Schluß
               break;
    
           buffer[i++] = chRead; // wann ja, dann das Zeichen in den Buffer schreiben
       }
    
       return (i); // di
    

    Becks schrieb:

    Und in diesem Buffer liegen dann die werte die aus der COM Schnittstelle ausgelesen wurden. Mit denen müsste man doch dann weiterarbeiten können, oder täusch ich mich da völlig?

    Nein, da hast du völlig recht.

    Becks schrieb:

    Welche Methoden der Klasse muss ich eigentlich zum auslesen alles benutzen! ModeSet, open, ReadData, Close oder brauch ich noch mehr???

    Wenn du sowas programmieren willst, dann solltest du dich schon mit den Basics vertraut machen. Lies dir mal ein paar Sachen über den Serial-Port durch. Dann wirst du sehen, dass man ne Schnittstelle öffnet, konfiguriert (oder andersrum), benutzt und am Ende wieder schließt.

    Warum fragst du, ob in dem Puffer die Werte liegen?? Warum probierst du es nicht einfach aus?

    Mein Tipp: Besorg dir ein Programm, dass Daten (von denen du weißt, wie sie aussehen) an den Port schreibt, lies diese mit deinem Programm aus und schau dir an, was im Puffer steht.

    Ein bisschen Eigeninitiative sollte schon dabei sein. Wenn du dann ein spezielles Problem hast, kannst du das hier mit dem entsprechenden Code posten.



  • Hatte eine andere ReadData Methode!!

    Sag mal ich hab jetzt paar Stunden nah nem Tutorial gegoogled aber nix wirklich brauchbares gefunden.

    Kann mir vileeicht irgendwer einen guten Tipp zum Thema geben!!
    Wäre super!!!


Anmelden zum Antworten