000
24.04.2004, 20:40 Uhr
~Tomycat
Gast
|
hi, ich habe an meinen Comport ein Gerät angeschlossen, es besteht aus einen IC Namens RS232
Er wird ganz normal angesteuert über den Com Port, Aus ausgang hat er 2 led´s
Wenn ich über visual Studio 2003 net eine mfc entwicklung starte, dann einen Buttion erstelle, gibt es ein PRoblem !!
Beim doppelklickt auf den Buttion fügte ich folgenden Quelltext ein. Aber Ich kann es nur einmal starten, Es flackert kurz die LES auf was es soll, beim 2ten mal starten nicht mehr, sowie ein zweitesmal anklicken auf den Buttion. Es geht erst wieder wenn ich den pc neu starte.
Jetzt WArum?
SChnipp schnipp
C++: |
DCB sDcb; HANDLE hFile; COMMTIMEOUTS sTo;
hFile=CreateFile("\\\\.\\COM1",GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); if(hFile==INVALID_HANDLE_VALUE)return ;
memset(&sDcb,0,sizeof(sDcb)); sDcb.DCBlength = sizeof(sDcb); sDcb.BaudRate = 9600; // Baudrate sDcb.fParity = FALSE; sDcb.fBinary = TRUE; sDcb.Parity = NOPARITY;// Kein Paritybit sDcb.StopBits = ONESTOPBIT; sDcb.fOutxCtsFlow = FALSE; sDcb.fOutxDsrFlow = FALSE; sDcb.fDtrControl = DTR_CONTROL_ENABLE; sDcb.fDsrSensitivity = FALSE; sDcb.fAbortOnError = FALSE; sDcb.ByteSize = 8; // 8 Datenbits
if(!SetCommState(hFile,&sDcb)) { CloseHandle(hFile); return ; }
sTo.ReadIntervalTimeout = MAXDWORD; // 0 ms Read-Tomeout sTo.ReadTotalTimeoutMultiplier = 0; sTo.ReadTotalTimeoutConstant = 0; sTo.WriteTotalTimeoutMultiplier= 1; // 1*2 ms Write Timeout sTo.WriteTotalTimeoutConstant = 2;
DWORD dwCount; char cData[16];
WriteFile(hFile,cData,16,&dwCount,0);
if(!SetCommTimeouts((HANDLE)hFile,&sTo)) { CloseHandle(hFile); return ; }
|
Bearbeitung von Pablo: |
Bitte cpp tags selber benutzen.
|
Dieser Post wurde am 27.04.2004 um 00:47 Uhr von Pablo editiert. |