| Autor |
Nachricht |
dreamer20000
Mitglied
Benutzerprofil
Anmeldungsdatum: 14.04.2001
Beiträge: 10
|
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
|
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
|
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
|
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
|
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
|
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 ----
|
|
 |
|
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.
|
|
|
|
|