Hi,
ich bin gerade demit beschäftigt, ein Programm zu schreiben, mit dem ich Werte, die ich von einem AD-Wandler über den com Port bekomme, auswerten kann.
Das Problem ist, dass ich immer "FEHLER #06" bekomme ( => WriteFile gibt FALSE zurück )
Kann das daran liegen, dass kein Gerät am com port angeschlossen ist, oder wie oder was?
hier mal mein quelltext:
ich bin gerade demit beschäftigt, ein Programm zu schreiben, mit dem ich Werte, die ich von einem AD-Wandler über den com Port bekomme, auswerten kann.
Das Problem ist, dass ich immer "FEHLER #06" bekomme ( => WriteFile gibt FALSE zurück )
Kann das daran liegen, dass kein Gerät am com port angeschlossen ist, oder wie oder was?
hier mal mein quelltext:
Code:
#include <windows.h>
#include <iostream.h>
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
HANDLE hCom = CreateFile("COM1", GENERIC_WRITE|GENERIC_READ, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL);
if(!SetupComm(hCom, 512, 512))
{
MessageBoxA(NULL, "FEHLER #01", "comPort", NULL);
return 0;
}
DCB dcb;
ZeroMemory(&dcb, sizeof(DCB));
char buffer[100];
strcpy(buffer,"baud=1200 parity=N data=8 stop=1");
if (BuildCommDCB((char*)&buffer, &dcb))
{
if (dcb.BaudRate != CBR_1200)
{
MessageBoxA(NULL, "FEHLER #02", "comPort", NULL);
return 0;
}
}
else
{
MessageBoxA(NULL, "FEHLER #03", "comPort", NULL);
return 0;
}
if(GetCommState(hCom, &dcb))
{
dcb.BaudRate = CBR_19200;
dcb.ByteSize = 8;
dcb.Parity = 0;
dcb.StopBits = 0;
SetCommState(hCom, &dcb);
}
else
{
MessageBoxA(NULL, "FEHLER #04", "comPort", NULL);
return 0;
}
if (hCom == INVALID_HANDLE_VALUE)
{
MessageBoxA(NULL, "FEHLER #05", "comPort", NULL);
return 0;
}
DWORD temp, numbytes_ok;
COMSTAT ComState;
OVERLAPPED Overlap;
char buf_out[1] = "a";
ClearCommError(hCom, &temp, &ComState);
ZeroMemory(&Overlap, sizeof(OVERLAPPED));
if(!temp)
{
if(!WriteFile(hCom, &buf_out, 1, &numbytes_ok, &Overlap))
{
MessageBoxA(NULL, "FEHLER #06", "comPort", NULL);
return 0;
}
}
DWORD error;
error = GetLastError();
if(error)
MessageBoxA(NULL, (char *)error, "comPort", NULL);
CloseHandle(hCom);
MessageBoxA(NULL, "Alles im grünen Bereich!", "comPort", NULL);
return 0;