000
06.05.2004, 19:04 Uhr
~Tomycat
Gast
|
hi, es handelt sich um eine Schnittstellen für Comport 1 um zu einen Gerät Daten senden und empfangen.Es ist eine MFC c++ Anwendung, geschrieben in VS 2003 net Ich habe 3 Köpfe: Verbinden, resest-lesen, schreiben-lesen. Der 1te Knopf funkt 1a Der 2te Knopf funkt 1a Beim 3ten Knopf bricht der Compiler ab, nach contine, schreibt er müll in die Variable log.Weil noch was im Puffer ist, wurde mir gesagt. Wie kann ich den Puffer leeren daß ich nach writefile readfile benutzen kann?
------------------für die Verbindung auf com1 -------------------------------
C++: |
//DCB dcb,dcb_neu; <--- das geändert.. auf global ;) COMMTIMEOUTS cto,cto_neu;
//und das h_com geändert auf global ;) h_com=CreateFile("\\\\.\\COM1",GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
GetCommState(h_com, &dcb); GetCommState(h_com, &dcb_neu); GetCommTimeouts(h_com,&cto); GetCommTimeouts(h_com,&cto_neu);
dcb_neu.DCBlength = sizeof(dcb_neu); dcb_neu.BaudRate = 9600; // Baudrate dcb_neu.fParity = FALSE; dcb_neu.fBinary = TRUE; dcb_neu.Parity = NOPARITY;// Kein Paritybit dcb_neu.StopBits = ONESTOPBIT; dcb_neu.fOutxCtsFlow = FALSE; dcb_neu.fOutxDsrFlow = FALSE; dcb_neu.fDtrControl = DTR_CONTROL_ENABLE; dcb_neu.fDsrSensitivity = FALSE; dcb_neu.fAbortOnError = FALSE; dcb_neu.ByteSize = 8; // 8 Datenbits
cto.ReadIntervalTimeout = MAXDWORD; // 0 ms Read-Tomeout cto.ReadTotalTimeoutMultiplier = 0; cto.ReadTotalTimeoutConstant = 0; cto.WriteTotalTimeoutMultiplier= 1; // 1*2 ms Write Timeout cto.WriteTotalTimeoutConstant = 2;
SetCommState(h_com, &dcb_neu); SetCommTimeouts(h_com,&cto_neu); GetDlgItem(IDC_verbinden3)->EnableWindow(FALSE); GetDlgItem(IDC_trennen3)->EnableWindow(TRUE);
-------------reset impulse und darauf mit readfile lesen -------------------------------------------
dcb.fRtsControl=RTS_CONTROL_ENABLE; // RESET if (!SetCommState(h_com, &dcb)) return ; dcb.fRtsControl=RTS_CONTROL_DISABLE; //RESET OFF // Wait for 50 ms Sleep(50); if (!SetCommState(h_com, &dcb)) return ;
CString str; DWORD dwCount; unsigned char cData[2]; int byte; for (byte = 0; byte <10; byte++) {
ReadFile(h_com,cData,2,&dwCount,0); log += dezhex(cData[0]); log += dezhex(cData[1]); } ------------------- writefile und darauf readfile (klappt nicht)-------------------
DWORD dwCount,up; unsigned char cData[2]; unsigned char schreiben[2]; int byte; char wert[6]; wert[0] = 1; wert[1] = 2; wert[2] = 2; wert[3] = 3; wert[4] = 0; wert[5] = 0; wert[6] = 125;
for (byte = 0; byte <7; byte++) { schreiben[byte] = wert[byte]; // schreiben[1] = wert[1]; WriteFile(h_com,schreiben,1,&dwCount,0); log += schreiben[byte]; // log += schreiben[1]; } UpdateData(FALSE);
for (byte = 0; byte <13; byte++) {
ReadFile(h_com,cData,2,&dwCount,0); log += dezhex(cData[0]); log += dezhex(cData[1]); } log += "\r\n"; UpdateData(FALSE);
|
Bearbeitung von Pablo: |
Bitte sich an den Regeln halten und CPP Tags selber benutzen
|
Dieser Post wurde am 10.05.2004 um 22:42 Uhr von Pablo editiert. |