Entwickler-Ecke

Windows API - Steuerungen über LPTx


OeBe - Mo 10.02.20 11:08
Titel: Steuerungen über LPTx
Habe zahlreiche Programm für Steuerungen über LPT und COM aus der Turbo Pascal-Zeit, die ich in virtuellen Boxen wiederbeleben möchte, und zwar mit eigener API-Programmierung. Bestehende DLLs wie InputOut32.dll, io.dll usw. sind mir bekannt und funktionieren auch.
Probleme habe ich mit der korrekten Verwendung von CreateFile, CreateFileW und DeviceIOControl, hierbei vor allem mit dem Gerätenamen. Die Verwendung von 'LPT1', '\\\\.\\LPT1' scheint nicht zu funktionieren. An der Schnittstelle hängt natürlich kein Drucker, sondern die notwendigen Pins mit dahinter liegenden Verstärkern usw.
Für Tipps bzw. Hinweise auf Sourcecodes der genannten DLLs wäre ich sehr dankbar.

OeBe


Th69 - Mo 10.02.20 17:14

Hallo und :welcome:

hast du mal versucht mittels EnumPorts [https://docs.microsoft.com/en-us/windows/win32/printdocs/enumports] die Schnittstellennamen zu ermitteln?
In C++ sieht dieser Code so aus (aus dem Internet kopiert):

C++
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
PORT_INFO_1A pi[200];
DWORD bytes, size;

for (int i = 0; i < 200; i++)
  i[i].pName = "                     "; // Puffer bereitstellen (kein schöner Code!)

EnumPorts(NULL, 1, (LPBYTE)&pi, 200*sizeof(pi[0]), &bytes, &size);

for (DWORD i = 0; i < size; i++)
  std::cout << pi[i].pName << std::endl;

Es kann natürlich auch an der VM (bzw. dessen Konfiguration) liegen, daß die Schnittstellen nicht durchgereicht werden.
Verstehe ich das richtig (wegen den von dir angegebene Tags), daß du Win7 als Host und Win2000 als VM benutzt?


OeBe - Mo 10.02.20 18:39

Hallo und danke.
Ich verwende einen alten PC, auf dem gerade noch Win2000 installiert werden kann, und der noch eine parallele Schnittstelle eingebaut hat.
Ebenso verwende ich PCs mit Windows 10 und Oracle- bzw. VMware-Boxen mit Windows 2000 bzw. Windows 7 als Clients mit USB-zu-LTP-Adaptern.
Leider kein Erfolgserlebnis, vermutlich weil die angeschlossenen Geräte (nur Elektronik) keine Windows-bekannten Geräte sind.
War unter Turbo Pascal alles kein Problem.
OeBe