ReadFile stürzt ab
-
Also...
Mit CreateFile kann man ja ein HANDLE auf den LPT1 erhalten.
Wenn ich allerdings mit ReadFile() nun einlesen will hängt sich das Prog
elegant auf.Wie kann ich unter NT trotzdem den LPT1 auslesen?
inportb funtzt net und in der FAQ hab ich gefunden, das der Parallel-Port bidirektional eingestellt sein muss. Mein Port läuft mit EPP & ECP.Ich bin für jeden ansatz dankbar!
-
Wenn ich mich nicht irre funktioniert CreateFile unter NT / 2000 nicht. Such bei google mal nach der io.dll, die kannst du problemlos unter Win95/98/2k/XP/NT verwenden.
-
Original erstellt von Ahvolon:
Wenn ich mich nicht irre funktioniert CreateFile unter NT / 2000 nicht.Woher hast du denn den blödsinn? CreateFile funktioniert hier auf allen Windows System einwandfrei (zumindest für Com-Ports und Files).
Zeig mal etwas code zu dem Absturz...
-junix
-
Das ist der Code, welcher zum Absturz führt.
Evt. gibt es einen Fehler den ich übersehen habe...Danke für die Hilfe.
void CParalellPortDlg::DoTheStuff() { const DWORD BUFFER_SIZE = 20; DWORD BytesRead = 0; HANDLE hLPT1 = 0; CString ErrorCode; char HierStehts[BUFFER_SIZE + 1]; hLPT1 = CreateFile( "LPT1", GENERIC_READ | GENERIC_WRITE , 0, 0, OPEN_EXISTING, 0, 0 ); if( hLPT1 != INVALID_HANDLE_VALUE ) //Handle ist korrekt { m_List.AddString( "Handle zum Port besteht" ); if( ReadFile( hLPT1, &HierStehts, BUFFER_SIZE, &BytesRead,0 ) ) //HIER if( BytesRead != 0 ) { CString Bytes; Bytes.Format( "%d", BytesRead ); m_List.InsertString( 0, "Es wurden " + Bytes + " Bytes gelesen" ); } else { DWORD LastError = GetLastError(); ErrorCode.Format( "%d",LastError ); m_List.AddString( "Fehler: Es wurden NULL Bytes gelesen.Error Code: " + ErrorCode ); } } else { DWORD LastError = GetLastError(); ErrorCode.Format( "%d", LastError ); m_List.AddString( "Fehler: Port konnte nicht gelesen werden. Error Code: " + ErrorCode ); } } else { m_List.AddString( "Fehler: Es konnte kein Handle zum Port erlangt werden" ); } CloseHandle( hLPT1 ); }
-
Uppsala
Ich glaube mein nachtäglicher Formatierungsversuch war nicht von Erfolg
gekrönt...Deshalb grad nocheinmal:
void CParalellPortDlg::DoTheStuff() { const DWORD BUFFER_SIZE = 20; DWORD BytesRead = 0; HANDLE hLPT1 = 0; CString ErrorCode; char HierStehts[BUFFER_SIZE + 1]; hLPT1 = CreateFile( "LPT1", GENERIC_READ | GENERIC_WRITE , 0, 0, OPEN_EXISTING, 0, 0 ); if( hLPT1 != INVALID_HANDLE_VALUE ) //Handle ist korrekt { m_List.AddString( "Handle zum Port besteht" ); if( ReadFile( hLPT1, &HierStehts, BUFFER_SIZE, &BytesRead, 0 ) ) //HIER SCHMIERT ER AB { if( BytesRead != 0 ) { CString Bytes; Bytes.Format( "%d", BytesRead ); m_List.InsertString( 0, "Es wurden " + Bytes + " Bytes gelesen" ); } else { DWORD LastError = GetLastError(); ErrorCode.Format( "%d",LastError ); m_List.AddString( "Fehler: Es wurden NULL Bytes gelesen.Error Code: " + ErrorCode ); } } else { DWORD LastError = GetLastError(); ErrorCode.Format( "%d", LastError ); m_List.AddString( "Fehler: Port konnte nicht gelesen werden. Error Code: " + ErrorCode ); } } else { m_List.AddString( "Fehler: Es konnte kein Handle zum Port erlangt werden" ); } CloseHandle( hLPT1 ); }