A
Hi
Ich muss daten über den Port COM1 aus einem Datenspeicher der Firma Völkel auslesen.
Ich habe es mit folgendem Code versucht:
HANDLE hCom;
LPDCB lpDcb;
hCom=CreateFile("COM1",GENERIC_READ | GENERIC_WRITE,1,0,OPEN_EXISTING,1,NULL);
if (hCom==INVALID_HANDLE_VALUE)
{
MessageBox("Invalid Handle Value For Communication Port.Program Fails!");
return ;
}
BYTE* Buffer;
DWORD dwTimeout=1000;
DWORD dwRead;
DWORD dwResult;
OVERLAPPED OL={0};
long BufferIndex=0;
BOOL blContinue=TRUE;
if(Buffer==NULL)
{
MessageBox(_T("Program Failed!Can Not Allocate Memory"));
return;
}
OL.hEvent=CreateEvent(NULL, TRUE, FALSE, NULL);
if (OL.hEvent ==NULL )
{
MessageBox(_T("Program Failed!Can Not Create Event"));
return ;
}
CFile bf;
do
{
dwRead=ReadFile(hCom,Buffer,1, &dwRead, &OL);//m_BytesOfMemory
if (dwRead==0)
{
if (GetLastError() != ERROR_IO_PENDING)
dwRead=0 ;
else
{ // Write is pending.
dwResult = WaitForSingleObject(OL.hEvent, dwTimeout);
switch(dwResult)
{
case WAIT_OBJECT_0:
if (!GetOverlappedResult(hCom, &OL, &dwRead, FALSE))
dwRead=0 ;
break;
case WAIT_ABANDONED:
dwRead=0 ;
break;
case WAIT_TIMEOUT:
dwRead=0 ;
break;
default:
dwRead=0 ;
break;
}
}
if (dwRead==0)
blContinue=FALSE;
else
{
BufferIndex+=dwRead;
bf.Write(Buffer,dwRead);
}
}
else
{
BufferIndex+=dwRead;
bf.Write(Buffer,dwRead);
}
}while(blContinue);
Sleep(700);
CloseHandle(OL.hEvent);
CloseHandle(hCom);
Die Verbindung ist in Ordnung! Es wird einfach nichts aus dem Speicher gelesen... (dwRead=0)
Kann mir jemand helfen?
Wie kann ich dann etwas in den Speicher schreiben?