web-dev-qa-db-fra.com

Comment simuler une imprimante parallèle (LPT) avec une imprimante USB?

Certains logiciels existants n'impriment que sur des imprimantes connectées via un port LPT. La machine que je dois utiliser ne dispose toutefois pas d'un port parallèle. De plus, mon imprimante est un périphérique USB.

Comment inciter mon ordinateur à penser que mon imprimante USB est connectée au port lpt?

De plus, ceci est pour un bureau. J'aurai des droits d'administrateur pour l'implémentation du travail, mais je cherche une solution qui fonctionne lorsqu'un utilisateur "normal" est connecté après que tout soit configuré.

18
Dane O'Connor

Vous pouvez tromper Windows en utilisant l’imprimante USB en tant qu’imprimante "réseau" factice connectée à LPT1.

Partagez l'imprimante USB

Utilisez un nom de partage facile à retenir, tel que "Imprimante".

Connectez l'imprimante partagée en tant que LPT1

Net Use LPT1: \\[Computer-Name]\Printer /PERSISTENT:YES
21
harrymc

L'utilisation d'un adaptateur USB vers parallèle n'a aucun sens. Nous parlons ici d’utiliser un très vieux logiciel hérité sur du matériel avec des connexions uniquement USB. Dans mon cas, une imprimante d'étiquettes ZEBRA.

La solution dans mon cas était.

  1. Installez l’imprimante USB avec ses pilotes (juste pour savoir sur quel port USB est connecté)
  2. Changez le port du pilote en FILE (et libérez le port USB)
  3. Installez un pilote générique/texte uniquement et modifiez le port sur le même port USB logique que celui indiqué au point 1
  4. Partagez l’imprimante générique/texte uniquement afin de la rendre facilement visible dans VBA
  5. Installez l'adaptateur Microsoft Loopback sur une adresse IP inutilisée fixe (sinon, votre imprimante ne sera pas visible lorsque le câble sera déconnecté).
  6. Attribuez un port LPTx comme expliqué précédemment par la ligne de commande (il s’agit de tous les logiciels nécessitant un ancien LPT)

Avec quelques lignes de code, vous pourrez envoyer les codes ASCII à l'imprimante comme auparavant.

Maintenant, vous pouvez facilement imprimer en VBA (testé avec les imprimantes Windows 7 64 bits et ZM400 Zebra)

Open "\\Kb\ZM400" For Output As #1       'Kb = computer Name; ZM400 = Shared printer name
For rows = 1 To 37 ' send the first 37 rows of ASCII codes from the worksheet "STRINGS"
    Print #1, Worksheets("STRINGS").Cells(rows, 1).Value
Next
Close #1
5
Angelo Gabriele

Utilisez le programme d’impression DOS pour manipuler les ports disponibles sur les périphériques souhaités. Vous pouvez le télécharger à partir de ce lien https://www.dropbox.com/s/gdx05sckmbqnast/dosprint.exe?dl=0 (Imprimer)

https://www.dropbox.com/s/alf6hdd5fctepmo/dosprintui.exe?dl=0 (interface utilisateur d'impression)

Exécutez d’abord dosprint et dosprintui en tant qu’administrateur, puis double-cliquez sur l’icône du bac dosprintui pour obtenir la liste des ports disponibles à mapper, puis double-cliquez sur le bouton lpt1 ou in set et choisissez l’imprimante que vous souhaitez mapper, puis cliquez sur D'accord. BINGO maintenant, vous pouvez imprimer sur le port LPT1 et votre imprimante USB l’imprimera pour vous.

2
Govinda Thapa

Les programmes DOS sont toujours utilisés dans le monde des affaires. Des conseils sur la manière de les faire fonctionner correctement sur une plate-forme informatique moderne sont omniprésents sur le Web. Voici ce qui a fonctionné pour moi.

Le programme DOS 16 bits sur lequel nous devons travailler réside sur un serveur Windows 2003 32 bits qui sera bientôt supprimé. Jusque-là, un partage du programme est mappé sur deux ordinateurs clients 32 bits du domaine principal avec la stratégie de groupe. Un raccourci vers le fichier .cmd qui lance le programme est placé manuellement sur les clients, ainsi que sur le domaine principal. Le programme fonctionne bien sur Windows 8.1. Un peu un compromis pour être sûr, mais les machines seront mises à niveau vers Windows 8.1 64 bits lorsque le programme DOS, qui s'exécute à partir du domaine secondaire, est retiré.

L'impression à partir du programme présente le plus gros défi. Deux imprimantes parallèles différentes sont utilisées avec ce programme, mais le programme n’imprime que sur un seul port et il n’est pas possible de modifier ce comportement. Besoin d'imprimer un chèque à l'imprimante laser? Il doit être connecté au port LPT1. Besoin d'imprimer un vidage de données sur l'imprimante matricielle? Il doit également être connecté au port LPT1. Deux personnes travaillent avec ce programme quotidiennement, nous allons donc utiliser leurs ordinateurs, un pour chaque imprimante. Installons la première imprimante:

  • Si l'ordinateur dispose d'un port physique DB-25 (parallèle), vous pouvez le désactiver dans le BIOS. Windows 8.1 ne le supportera pas et nous n'en avons pas besoin.

  • Un adaptateur d’imprimante parallèle USB à DB25 modèle 16899 de Cables-to-Go est utilisé pour connecter l’imprimante à l’ordinateur. L'adaptateur s'installe automatiquement et n'est pas reconnu en tant que périphérique parallèle ou port LPT.

  • Maintenant, ouvrez Périphériques et imprimantes. Cliquez sur Ajouter une imprimante et sélectionnez L'imprimante que je veux n'est pas répertoriée. Dans la boîte de dialogue suivante, sélectionnez Ajouter une imprimante locale ou réseau avec des paramètres manuels et, dans la boîte de dialogue suivante, Utiliser un port existant. Sélectionnez un port d'imprimante virtuelle pour USB, USB001 ou USB002, dans la liste et non les options de port LPT.

  • La première imprimante est une imprimante matricielle multi-mode Panasonic KX-P1191. L'imprimante ne figure pas dans la boîte de dialogue qui demande un pilote et la mise à jour de la liste en cliquant sur Windows Update n'aide pas. Une vérification du site de support de Panasonic indique que l'imprimante n'est pas complètement prise en charge à ce stade, mais un spécialiste du support technique de Panasonic a aidé à comprendre le chemin qui a conduit au pilote Epson FX Series 1(80) fourni avec Windows 8.1. Ça fonctionne parfaitement.

Maintenant l’imprimante est installée. Mais il se trouve sur le port USB001 et le programme n’imprimera que sur le port LPT1. La solution est relativement simple et peut être intégrée directement dans le fichier de commandes utilisé pour démarrer le programme. Passons à la vieille école et jouons un tour sur notre imprimante: nous le partagerons et imprimerons sur LPT1 de cette façon.

  • Cliquez avec le bouton droit sur l’imprimante et choisissez Propriétés. Partagez l'imprimante, ne la répertoriez pas dans le répertoire, créez un nom de partage abrégé pour vous donner une idée, puis assurez-vous que l'utilisateur de l'ordinateur client est répertorié dans la zone Nom du groupe ou de l'utilisateur sous l'onglet Sécurité.

  • Les deux personnes qui imprimeront sur ces imprimantes créent mon chèque de règlement. Je leur ai donc donné les droits d'administrateur de domaine. Cela a peut-être été inutile. Les deux sont des utilisateurs du domaine principal mais pas du secondaire, et je ne voulais pas perdre de temps à résoudre le problème des autorisations.

Maintenant, modifiez le fichier de commandes et utilisez la commande Net Use bien documentée pour implémenter la solution d'impression:

@echo off
::delete the printer
Net Use lpt1 /delete
::add the printer
Net Use lpt1 \\\COMPUTER\PRINTER /persistent:yes
::fire up the nasty ol' DOS program
<existing syntax used to start the program>

Où ORDINATEUR est le nom de l'ordinateur et IMPRIMANTE est le nom de partage de l'imprimante. La procédure a également bien fonctionné sur un deuxième ordinateur pour l'imprimante HP LaserJet 1100 à l'aide du pilote "HP LaserJet 1100 (MS)" fourni avec Windows 8.1.

-- REMARQUES --

Erreur système 5:

Assurez-vous que l'utilisateur est répertorié sous l'onglet Sécurité. "Tout le monde" peut être supprimé. Des privilèges d'administrateur de domaine sont-ils requis pour l'utilisateur? Probablement pas, si tout fonctionne à partir d'un domaine.

Erreur système 66:

Vérifiez votre syntaxe. Vous avez probablement mal orthographié le nom de l'ordinateur, de l'imprimante ou avez peut-être manqué le côlon? Un seul point est nécessaire, selon la documentation de Microsoft. L'ajout de deux points inutiles à lpt1 [:] provoquera-t-il un échec?

Tout sur l'utilisation du réseau: https://technet.Microsoft.com/en-us/library/bb490717.aspx

2
blinkdt

Peut-être vérifier WinPrint :

Prend une sortie imprimante standard produite par une application DOS et la transmet à une imprimante Windows par défaut. Convertit la page de code, supprime les pages vides, prend en charge les caractères BOX DRAWINGS. Fonctionne sur toutes les plateformes Windows.

2
Ƭᴇcʜιᴇ007

Il existe de nombreux "adaptateurs USB" parallèles sur le marché. Vous pouvez en obtenir un en ligne pour environ 10 $, et c'est probablement un bon point de départ.

0
Joe Internet

Vous n'avez pas précisé le matériel que vous utilisez, mais en supposant qu'il s'agisse d'un PC Wintel, vous devriez pouvoir acheter une carte de port parallèle générique pour presque rien. En plus de cela, vous pouvez le rediriger en utilisant Net Use, comme suggéré par harrymc.

0
boot13

J'étais dans la même situation avec un logiciel conçu sur mesure pour l'entreprise basé sur Clipper. J'ai regardé un logiciel d’émulation parallèle pour imprimer sur une imprimante USB qui fonctionnait quelque peu mais qui posait ses propres problèmes. Surmonter les problèmes 64 bits win10 no dos était un véritable défi.

J'ai trouvé Harbor HMG qui, après avoir modifié quelques lignes de code, a recompilé le logiciel d'application en 32 bits. J'ai également mes applications écrivent des données dans des fichiers temporaires que je récupère avec Microsoft Access pour produire des rapports formatés impressionnants. Oh, BTW. Maintenant, les applications fonctionnent dans Windows 10 bits avec des améliorations majeures en termes de mémoire et de vitesse. De plus, les rapports sont envoyés à des imprimantes USB en ligne, à des jets d’encre ou à tout autre produit de mon choix.

0
Rob S