Ansteuern der Schnittstelle
Geizhals » Forum » Programmierung » Ansteuern der Schnittstelle (43 Beiträge, 293 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
....
Re(4): Ansteuern der Schnittstelle
19.04.2002, 09:30:05
Hi!
Hier ein kleines Beispiel zur Verwendung der Funktionen. Dieses Beispiel sollte die Schnittstelle öffnen, schreiben und lesen und wieder schließen. Es läßt sich zwar compilieren, jedoch hägt das Programm beim Schreiben (WriteFile()). Ich denke mal das liegt daran, das der LPT Treiber vom Betriebssystem für Drucker geschreiben wurde und deshalb auf ein paar Handshake Signale wartet, die er ja nicht bekommt, da kein Drucker dran hängt. (Hab am Ende des Postings das Beispielprogramm angehängt).

Habe aber erst vor kurzem einen Treiber für WinNT geschrieben, mit dem man direkt auf die Register des LPT zugreifen kann. Kann ja mal versuchen, den für Win2k zu compilieren falls du direkten Registerzugriff benötigst. Sag mir halt Bescheid.

Was willst du eigentlich mit dem LPT ansteuern?



/**********************************************
* Hier das Beispiel:
**********************************************/

#include <iostream>
#include <windows.h>
using namespace std;

int main()
{
BOOL status;
unsigned char outBuf;
unsigned char inBuf;
DWORD bytesWritten;
DWORD bytesRead;

// LPT öffnen
HANDLE hLpt = CreateFile(
"LPT1",
GENERIC_READ | GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);

// prüfen ob LPT erfolgreich geöffnet wurde
if (hLpt == INVALID_HANDLE_VALUE) {
cout << "Fehler beim Öffnen von LPT1" << endl;
return -1;
}

cout << "LPT1 erfolgreich geöffnet!" << endl;


// 55Hex auf LPT schreiben
outBuf = 0x55;
status = WriteFile(
hLpt,
&outBuf,
sizeof(unsigned char),
&bytesWritten,
NULL);

// auf Erfolg prüfen
if (!status) {
cout << "Fehler beim Schreiben auf LPT1! status=" << GetLastError() << endl;
return -1;
}
else
cout << "schreiben erfolgreich!" << endl;
            

// von LPT lesen
status = ReadFile(
hLpt,
&inBuf,
sizeof(unsigned char),
&bytesRead, NULL);

// auf Erfolg prüfen
if (!status) {
cout << "Fehler beim Lesen von LPT1! status=" << GetLastError() << endl;
return -1;
}


cout << "Gelesener Wert: 0x" << hex << inBuf << endl;

// LPT schließen;
CloseHandle(hLpt);
return 0;
}



--- This message was written using 100% recycled electrons! ---

Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung