Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: FAQ - C++ Builder (VCL/CLX) ::  Schnittstellen - USB zu RS232/Seriell     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
dreamer20000
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.04.2001
Beiträge: 10
Beitrag dreamer20000 Mitglied 21:24:00 19.01.2002   Titel:   Schnittstellen - USB zu RS232/Seriell            Zitieren

Hallo!

Da ich bei meinem Notebook keine Serielle Schnittstelle habe, habe ich mir eine USB-Serielle besorgt. Jetzt hab ich Probleme diese anzusteuern.

Normal sollte dies einfach mit "COM2" etc. funktionieren.

Deshalb meine Bitte: Bitte schickt mir Source Codes wie man generell eine serielle Schnitstelle initialisiert und etwas darüber sendet bzw. empfangt.

Mit dem ActiveX - Komponent von Microsoft (.OCX) MSComm... habe ich auch schon probiert. Wenn ich etwas schicken oder Empfangen will, hängt sich der PC auf (hängt sich richtig auf...KERNEL - Maus übermalt Symbole etc.)

Danke THOMAS

[ Dieser Beitrag wurde am 19.02.2002 um 17:11 Uhr von Jansen editiert. ]
Werbeunterbrechung
CMatt
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.05.2001
Beiträge: 3449
Beitrag CMatt Mitglied 18:57:00 20.01.2002   Titel:              Zitieren

Wollen wir was wetten, das du nicht gesucht hast, das Thema steht nähmlich sogar in der FAQ [img]images/smiles/icon_razz.gif[/img]
_inp und _outp (Parallelschnittstelle)

Es geht hier zwar um die LTP, aber das ganze geht mit der COM genau gleich, blos "LTP1" = "COM1"

[ Dieser Beitrag wurde am 20.01.2002 um 17:58 Uhr von CMatt editiert. ]

_________________
nur her mit euren Problemen....
dreamer20000
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.04.2001
Beiträge: 10
Beitrag dreamer20000 Mitglied 20:19:00 20.01.2002   Titel:              Zitieren

Ich werde das probieren.

Muss ich denn da nichts mehr initialisieren. z.B.Baut-Rate?

Gibt es nicht vielleicht ein einfaches Komponent das man einfügen kann. Wie bei Visual Basic?

THOMAS
Peter
Mitglied

Benutzerprofil
Anmeldungsdatum: 18.08.2000
Beiträge: 2476
Beitrag Peter Mitglied 20:34:00 20.01.2002   Titel:              Zitieren

Hier ein wenig Code. Sollte Dir weiter helfen [img]images/smiles/icon_wink.gif[/img]
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
bool __fastcall TModem::OpenComm(AnsiString ComPort, DWORD BaudRate, BYTE ByteSize, BYTE Parity, BYTE StopBits)
{
    // Schnittstelle öffnen
    CommHandle=CreateFile(  ComPort.c_str(),
                            GENERIC_READ | GENERIC_WRITE,
                            0,    /* comm devices must be opened w/exclusive-access */
                            NULL, /* no security attrs */
                            OPEN_EXISTING, /* comm devices must use OPEN_EXISTING */
                            0, // no overlapped I/O
                            NULL  /* hTemplate must be NULL for comm devices */
                            );
    // Prüfen ob Schnittstelle geöffnet werden konnte
    if(CommHandle==INVALID_HANDLE_VALUE)
    {   Application->MessageBox("Fehler beim Ínitialisieren der Schnittstelle.\n\n"
                                "Schnittstelle nicht vorhanden, oder ein anderes\n"
                                "Programm hat diese noch geöffnet.",ComPort.c_str(),MB_ICONEXCLAMATION);
        return(false);
    }
    // Timeout für Read setzen damit nicht auf ein Zeichen
    // von der Schnittstelle gewartet wird
    GetCommTimeouts(CommHandle,&CommTimeOut);
    CommTimeOut.ReadIntervalTimeout=MAXDWORD;
    CommTimeOut.ReadTotalTimeoutMultiplier=0;
    CommTimeOut.ReadTotalTimeoutConstant=0;
    SetCommTimeouts(CommHandle,&CommTimeOut);
    SetCommMask(CommHandle,EV_RXCHAR);
    GetCommState(CommHandle,&CommDCB);
    /*
        CBR_110     CBR_19200
        CBR_300     CBR_38400
        CBR_600     CBR_56000
        CBR_1200    CBR_57600
        CBR_2400    CBR_115200
        CBR_4800    CBR_128000
        CBR_9600    CBR_256000
        CBR_14400
 
        #define NOPARITY            0
        #define ODDPARITY           1
        #define EVENPARITY          2
        #define MARKPARITY          3
        #define SPACEPARITY         4
 
        #define ONESTOPBIT          0
        #define ONE5STOPBITS        1
        #define TWOSTOPBITS         2
 
        typedef struct _DCB
        {   DWORD DCBlength;           // sizeof(DCB)
            DWORD BaudRate;            // current baud rate
            DWORD fBinary: 1;          // binary mode, no EOF check
            DWORD fParity: 1;          // enable parity checking
            DWORD fOutxCtsFlow:1;      // CTS output flow control
            DWORD fOutxDsrFlow:1;      // DSR output flow control
            DWORD fDtrControl:2;       // DTR flow control type
            DWORD fDsrSensitivity:1;   // DSR sensitivity
 
            DWORD fTXContinueOnXoff:1; // XOFF continues Tx
            DWORD fOutX: 1;            // XON/XOFF out flow control
            DWORD fInX: 1;             // XON/XOFF in flow control
            DWORD fErrorChar: 1;       // enable error replacement
            DWORD fNull: 1;            // enable null stripping
            DWORD fRtsControl:2;       // RTS flow control
            DWORD fAbortOnError:1;     // abort reads/writes on error
            DWORD fDummy2:17;          // reserved
            WORD wReserved;            // not currently used
 
            WORD XonLim;               // transmit XON threshold
            WORD XoffLim;              // transmit XOFF threshold
            BYTE ByteSize;             // number of bits/byte, 4-8
            BYTE Parity;               // 0-4=no,odd,even,mark,space
            BYTE StopBits;             // 0,1,2 = 1, 1.5, 2
            char XonChar;              // Tx and Rx XON character
            char XoffChar;             // Tx and Rx XOFF character
            char ErrorChar;            // error replacement character
 
            char EofChar;              // end of input character
            char EvtChar;              // received event character
            WORD wReserved1;           // reserved; do not use
    } DCB;
    */

    CommDCB.BaudRate=BaudRate;
    CommDCB.ByteSize=ByteSize;
    CommDCB.Parity=Parity;
    CommDCB.StopBits=StopBits;
    CommDCB.fDtrControl=DTR_CONTROL_ENABLE;
    CommDCB.fRtsControl=RTS_CONTROL_ENABLE;
    SetCommState(CommHandle, &CommDCB);
    PurgeComm(CommHandle,PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);
 
    return(true);
}
Peter
Mitglied

Benutzerprofil
Anmeldungsdatum: 18.08.2000
Beiträge: 2476
Beitrag Peter Mitglied 20:52:00 20.01.2002   Titel:              Zitieren

Ach so, ich vergass, obiger Code bezieht sich auf eine "normale" COM. Mit USB hab ich noch nix gemacht.
flosko
Mitglied

Benutzerprofil
Anmeldungsdatum: 10.10.2001
Beiträge: 754
Beitrag flosko Mitglied 15:42:00 21.01.2002   Titel:              Zitieren

am leichtesten relisierst du ne USB-Verbindung über die COM und nen Konverter dazwischen. Damit lässt sich dann die USB ansprechen wie eine COM-Schnittstelle (es wird eine VIRTUELLE COM eingerichtet...)...

interessant zu diesem thema ist z.B. [url] www.ftdichip.com [/url], die integrieren so einen Umsetzer sogar in einen DB9-Stecker...

mfg
-flo-

_________________
mfg
-flo-
---- www.8ung.at/flosko ----
c++.de :: FAQ - C++ Builder (VCL/CLX) ::  Schnittstellen - USB zu RS232/Seriell   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können keine Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum nicht antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.