Daten aus Datenspeicher über COM1 auslesen



  • 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?


Anmelden zum Antworten