Zugriff auf parallele Anschlüsse, die mit dem Befehl NET in Windows XP erstellt wurden

4009
Andres

Ich versuche, ein USB-zu-Parallel IEEE-1284 - Kabel zu erhalten, die, wie gezeigt wird, USB Printing Supportin Device managerzu arbeiten als LPT - Port und versuchte, die Antwort hier . Verwenden Sie diesen Befehl:

NET USE LPT1: \\[Computer-Name]\Printer /PERSISTENT:YES 

Der Befehl wurde erfolgreich ausgeführt, aber ich kann den LPT1 in Hardware-Geräten nicht sehen, um die Adresse zu erhalten, in die er schreiben soll. Ich kenne den von mir erstellten Port, weil ich eine Java-Anwendung erstellt habe, die serielle und parallele Ports mit RXTX lib auflistet. Hier ist die Ausgabe:

enter image description here

Ich habe alle LPT-Ports mit dem NETBefehl hinzugefügt, da mein PC keine hat. Aber ich sehe sie nirgendwo, um die Adresse zu erhalten, und RXTX lib erlaubt mir nicht, die Portadresse AFAIK zu erhalten. Irgendwelche Ideen, wie man auf Ports zugreift?

BEARBEITEN:

Um die Dinge ein wenig zu verdeutlichen, habe ich einen USB-zu-Parallel-IEEE-1284. Wenn Sie ihn an einen Windows XP-Computer anschließen, wird er als USB Printing SupportGerät angezeigt, daher erscheint er nicht als LPT-Anschluss, weil er dafür entwickelt wurde mit Druckern arbeiten.

Ich habe einen Drucker mit einem generischen / Text-Treiber erstellt und ihn an den USB001Port angeschlossen, da es sich um den Port des USB-Kabels handelt. Dann teile ich den Drucker und erstelle LPTmit dem NETBefehl einen Port . Jetzt möchte ich Daten auf diesen LPT-Port schreiben, wie ich es mit jedem anderen nativen LPT-Port tun würde, beispielsweise mit InpOut32.dll .

Wenn es nicht möglich ist, auf den Port auf diesem Weg zuzugreifen, wie kann ich auf den Port zugreifen, um Rohdaten zu schreiben / lesen? Ein Dokument nicht drucken, sondern Rohdaten darauf schreiben / lesen, wie Sie es bei einem Parallelport tun würden.

5
Können Sie nicht etwas wie public static final String PARALLEL_PORT = "LPT1"; `tun, wie im Beispielcode [Parallel Communications] (http://rxtx.qbang.org/wiki/index.php/Parallel_Communications) gezeigt? martineau vor 10 Jahren 0
In der Vergangenheit war die Hardware-Portadresse von LPT1 0x3BC (siehe [Schnittstellen] (https://en.wikipedia.org/wiki/Parallel_port#Interfaces)). martineau vor 10 Jahren 0
Nein, ich muss es in einem anderen Programm verwenden und ich brauche die Portadresse. Ja, aber die Adresse ist nicht für jeden Port gleich, oder? Andres vor 10 Jahren 0
LPT2 und 3 haben unterschiedliche feste Adressen (0x378 bzw. 0x278). Diese [drei Adressen] (https://en.wikipedia.org/wiki/Parallel_port#IBM_PC_Implementation) sind auf allen IBM PC-kompatiblen Systemen gleich. martineau vor 10 Jahren 0
Dies scheint nicht mit parallelen Ports zu funktionieren, die mit dieser Methode erstellt wurden Andres vor 10 Jahren 0
Wenn Sie nach einer Portadresse wie 0x378 suchen, glaube ich nicht, dass ein "net use lpt?" Gerät hat ein Gerät, und es ist an keiner Stelle im Geräte-Manager aufgeführt. harrymc vor 10 Jahren 0
Nach welcher Art von Adresse suchst du neben dem Namen "LPT1"? harrymc vor 10 Jahren 0
Ich brauche einen Weg, um auf die Ports zuzugreifen, wie kann ich sie verwenden? Ich kann kein Programm schreiben und ihn auffordern, auf LPT2 zuzugreifen. Ich brauche die Adresse. Andres vor 10 Jahren 0
Vielleicht fehlt uns hier der Punkt (oder zumindest ich bin es). Haben Sie ein "Parallel-zu-USB-IEEE-1284-Kabel" wie in Ihrer Frage oder ein "USB-zu-Parallel-IEEE-1284-Kabel" wie in einem Ihrer Kommentare? Vielleicht können Sie in Ihrer Frage genau klären, welchen Drucker und welche Verbindung Sie zu Ihrem Computer haben und welche Art von Software (DOS oder Windows) versucht, auf den Drucker zuzugreifen (und möglicherweise, warum es eine Portnummer benötigt). Rik vor 10 Jahren 0
Siehe meine bearbeitete Frage, die Hoffnung ist jetzt klarer. Andres vor 10 Jahren 0

4 Antworten auf die Frage

1
Rik

OK. Sie haben also ein paralleles Gerät / Drucker über ein "USB-to-Parallel-IEEE-1284" -Kabel an den USB-Port Ihres Computers angeschlossen. Jetzt müssen Sie direkt mit ihm kommunizieren. Ich verstehe, dass Sie die Software nicht direkt ändern können, um mit modernen Anschlüssen wie USB001etc. zu kommunizieren, wie dies bei Scannertreibern der Fall ist. Und die Software, die Sie haben, muss über ein normales Protokoll für alte LPTx-Ports kommunizieren (z. B. 0x378 anstelle von LPT1 usw.).

Damit bleibt Ihnen nur eine Option und das ist "Emulation". Dies sollte durch den Treiber erfolgen, der mit dem "USB-to-Parallel-IEEE-1284" -Kabel geliefert wurde. Dieser Treiber sollte einen LPTx-Port erstellen und die Port-Kommunikation aufnehmen. Die meisten (wenn nicht alle) dieser Adapter werden mit Treibern geliefert, die einen USB-Drucker emulieren. In den meisten Fällen ist dies am einfachsten (und selbst bei alten DOS-Programmen kann dies mit einem NETBefehl gelöst werden ), bei einer echten Port-Kommunikation ist dies jedoch nutzlos.

Sie müssen also ein Programm finden, das einen LPTx (und seine Anschlüsse) emulieren kann und bidirektional mit (jedem) USB-Treiber auf Ihrem Computer kommuniziert. Ich habe noch keinen gefunden.

Das einzige, was ich nützlich fand, war dieser Konverter von USB zu Parallel . Dieser emuliert den LPTx und die Anschlüsse und kommuniziert direkt mit dem Adapter. Ich habe das nicht selbst getestet, aber die Infoseite sieht vielversprechend aus. Aus der Hilfedatei:

The USB2LPT device and its driver enables redirecting of port access by random application software to a USB-attached parallel port, i.e. emulating a parallel port via USB. This unique solution works on all USB supporting Windows operating systems.

Es bezeichnet seinen eigenen Treiber als "Driver Unstable", aber Sie bekommen die Idee, wonach Sie suchen. Es benötigt aber auch einen speziellen USB2LPT-Adapter. Auf seiner FAQ-Seite :

Q3. Can I use the USB2LPT.SYS driver with a regular (cheap) USB to parallel printer adapter? A. Of course not! It's never possible due to design limitations of such adapters. See below. 

Es listet auch als Minus für sich sein Reduced speed due to emulation (expect 10..100 times slower). Aber es wird die Kommunikation mit ermöglichen Base address same as built-in (378h, 278h). Wenn Sie möchten, können Sie Ihren eigenen Adapter herstellen. Die Schaltpläne befinden sich alle auf der Website. Hier finden Sie vollständige Anweisungen (einschließlich Videos), wie Sie eine erstellen können. Oder Sie können ihm eine E-Mail schicken, um zu erfahren, wie Sie eine bekommen.

USB2LPT-Adapter USB2LPT-Adapter Konverter von USB zu Parallel

Ja, ich habe vor ein paar Wochen darüber gelesen, aber ich muss ihr Kabel kaufen, und ich versuche zuerst, mein Kabel zu bearbeiten. Vielen Dank! Andres vor 10 Jahren 0
Ich dachte, du könntest vielleicht deine eigenen bauen :) (Anweisungen sind enthalten). Aber du hast recht. Diese Software funktioniert ohne diesen Adapter nicht. Eine reine Softwarelösung wäre am besten, aber schwer zu finden. Auf [hier] (http://electronics.stackexchange.com/questions/24831/simulation-of-parallel-port-but-without-a-parallel-port) wurde vorgeschlagen, den Quellcode für die Interaktion mit einem beliebigen zu ändern Hardware / Adapter, aber ich habe niemanden gefunden, der dies getan hat. Rik vor 10 Jahren 0
Vielleicht ist [dieser Artikel] (http://ledthings.com/HowTo/HowToUSB.html) von Interesse. Es zeigt nur das Schreiben auf einen USB-LPT-Adapter, sollte jedoch mit den normalen funktionieren. Es ist ziemlich "do it youself", aber es zeigt, dass es nicht einfach ist, den USB-lpt-Adapter zu schreiben (dh ein bisschen umzuschalten) (um nicht zu erwähnen, zu lesen), der für normale Drucker (und nicht für andere Kommunikationsgeräte) gedacht ist. Rik vor 10 Jahren 0
Und zum Schluss noch eine Anmerkung zu USB-Parallelport-Adaptern (http://www.epanorama.net/circuits/parallel_output.html#usbnotes). Rik vor 10 Jahren 0
1
Debra

Ich denke, dass Sie das alles falsch angehen können. Sie sollten "NET USE" nicht verwenden, sondern den Softwaretreiber des Adapters verwenden, um dem USB-Anschluss einen virtuellen Druckeranschluss zuzuordnen. Rik hat einen Screenshot gepostet, wie das funktioniert. Nur wenn die Software des Adapters dies zulässt, sollten Sie dann so schreiben können, als wäre dieser physische Port vorhanden.

Der Befehl NET USE LPT1, den Sie angezeigt haben, gilt für den Anschluss an einen Drucker auf Ihrem eigenen Computer oder einem anderen Computer und für die Einstellung dieses Druckers als lokalen Drucker (LPT1). Es basiert darauf, auf den Gerätenamen LPT1 zu drucken und dann das umzuleiten, was Ihrer Meinung nach von Ihrer Software nicht ausgeführt wird (dies erfordert einen Hardware-Port).

Hier ist ein Treiber von Startech, der einige dieser Kabel herstellt, aber ich weiß nicht, ob es für Sie funktioniert. Es funktioniert jedoch mit einigen anderen Modellen (einschließlich derjenigen, die ich besessen habe): http://sgcdn.startech.com/005329/media/sets/ASIX_MosChip-MCS7715_Drivers/ASIX_MCS7715.zip

Entfernen Sie in der Zwischenzeit den Befehl NET USE. Es hilft Ihnen im Moment wirklich nicht, und wenn Sie es überhaupt mit dem lokalen Drucker zum Laufen bringen könnten, müssten Sie immer noch auf das LPT1-Gerät schreiben (nicht auf den Hardwarestandort, an dem es wäre, wenn es nur existiert.) )

Ich habe den Treiber, der von Windows XP für das Kabel installiert wurde, nicht installiert und zwar nicht installiert. Nein, ich schaffe es nicht mal, dass Windows einen Treiber für das Kabel installiert. Andres vor 10 Jahren 0
0
Christian Woerz

Sie benötigen das .NET-Framework und die PowerShell, aber mit diesem Skript erhalten Sie Zugriff auf eine Liste aller auf Ihrem System installierten Parallel-Ports. (+ Weitere Informationen)

$strComputer = "."   $colItems = get-wmiobject -class "Win32_ParallelPort" -namespace "root\CIMV2" `  -computername $strComputer   foreach ($objItem in $colItems) {  write-host "Availability: " $objItem.Availability  write-host "Capabilities: " $objItem.Capabilities  write-host "Capability Descriptions: " $objItem.CapabilityDescriptions  write-host "Caption: " $objItem.Caption  write-host "Configuration Manager Error Code: " $objItem.ConfigManagerErrorCode  write-host "Configuration Manager User Configuration: " $objItem.ConfigManagerUserConfig  write-host "Creation Class Name: " $objItem.CreationClassName  write-host "Description: " $objItem.Description  write-host "Device ID: " $objItem.DeviceID  write-host "DMA Support: " $objItem.DMASupport  write-host "Error Cleared: " $objItem.ErrorCleared  write-host "Error Description: " $objItem.ErrorDescription  write-host "Installation Date: " $objItem.InstallDate  write-host "Last Error Code: " $objItem.LastErrorCode  write-host "Maximum Number Controlled: " $objItem.MaxNumberControlled  write-host "Name: " $objItem.Name  write-host "Operating System Auto-Discovered: " $objItem.OSAutoDiscovered  write-host "PNP DeviceID: " $objItem.PNPDeviceID  write-host "Powe rManagement Capabilities: " $objItem.PowerManagementCapabilities  write-host "Power Management Supported: " $objItem.PowerManagementSupported  write-host "ProtocolS upported: " $objItem.ProtocolSupported  write-host "Status: " $objItem.Status  write-host "Status Information: " $objItem.StatusInfo  write-host "System Creation Class Name: " $objItem.SystemCreationClassName  write-host "System Name: " $objItem.SystemName  write-host "Time Of Last Reset: " $objItem.TimeOfLastReset  write-host  }  

Quelle: Technet-Microsoft

Ich habe es über das Internet gegründet, weiß aber nicht, wie man Power-Shell-Skripts ausführt, und Power-Shell scheint eine kostenpflichtige Software zu sein Andres vor 10 Jahren 0
@Andres Es ist eine Freeware. Ihre Windows-Version muss jedoch gültig sein. Also keine Risse oder sowas. Denn während der Installation wird geprüft, ob es eine originale Windows XP-Version gibt. [Download] (http://www.microsoft.com/de-ch/download/details.aspx?id=9591) Christian Woerz vor 10 Jahren 0
Ich habe das Skript getestet und funktioniert nicht mit PowerShell v2.0 Andres vor 10 Jahren 0
Ok, es funktioniert, aber ich bekomme nicht die mit NET erstellten parallelen Anschlüsse Andres vor 10 Jahren 0
Der parallele Anschluss wird nicht mit dem Befehl NET USE erstellt. Der Befehl teilt dem System nur mit, dass alle an LPT1 gerichteten Ausgaben stattdessen unter \\ Computername \ Druckername an den Drucker gesendet werden sollen. Debra vor 10 Jahren 0
0
harrymc

(Ich habe meine vorherige Antwort umgeschrieben, die in Ihren Fall nicht passt.)

Das Kabel wird anscheinend von Windows erkannt, der Treiber hätte jedoch eine umfangreichere Emulation ausführen müssen, damit er direkt zum Schreiben verfügbar ist.

Dies zwingt Sie dazu, ein eigenes Gerät zu entwickeln, in diesem Fall einen generischen Drucker. Es ist durchaus möglich, dass dieser Drucker unbrauchbar ist, weil er Steuercodes über das Kabel sendet, mit dem das an der anderen Seite angeschlossene Gerät nicht weiß, wie es reagieren soll. In diesem Fall ist ein Druckerkabel möglicherweise nicht die beste Möglichkeit, Geräte anzuschließen.

Das Beste, was ich finden kann, ist in dem Artikel Zugriff auf usbprint.sys, wo ein C-Programm zum direkten Schreiben von Daten in einen Drucker unter Umgehung des Druckertreibers entwickelt wurde. Sie können dieses einfache Programm möglicherweise als Vorlage verwenden, um ein eigenes Programm zum Schreiben der Daten auf das Kabel zu entwickeln.

Damit das Programm funktioniert, muss die GUID der Schnittstelle in Windows des Kabels gefunden werden, vorausgesetzt, das Kabel verfügt über eine zugängliche Schnittstellen-GUID. Sie müssen die Registrierung mit regedit oder dem schnelleren RegScanner durchsuchen .

Ja, auf diesem Weg erstelle ich LPT1 und erstelle einen Drucker, der auf dem LPT1-Anschluss druckt. Wie kann ich diesen Anschluss jedoch dem USB-zu-Parallel-IEEE-1284-Kabel zuweisen? Andernfalls druckt der Drucker an den virtuellen Port LPT1. Andres vor 10 Jahren 0
Sie sagen oben, dass der Befehl NET USE LPT1: LPT1 erfolgreich an das Kabel angeschlossen hat. Wenn dies nicht der Fall ist, haben Sie im Dialogfeld "Drucker hinzufügen" einen verfügbaren Anschluss mit der Bezeichnung USB001 oder einen ähnlichen Port. harrymc vor 10 Jahren 0
Ja, ich habe einen Drucker erstellt, der an USB001 angeschlossen ist, das mein Kabel ist, aber ich kann nicht auf den LPT-Anschluss zugreifen. Siehe meine bearbeitete Frage bitte. Andres vor 10 Jahren 0
Sie brauchen das LPT nicht, also löschen Sie es besser. Was Sie benötigen, ist ein lokaler Drucker, der mit dem Treiber des realen physischen Druckers erstellt wurde und den USB-Anschluss des Kabels verwendet. Trennen Sie alle nicht benötigten USB-Geräte, während Sie den Drucker erstellen. Die Portnummer wird wahrscheinlich USB001 sein, von der ich hoffe, dass Sie in der Portliste sehen, die der Standardport für virtuelle Drucker in Windows für USB-Drucker ist. USB002 wird nur angezeigt, wenn USB001 bereits verwendet wird. harrymc vor 10 Jahren 0
Zusätzlich zu den obigen Angaben: Was ist Ihr USB-zu-Parallel-Kabel und haben Sie beim Kauf eine Treiberdisk erhalten? harrymc vor 10 Jahren 0
Siehe meine bearbeitete Frage. Ich muss kein Dokument drucken, ich muss dieses USB-zu-Parallel-Gerät verwenden, um Rohdaten darauf zu schreiben / lesen. Das Kabel ist Z-TEK (http://www.z-tek.com.cn/), sehr chinesisches Kabel und ich habe keine CD mit Treibern erhalten Andres vor 10 Jahren 0
Ich glaube immer noch, dass Ihnen ein Fahrer fehlt. Ich schaffe es nicht, auf z-tek.com.cn zu gelangen, aber ich hoffe, Sie haben dort nach einem Treiber gesucht. Das einzige, was ich gefunden habe, ist [hier] (http://www.driverssoftwareupdates.com/z/z_tek_usb_to_serial_rs232.html) und wird nur mit XP 32-Bit funktionieren. Es erscheint in VirusTotal als sauber, aber treffen Sie Vorsichtsmaßnahmen, einschließlich eines Systemwiederherstellungspunkts. harrymc vor 10 Jahren 0
Ich habe es installiert, es ist ein Treiber-Update-Programm nichts mehr und es wurden keine neueren Treiber gefunden. Das Kabel wird als USB-Druckunterstützung erkannt, daher glaube ich nicht, dass der Treiber das Problem ist. Andres vor 10 Jahren 0
Ich habe meine Antwort umgeschrieben, kann aber nicht garantieren, dass der beschriebene Ansatz funktioniert. Möglicherweise ist es besser, ein anderes Verbindungskabel zu erhalten. harrymc vor 10 Jahren 0