Nein, hab ich wieder geändert.
Hier mal der komplette Code:
Code:// SerielleSchnittstelle.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung. // #include "stdafx.h" #include "stdio.h" #include "stdlib.h" #include "string.h" #include "windows.h" #include "strsafe.h" void ErrorExit(LPTSTR lpszFunction); int i = 1234567; HANDLE hSerial; COMMTIMEOUTS timeouts; DCB dcbSerialParams; char szBuff; char szBuff1[8]; char szBuff2[8]; char szBuff3[8]; DWORD dwBytesRead; DWORD dwBytesWrite; int n = 8; //4096; int _tmain(int argc, _TCHAR* argv[]) { hSerial = CreateFile("COM4", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if(hSerial==INVALID_HANDLE_VALUE) { if(GetLastError()==ERROR_FILE_NOT_FOUND) { // Generate an error // Fehlercode ausgeben if(!GetProcessId(NULL)) { ErrorExit(TEXT("GetProcessId")); } //serial port does not exist. Inform user. printf("Fehler bei CreateFile. Serial Port existiert nicht!\n"); } //some other error occurred. Inform user. printf("Fehler bei CreateFile. Sonstiger Fehler!\n"); } else { printf("Kein Fehler bei CreateFile!\n"); } ////////////////////////////// if (!GetCommState(hSerial, &dcbSerialParams)) { //error getting state printf("Fehler bei GetCommState!\n"); } else { printf("Kein Fehler bei GetCommState!\n"); } /*dcbSerialParams.BaudRate=CBR_19200; //CBR_57600; dcbSerialParams.ByteSize=8; dcbSerialParams.StopBits=ONESTOPBIT; dcbSerialParams.Parity=NOPARITY; dcbSerialParams.fOutX=1; dcbSerialParams.fInX=1;*/ dcbSerialParams.BaudRate=CBR_19200;//a; /* oder was Anders */ dcbSerialParams.DCBlength=sizeof(DCB); /* !!! */ dcbSerialParams.fBinary=1; dcbSerialParams.fOutxCtsFlow=0; dcbSerialParams.fOutxDsrFlow=0; dcbSerialParams.fDtrControl=DTR_CONTROL_ENABLE; dcbSerialParams.fDsrSensitivity=0; dcbSerialParams.fRtsControl=RTS_CONTROL_ENABLE; if(!SetCommState(hSerial, &dcbSerialParams)) { //error setting serial port state printf("Fehler bei GetCommState beim Parameter belegen!\n"); } else { printf("Kein Fehler bei GetCommState beim Parameter belegen!\n"); } /////////////////////////////// timeouts.ReadIntervalTimeout=50; timeouts.ReadTotalTimeoutConstant=50; timeouts.ReadTotalTimeoutMultiplier=10; timeouts.WriteTotalTimeoutConstant=50; timeouts.WriteTotalTimeoutMultiplier=10; if(!SetCommTimeouts(hSerial, &timeouts)) { //error occureed. Inform user printf("Fehler bei Timeout!\n"); } else { printf("Kein Fehler bei Timeout!\n"); } ////////////////////////////////// while(i < 9999999) { i = 0; if(!ReadFile(hSerial, &szBuff2, n, &dwBytesRead, NULL)) { //error occurred. Report to user. printf("Fehler bei ReadFile!\n"); } else { i = atoi(szBuff2); _itoa_s(i,szBuff3,10); printf (szBuff3); printf ("\n"); } //////////////////////////////// //szBuff[0] = 'r'; i = 1234569; _itoa_s(i,szBuff1,10); if(!WriteFile(hSerial, &szBuff1, n, &dwBytesWrite, NULL)) { //error occurred. Report to user. printf("Fehler bei WriteFile!\n"); } else { printf (szBuff1); printf ("\n"); } } /////////////////////////////// CloseHandle(hSerial); //////////////////////////////// system("pause"); return 0; } // Fehlerfunktion void ErrorExit(LPTSTR lpszFunction) { // Retrieve the system error message for the last-error code LPVOID lpMsgBuf; LPVOID lpDisplayBuf; DWORD dw = GetLastError(); FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL ); // Display the error message and exit the process lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT, (lstrlen((LPCTSTR)lpMsgBuf) + lstrlen((LPCTSTR)lpszFunction) + 40) * sizeof(TCHAR)); StringCchPrintf((LPTSTR)lpDisplayBuf, LocalSize(lpDisplayBuf) / sizeof(TCHAR), TEXT("%s failed with error %d: %s"), lpszFunction, dw, lpMsgBuf); MessageBox(NULL, (LPCTSTR)lpDisplayBuf, TEXT("Error"), MB_OK); LocalFree(lpMsgBuf); LocalFree(lpDisplayBuf); ExitProcess(dw); }







Zitieren

Lesezeichen