Fernbedienung



  • Wie man die COM-Schnittstelle anspricht kannst du in der FAQ nachlesen. Da stehen sogar zwei Möglichkeiten. Einmal rein für DOS-Anwendungen (16 Bit) in C und einmal für Windows (32 Bit) bzw. Konsole in C++.

    Wie du jedoch die Fernbedienung ansprechen musst, um Daten zu kriegen, das musst du selber rausfinden. Vielleicht gibt es einen Befehlssatz oder eine Anleitung auf der Homepage vom Hersteller. Ansonsten www.google.de 😉



  • Also, das mit dieser DCB Struktur funktioniert bei mir nicht.. Mein Compiler gibt mir da 15 Errors (sowohl als 16 bit Anwendung als auch 32 bit (Konsole)). Mit Windows kenn ich mich leider noch nicht so aus..

    Ich habe derzeit..

    #include <stdio.h>
    #include <stdlib.h>
    #include <dos.h>
    #include <conio.h>
    #include <string.h>
    #include <windows.h>
    #include <io.h>
    

    .. eingebunden! Muss ich vielleicht noch ein paar einbinden?



  • Hui,
    also ich hab

    #include "stdafx.h"
    #include "windows.h"
    #include "stdio.h"
    #include "conio.h"
    

    drin, damit klappts auf jeden fall (unter VC6)
    was kommen da genau für fehler?

    stdio und conio sind hier nur für printf´s...



  • Kleiner Nachtrag: Das sagt Microsoft dazu:

    /* A sample program to illustrate setting up a serial port. */

    #include <windows.h>
    
    int main(int argc, char *argv[])
    {
       DCB dcb;
       HANDLE hCom;
       BOOL fSuccess;
       char *pcCommPort = "COM2";
    
       hCom = CreateFile( pcCommPort,
                        GENERIC_READ | GENERIC_WRITE,
                        0,    // must be opened with exclusive-access
                        NULL, // no security attributes
                        OPEN_EXISTING, // must use OPEN_EXISTING
                        0,    // not overlapped I/O
                        NULL  // hTemplate must be NULL for comm devices
                        );
    
       if (hCom == INVALID_HANDLE_VALUE) 
       {
           // Handle the error.
           printf ("CreateFile failed with error %d.\n", GetLastError());
           return (1);
       }
    
       // Build on the current configuration, and skip setting the size
       // of the input and output buffers with SetupComm.
    
       fSuccess = GetCommState(hCom, &dcb);
    
       if (!fSuccess) 
       {
          // Handle the error.
          printf ("GetCommState failed with error %d.\n", GetLastError());
          return (2);
       }
    
       // Fill in DCB: 57,600 bps, 8 data bits, no parity, and 1 stop bit.
    
       dcb.BaudRate = CBR_57600;     // set the baud rate
       dcb.ByteSize = 8;             // data size, xmit, and rcv
       dcb.Parity = NOPARITY;        // no parity bit
       dcb.StopBits = ONESTOPBIT;    // one stop bit
    
       fSuccess = SetCommState(hCom, &dcb);
    
       if (!fSuccess) 
       {
          // Handle the error.
          printf ("SetCommState failed with error %d.\n", GetLastError());
          return (3);
       }
    
       printf ("Serial port %s successfully reconfigured.\n", pcCommPort);
       return (0);
    }
    


  • @Dago
    Also nochmal. Es gibt in der FAQ schon was ausprogrammiertes für die Schnittstellen. Du musst dich dann nur noch um das Empfangen und Senden von Daten kümmern, also was du an die Fernbedienung sendest und was du von ihr empfängst.

    Link Serielle Schnittstellen unter 16 Bit (C): http://www.c-plusplus.net/forum/viewtopic.php?t=45173
    Link Serielle Schnittstellen unter 32 Bit (C++; Klasse): http://www.c-plusplus.net/forum/viewtopic.php?t=39312



  • Ich benutze Borland C++ 4.5 (ist scho 'n bissle älter) bei mir kommen folgende Fehler, wenn ich den Code von der FAQ benutze:

    Cannot convert 'void (interrupt *)(...)' to 'void (interrupt *)()' int function initinterrupt(char)

    und davon ca. 20 Stück...

    Und bei der Version von ThorstenM kommen ..

    Undefined symbol 'COMMTIMEOUTS' ...
    Statemend missing ; in function ComPortInit ...
    Call to undefined function 'Create File' ...
    ...

    Die Fehler kann ich irgendwie nicht verbessern. Ich kann das ';' hinzufügen, dann kommen aber neue Fehler...



  • Hmm, da bin ich auch überfragt, wahrscheinlich ist mein Code Visual C spezifisch. Hab das auch schon mal irgendwie in Borland C gemacht. Muss ich mal den Code raussuchen.

    Bis dann

    MfG Torsten



  • @Dago
    Verwende mal die Klasse im Thread "Ströme lenken" (der zweite Link, den ich dir gepostet hab), vielleicht funktionierts damit. Wenn du Fragen zur Verwendung der Klasse hast, dann frag mich einfach.

    Hast du beim Projekt auch 16Bit EXE-File ausgewählt?

    PS: Und wichtig ist auch, dass der C-Compiler für die comport.c ausgewählt ist und nicht der CPP-Compiler!



  • @AJ
    Die Klasse funktioniert bei mir jetzt. Ich habe sie schon einmal compilieren wollen, da ging es aber nicht, weil meine Compiler nur BOOL und TRUE, ... anstatt bool und true, ... erkennt.

    Naja, danke auf jeden Fall.

    Hab jetzt halt keine Ahnung was ich mit TXD, RTS, ... anfangen soll. Kriege ich aber bestimmt bald raus.. (hoffe ich 🙂 )

    Ich habs es jetzt unter Win32 (Konsole) compiliert.



  • TXD, RTS usw. sind die Leitungen bzw. Pins der seriellen Schnittstelle. Such einfach mal in google nach RS232 Schnittstelle dann findest du sicher was. Auf meiner Homepage hab ich auch ne kleine Tabelle.
    Aber normalerweise musst du dich um das Zeugs nicht kümmern, sondern einfach Kommandos an ein Gerät schicken und dann die Antwort(en) empfangen.



  • Hi Leuts...

    Wie man sieht, habe ich mich jetzt registriert 🕶 🕶

    Naja, kann mir vielleicht mal irgendjemand einen Beispiel Code geben, wie ich speziell die Fernbedienung (COM1) ansprechen könnte... Falls keiner eine Idee hat, wie das gehen sollte, vielleicht einfach mal ein kleines Programm, das ein Modem anspricht (über COM2).

    Thx @ Dago



  • Bei mir funzt der Quellcode nich !
    Sagt immer das::

    **Kompilierung läuft...
    sxf.cpp
    c:\dokumente und einstellungen\geht euch nix an\desktop\neuer ordner\sxf.cpp(3) : fatal error C1083: Include-Datei kann nicht geoeffnet werden: 'comports.h': No such file or directory
    Fehler beim Ausführen von cl.exe.

    sxf.exe - 1 Fehler, 0 Warnung(en)**

    Ich Benutze den Visual C++ 6.0 Compiler

    Habe auch zig andere Quelltexte probiert da kommt immer so ne ähnliche Fehlermeldung! bitte HELP



  • 1. Wie includierst du die comport.h
    2. Liegt die comport.h auch im gleichen Verzeichnis?
    3. Liegt ebenfalls die comport.c im Verzeichnis?
    4. Ist die comport.c deinen Projektdateien beigefügt?
    5. Ist für die comport.c nur der C-Compiler ausgewählt (wobei ich fast bezweifle, dass das beim MSVC möglich ist)
    6. Wird deine Exedatei für ein 16Bit-System compiliert? (Soviel ich weiß, kann das der MSVC gar nicht)

    Vielleicht wäre es besser, wenn du die Klasse aus dem zweiten Link für 32Bit Anwendungen verwendest. Die Dateien heißen dann cport.c und cport.h. Dafür gelten dann natürlich die Punkte 5 und 6 nicht ;).


Anmelden zum Antworten