Pilote PCI du port parallèle Windows 7. Pilote pour travailler avec un port LPT (intégré ou sous forme de carte PCI). Classe de logiciel pour utiliser des bibliothèques pour travailler avec un port LPT

Nous vous recommandons vivement de le rencontrer. Vous y trouverez de nombreux nouveaux amis. De plus, c'est le moyen le plus rapide et le plus efficace de contacter les administrateurs de projet. La section Mises à jour antivirus continue de fonctionner - toujours à jour mises à jour gratuites pour Dr Web et NOD. Vous n'avez pas eu le temps de lire quelque chose ? Le contenu complet du téléscripteur peut être consulté sur ce lien.

Travailler avec un port LPT sous Win NT/2000/XP

Port LPT (L iné P. rin T er) est un port d'interface parallèle créé à l'origine pour connecter une imprimante. Le BIOS prend en charge le port LPT, nécessaire pour organiser la sortie via l'interface Centronics. L'espace d'adressage du port occupe la plage &H378-&H37F

Le port LPT dispose de 12 lignes de sortie et 5 lignes d'entrée. C'est tout à fait grand nombre les lignes font connexion possible au port d'un équipement simple, qui peut même ne pas avoir son propre microcontrôleur. Par conséquent, ce port, malgré la disparition des imprimantes dotées d'une interface LPT, est activement utilisé pour connecter de simples programmeurs de puces mémoire, des interfaces JTAG pour le flashage (remplacement de logiciel) de récepteurs satellite, de lecteurs DVD et autres. technologie électronique. Le port LPT est également populaire parmi les moddeurs, car il vous permet de connecter des écrans LCD à votre ordinateur sans créer de cartes d'interface complexes.

Windows 2000/XP ne permet pas aux applications d'accéder directement aux ports d'E/S. Pour ce faire, vous devez utiliser un pilote exécuté en mode KERNEL (en mode noyau du système d'exploitation).

Restreindre l'accès aux ports d'E/S pour les programmes d'application courants (exécutés en mode utilisateur) rend le système d'exploitation plus stable. Bien que, d'un autre côté, personne n'empêche le programmeur d'écrire un pilote qui accède aux ports.

Je me demande pourquoi Processeur Intel x86, vous pouvez écrire un pilote qui utilise fondamentalement l'un des deux différentes approches. La première option est que le pilote lui-même accède aux ports et que le programme d'application indique uniquement au pilote quoi faire. Cette option est généralement standard et préférée.

Pour résoudre le problème, il existe quatre options de pilote courantes qui permettent à un programme d'application d'accéder aux ports d'E/S : pilote DLPortIO, conducteur Port utilisateur, conducteur GiveIO.sis, conducteur Port95nt.

Les quatre options sont presque équivalentes.

Pilote DLPortIO

DLportIO - pilote d'accès au port du package PiloteLINX de Scientific Software Tools, Inc. (http://www.sstnet.com) sous une forme abrégée (sans description ni documentation inutile). Pour fonctionnement normal Des programmes de maintenance pour les indicateurs LCD peuvent être recommandés spécifiquement cette option de pilote.

Le pilote lui-même se compose de deux composants :
. DLPortIO.dll - DLL Win32 fournissant des E/S matérielles et
. DLPortIO.sys - pilote pour WinNT, fonctionnant en mode noyau du système d'exploitation (non requis pour Win95/98)

Dans le package d'installation du pilote, en plus de ces deux composants, il existe également le fichier Install.exe, qui déplace les deux pilotes Windows mentionnés ci-dessus vers le dossier des pilotes Windows et les enregistre dans le système.

Il n'y a plus rien à écrire sur ce pilote. Aucune configuration requise. Téléchargé, installé, utilisé. N'oubliez pas de regarder la fin de l'article et de lire comment garantir la fonctionnalité du port LPT.

L'installation est simple : exécutez le fichier Install.exe et installez. Une fois l'installation terminée, regardez dans le dossier C:\Windows\System32\drivers et vérifiez la présence de deux fichiers de pilotes (DLPortIO.sys et DLPortIO.dll). Si nous constatons que ces fichiers n'ont jamais été copiés, nous les retirons de paquet d'installation et copiez-le manuellement. Ne vous inquiétez pas, rien de grave n'arrivera à votre ordinateur. Nous redémarrons l'ordinateur et travaillons avec le port LPT.

Si du coup, suite à des manipulations avec le matériel, vous recevez un message du pilote comme celui-ci : "dlportio.sys pilote de périphérique pas chargé. Le port I/O n'aura aucun effet", pas de panique. Ce problème est corrigé comme suit :
. Lancez regedit.
. Nous allons à la succursale du registre HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\.
. Dans le dossier dlportio, changez la valeur du paramètre Commencer sur 1 .
. Redémarrez l'ordinateur.

Pilote de port utilisateur

Conducteur Port utilisateur ouvre l'accès aux ports dans Win NT/2000/XP pour les programmes. Cette version du pilote de port LPT est le plus souvent utilisée par les « techniciens » qui travaillent avec des programmeurs et des JTAG, car le pilote possède au moins certains paramètres de configuration. Il peut également être utilisé pour exécuter des programmes de maintenance pour les indicateurs LCD.

L'archive du pilote contient trois fichiers :
. UserPort.sys - pilote pour WinNT, fonctionnant en mode noyau du système d'exploitation,
. UserPort.exe est un programme permettant de configurer le pilote et
. UserPort.pdf - fichier de description.

Installation du port utilisateur :
. 1. Décompressez l'archive dans un dossier séparé.
. 2. Copiez le fichier UserPort.sys dans C:\Windows\System32\drivers

Paramètre UserPort :
. Exécutez UserPort.exe.
. Un panneau avec 2 fenêtres apparaîtra devant nous.

La fenêtre de gauche fait référence au programme exécuté dans une fenêtre DOS, celle de droite au plein écran. Par défaut, ils contiennent des numéros de port LPT - tous peuvent être supprimés à l'aide du bouton "Supprimer". Dans les deux fenêtres, vous devez saisir les numéros de port requis que vous prévoyez d'utiliser.

Pour une utilisation à partir du pilote avec la plupart des programmeurs, JTAG et programmes de maintenance d'affichage, ajoutez à colonne de gauche les paramètres suivants :
378 , 379 Et 37A Pour LPT1
278 , 279 Et 27A Pour LPT2(Si l'adresse du port LPT est réaffectée dans le BIOS).

Laissez-moi vous expliquer ce que signifient les chiffres. 0x378- c'est l'adresse du port.
. Adresse 0x378 appelé basique et est utilisé pour écrire et lire données vers et depuis le port, via le bus de données J0-D7.
. Adresse 0x379 (de base+1) destiné à lire des bitsétat à partir d’un appareil connecté au port LPT.
. Adresse 0x37A (de base+2) sert à enregistrement de bits contrôle de l’appareil connecté au port LPT.

Ajoutez-le comme ceci :
0x378-0x378
0x37A-0x37A



Vous devez ajouter des adresses de port à la liste via la fenêtre de saisie et en utilisant le bouton "Ajouter". Adresse 0x379 le plus souvent, il n'est pas nécessaire et peut être omis, car il est destiné à lire des bitsétat à partir d'un appareil connecté au port LPT, et la plupart des appareils (programmateurs, JTAG et indicateurs LCD notamment) ne génèrent pas de signaux d'état. Si vous le souhaitez, vous pouvez au contraire saisir toute la plage d'adresses allouées par le système pour. le port LPT 0x378-0x37F.

Allons à Panneau de contrôle, Système, sélectionnez l'onglet Équipement, Gestionnaire de périphériques, allez dans Ports (COM et LPT) et regardez les propriétés du port LPT via lequel vous souhaitez établir une connexion. Dans Propriétés, ouvrez l'onglet Ressources et regardez la valeur du paramètre Plage d'entrée/sortie (E/S). (Habituellement, sous Windows XP, c'est 378 - 37F)

Après avoir généré la liste des adresses, vous devez cliquer sur le bouton "Démarrer", le pilote sera lancé et le message apparaîtra :



Cliquez ensuite sur le bouton « Mettre à jour », le pilote sera enregistré dans le système, puis « Quitter ». Bien entendu, il n'est pas nécessaire d'appuyer sur le bouton « Stop » lorsque nous utilisons le pilote.

Si le système redémarre lorsque vous cliquez sur le bouton "Mettre à jour", vous devez essayer de démarrer l'enregistrement du pilote dans le système avec les droits d'administrateur ou essayer de désactiver temporairement le pare-feu ou l'antivirus, ce qui peut bloquer l'intervention dans processus système. Si quelque chose ne fonctionne pas, lisez UserPort.pdf

Pour vérifier si l'accès aux ports est apparu, vous pouvez exécuter le programme "lpt-test.exe".

Après avoir démarré le programme, une fenêtre apparaîtra avec le contenu suivant :



L'absence du message « Le port LPT est en cours de test (adresse XXXh) » et les lignes qui le suivent indiquent que le pilote ne fonctionne pas.

Ce programme envoie simplement au registre de données Dx et au registre de contrôle Ux du port LPT différents numéros, puis les lit. Le registre d'état du port LPT Sx est en lecture seule. Le numéro et l'adresse du port LPT testé sont affichés à l'écran. Si le port est sain, aucun message ne doit être émis pour les registres Dx et Ux.



LPT-TEST v1.03 1995-2003 Copyright (C) S.B.Alemanov. Moscou "BINAR".
Pendant les tests, aucun périphérique ne doit être connecté aux ports.
Dx - rég. données (sortie), Ux - reg. contrôle (sortie), Sx - reg. statut (entrée).

Le port LPT1 est en cours de test (adresse 378h)
2ème contact (D0) - pas de "1"
3ème contact (D1) - pas de "1"
4ème contact (D2) - pas de "1"
5ème broche (D3) - pas de "1"
6ème broche (D4) - pas de "1"
7ème broche (D5) - pas de "1"
8ème broche (D6) - pas de "1"
9ème broche (D7) - pas de "1"
1er contact (U0) - pas de "1"
14ème broche (U1) - pas de "1"
17ème broche (U3) - pas de "1"
1er contact (U0) - pas de "0"
14ème broche (U1) - pas de "0"
17ème contact (U3) - pas de "0"
15ème contact (S3) - pas de "0"


Si les registres Dx ou Ux sont défectueux, alors le message « no 0 » ou « no 1 » s'affiche et le numéro de la broche du connecteur LPT est indiqué (les signaux sur cette broche sont visibles avec un oscilloscope). L'entrée du registre d'état Sx peut être "0" ou "1", mais généralement, lorsque rien n'est connecté au port LPT, toutes les entrées du registre d'état sont "1". L'apparition du statut « 0 » à l'entrée du registre peut être le signe que l'entrée a été cassée, si auparavant il y avait toujours un « 1 ».
Sur certaines machines, si le registre de données ou le registre de contrôle est défectueux, alors l'accès au port LPT n'apparaît pas du tout. Apparemment, lorsque l'ordinateur est allumé, le BIOS teste le port LPT et, s'il est défectueux, le désactive.

Si des problèmes surviennent, il est possible que certains pilotes interfèrent avec le fonctionnement en envoyant périodiquement des impulsions au port LPT (cela peut être constaté avec un oscilloscope). Par exemple, vous pouvez vous déconnecter du port LPT dans les paramètres de l'imprimante :
désactiver LPT1 : port d'imprimante
activer FICHIER : Imprimer dans un fichier

Une fois tous les problèmes résolus et le test réussi, l'accès aux ports devrait apparaître et vous pouvez exécuter un programme qui utilise le port LPT. Sinon, le périphérique connecté au port d'une telle machine ne fonctionnera pas.

Pilote GiveIO.sys

Retour en 1996 programmeur américain Dale Roberts, a mené une série d'expériences qui ont abouti au conducteur GiveIO.sys. Jusqu'à présent, ce pilote reste l'un des outils les plus populaires permettant à un programme d'application d'accéder aux ports d'E/S.

L'auteur du pilote lui-même recommande fortement d'utiliser ce pilote uniquement à des fins de débogage. Version finale programme de candidature devrait, au lieu d'accéder indépendamment aux ports d'E/S, confier cette tâche à un pilote écrit spécifiquement à cet effet. Le pilote doit se comporter « correctement » en vérifiant si le périphérique est déjà utilisé par une autre application.

Cependant, si vous êtes absolument sûr que personne d'autre que vous n'utilise les ports d'E/S requis (par exemple, si vous n'avez pas d'imprimante connectée au LPT), vous pouvez utiliser en toute sécurité le pilote GiveIO.sys.

Installation du pilote:

1. Téléchargez l'archive, décompressez et copiez le fichier GiveIO.sys dans le répertoire C:\Windows\System32\Drivers (en supposant que votre Windows soit installé dans le répertoire C:\Windows).
. 2. Exécutez le fichier install.reg. Le message suivant apparaîtra à l'écran :


. 3. Nous répondons par l'affirmative. Un message apparaîtra indiquant que les informations ont été saisies avec succès dans le registre. Si vous le souhaitez, vous pouvez le vérifier. On lance l'éditeur de registre regedit.exe et dans la branche HKEY_LOCAL_MACHINE\Système\CurrentControlSet\Services\giveio Nous vérifions la présence des enregistrements suivants :


. 4. Redémarrez l'ordinateur et vérifiez le fonctionnement des programmes à l'aide du pilote.

Conducteur GiveIO.sys les gens l'utilisent activement et, au fil du temps, sont apparus autres options pour l'installer.

Par exemple - conducteur GiveIO.sys s'il existe un fichier avec des "informations sur le matériel" GiveIO.inf peut être installé via l'applet "Installation matérielle".




Nous allons montrer le pilote GiveIO.sys système opérateur pour qu'elle croie à l'existence des équipements GiveIO.

Téléchargez un ensemble de fichiers pour cette option d'installation du pilote GiveIO.sys(giveio_sys_v2.rar - 78 Ko). L'archive contient les fichiers GiveIO.sys et GiveIO.inf, ainsi que instructions détaillées instructions d'installation avec illustrations.

En plus des options d'installation « manuelle » du pilote, plusieurs versions du programme d'installation ont été écrites pour effectuer l'installation automatiquement.

Téléchargez un ensemble de fichiers pour installation automatique conducteurs GiveIO.sys(giveio_sys_install.rar - 28 Ko). L'archive contient les fichiers GiveIO.sys et instdrv.exe, ainsi que le fichier remove-giveio.cmd, avec lequel le pilote GiveIO.sys peut être supprimé du système.

Pilote Port95nt

Le terme " conducteur Port95nt" ne sera pas tout à fait correct ici. Essentiellement, il s'agit du même pilote DLPortIO du paquet PiloteLINX depuis Outils logiciels scientifiques, Inc., uniquement en version complète, avec quelques utilitaires de gestion de ports, avec une description et de nombreux exemples pour les programmeurs. L'utilisateur moyen ne bénéficie d'aucun avantage des composants supplémentaires, et les composants du pilote DLPortIO.sys et DLPortIO.dll sont exactement les mêmes que dans la version raccourcie.

J'ai mentionné Port95nt comme pilote pour deux raisons. La première consiste à compléter la liste des références aux pilotes de ports LPT trouvées sur Internet.

La deuxième raison est que dans certains cas, l'installation d'une version abrégée de DLPortIO sous WinXP peut poser des problèmes. Habituellement, mais pas souvent, cela se produit dans les versions « auteur » allégées de WinXP. Dans ce cas, vous pouvez utiliser la version complète du programme d'installation (1,5 Mo). Bien que, à mon avis, il sera plus rapide de le mettre manuellement le dossier souhaité DLPortIO.sys et DLPortIO.dll, pourquoi choisir un programme d'installation qui peut le faire pour vous.

Mesures supplémentaires

En plus d'installer l'un des pilotes mentionnés ci-dessus, pour le fonctionnement normal du port LPT sous WinXP OS, vous devez éditer le registre à l'aide d'un fichier REG xp_stop_polling.reg(xp_stop_polling.rar - 0,48 Ko)

Sous WinXP, les appareils utilisant le port LPT sont parfois instables. La cause de ces échecs peut être le sous-système Plug-and-Play (PnP) de Windows, qui interroge périodiquement le LPT pour détecter les appareils connectés. Cette interrogation se produit au démarrage du système, mais elle peut également se produire pendant le fonctionnement. Malheureusement, le pilote DLportIO.sys et les autres options du pilote ne bloquent pas l'accès au LPT à partir d'autres programmes lorsque vous travaillez avec le port client. de ce pilote et le sous-système PnP est sûr que le port n'est pas occupé, y accède et perturbe le fonctionnement des périphériques externes. Le fichier REG est utilisé pour résoudre le problème. xp_stop_polling.reg. Ce fichier écrit dans Registre Windows une clé qui interdit une telle interrogation pendant que le système est en cours d'exécution.

En plus de l'installation du pilote et des restrictions accès simultané au port pour les programmes, pour assurer la compatibilité matérielle et le fonctionnement normal des équipements dotés d'un port LPT, vous devez le définir dans le BIOS adresse correcte Et mode de fonctionnement du port(« Normal », SPP ou EPP, mais pas ECP).

Configuration via Configuration du BIOS Les paramètres suivants sont soumis à :

Adresse de base, qui peut être 378h, 278h et 3BCh. À Initialisation du BIOS vérifie la présence de ports aux adresses exactement dans cet ordre et, en conséquence, attribue les noms logiques LPT1, LPT2, LPT3 aux ports détectés. L'adresse 3BCh possède un adaptateur de port situé sur la carte MDA ou HGC (prédécesseurs cartes vidéo modernes). La plupart des ports sont configurés pour adresser 378h par défaut et peuvent être commutés sur 278h.

La ligne de demande d'interruption utilisée, IRQ7 est généralement utilisée pour LPT1, IRQ5 pour LPT2. Dans de nombreuses applications de bureau, les interruptions d'imprimante ne sont pas utilisées et cette ressource rare du PC peut être sauvegardée. Cependant, lors de l'utilisation des modes haute vitesse ECP (Fast Centronics), l'interruption du fonctionnement peut améliorer considérablement les performances et réduire la charge du processeur.

Dans le même temps, le mode ECP ne peut pas être utilisé avec des appareils nécessitant des timings serrés (programmeurs et interfaces JTAG).

En conclusion, un peu de terminologie:

. PPS(Port parallèle standard - port parallèle standard). Souvent, pour simplifier la compréhension, dans le BIOS, il est désigné par le terme " Normale".
. PPE(Port parallèle amélioré) - option d'interface bidirectionnelle à grande vitesse. Le but de certains signaux a été modifié, la possibilité d'en traiter plusieurs a été introduite périphériques logiques et entrée de données 8 bits, tampon FIFO matériel 16 octets. Vitesse maximaleéchange - jusqu'à 2 Mb/s.
. PCE(Enhanced Capability Port) - une version intelligente d'EPP. La possibilité de séparer les informations transmises en commandes et données, la prise en charge du DMA et la compression des données transmises ont été introduites. Méthode RLE(Run-Length Encoding - codage de séries répétitives).

Il y a environ 10 à 15 ans, un port parallèle était une interface assez populaire pour la communication entre appareils. Aujourd'hui, les fabricants divers appareils privilégier les interfaces série. Cependant, aujourd'hui, un port LPT peut encore être trouvé. Et certains développeurs écrivent encore des programmes pour cela (ou prennent en charge ceux écrits à l'apogée des interfaces parallèles). Mais sur les ordinateurs, un port LPT est désormais assez rare. Il existe bien entendu des cartes d'extension informatiques qui implémentent l'interface LPT. Ce sont essentiellement des cartes de bus PCI. Malheureusement, tous les logiciels conçus pour l'intégration carte mère Les ports LPT fonctionneront avec les cartes LPT-PCI.

Une solution à ce problème est proposée : une classe logicielle écrite sous .NET et une bibliothèque dynamique fonctionnant avec LPT. Cette mise en œuvre testé sur Windows XP 32 et 64 bits, Windows 7, 8 et 10 avec Ports LPT, et implémenté sous forme de cartes d'extension sur le bus PCI ou PCI-Express. Vous pouvez télécharger le pilote du port LPT à partir du lien ci-dessous après l'article.

1 Installation du pilote pour travailler avec le port LPT

L'archive ci-jointe contient deux dossiers - pour 32 bits et pour 64 bits Versions Windows. Il y a un fichier dans l'un des dossiers InstallDriver.exe. Exécutez d’abord ce fichier, il installera les bibliothèques dynamiques sur le système. Après cela, l'ordinateur doit être redémarré.

Pour utiliser le pilote suggéré, les fichiers entrée32.dll Et inpoutx64.dll doit être situé dans le même répertoire que fichier exécutable votre programme.

2 Classe de programme pour utiliser les bibliothèques travailler avec le port LPT

J'ai écrit une classe pour .NET qui utilise des bibliothèques dynamiques entrée32.dll Et inpoutx64.dll et vous permet de lire des données depuis le port parallèle et d'écrire des données dans ses registres.

Les bibliothèques mentionnées n'ont pas été écrites par moi. Je propose une classe wrapper pratique qui simplifie le travail avec ces bibliothèques. De plus, l'auteur des bibliothèques du fichier lisezmoi.txt signale que son pilote ne prend pas en charge Périphériques PCI. J'ai réussi à le faire fonctionner à la fois avec le port parallèle intégré et le port LPT, implémenté comme carte d'extension sur le bus PCI-Express. De plus, le port fonctionne parfaitement sur les systèmes Windows10 x64 modernes et plus anciens.

Voici le code de la classe LPT dans VB.NET :

Code de classe LPT en langage VB.NET(se développe) Importe System.Runtime.InteropServices """ """ Fonctionne avec un port LPT. Une fois créé, il détecte la présence d'un pilote et sélectionne la bibliothèque appropriée. """ Public NotInheritable Class LPT #Region "CONST" Public Const DLL32 As String = "c:\temp\inpout32.dll" Public Const DLL64 As String = "c:\temp\inpoutx64.dll" Public Const DLL32DRV As String = "c: \temp\inpoutx32drv.dll" """ """ Le port parallèle s'enregistre. """ Registre d'énumération publique sous forme d'entier """ """ Registre de données SPP/EPP. """ DONNÉES = 0 """ """ Registre d'état du SPP/EPP. """ STATUT = DONNÉES + 1 """ """ Registre de contrôle SPP/EPP. """ CONTROLE = DONNÉES + 2 """ """ Registre d'adresses EPP. La lecture ou l'écriture dans celui-ci génère un cycle de lecture ou d'écriture associé de l'adresse EPP. """ EPP_ADDRESS = DONNÉES + 3 """ """ Registre de données EPP. La lecture (écriture) génère un cycle de lecture (écriture) de données EPP associé. """ EPP_DATA = DONNÉES + 4 """ """ Registre d'activation du mode EPP. """ """ """ S'il s'agit uniquement d'un mélange "ECP+EPP" ou "Extended" - vous devrez probablement également écrire l'octet 0x80 sur le port ECR """ (ECR est un registre en mode ECP, ECR=BASE_ADDR+0x402, BASE_ADDR - adresse de base Port LPT """ ECR = DATA + &H402 "TEST End Enum #End Region" /CONST #Region "DllImport" Fonction partagée privée IsInpOutDriverOpen() comme fonction de fin d'octet Fonction partagée privée IsInpOutDriverOpen_x64() en tant que fonction de fin UInt64 Fonction partagée privée Inp32 (PortAddress As UInt32) en tant que fonction de fin d'octet Sous-marin partagé privé Out32 (portAddress As UInt32, data As UInt32) End Sub Fonction partagée privée Inp64 (PortAddress As UInt64) en tant que fonction de fin d'octet Sous-marin privé partagé Out64 (PortAddress As UInt64, Data As UInt64) End Sub #End Region "/DllImport #Region "CTOR" """ """ Vérifie si les pilotes x86 ou x64 peuvent être utilisés. Dans le cas contraire, lève une exception "pilote non installé". """ Shared Sub New() Dim x86 As Boolean = CheckIsDriverX86() Dim x64 As Boolean = CheckIsDriverX64() If x64 Then _IsX64DriverUsed = True ElseIf x86 Then _IsX64DriverUsed = False Else Throw New SystemException ("Le pilote du port LPT n'est pas installé." ) Fin si fin du sous-marin """ """ Initialisation du port - réglage XXXX0100"b dans le registre de contrôle.""" Sous-InitLpt partagé privé (port en tant que ULong) Write (port, Register.ECR, &H80) Write (port, Register.CONTROL, &H4) End Sub #End Region "/CTOR #Region "PROPS" """""" Indique si la version 64 bits du pilote est utilisée. """ Si le pilote n'est pas installé, NULL est renvoyé. """ Propriété publique partagée en lecture seule. X64Driver est-il utilisé comme booléen ? Get Return _IsX64DriverUsed End Get End Property Private Shared ReadOnly _IsX64DriverUsed As Boolean? = Rien #Fin Région "/PROPS #Région "MÉTHODES" """""" Détermine si le pilote est 32 bits. """<>Fonction partagée privée CheckIsDriverX86() As Boolean Try Dim res As Byte = IsInpOutDriverOpen() Return True Catch ex As Exception Return False End Try End Function """ """ Détermine si le pilote est 64 bits. """ """ Fonction partagée privée CheckIsDriverX64() comme booléen Essayez Dim nResult comme ULong = IsInpOutDriverOpen_x64() retour (nResult """ 0) Catch ex As Exception Return False End Try End Function #End Region "/METHODS #Region "Lecture/écriture du port LPT" """ Fonction publique partagée Lire (port comme ULong, reg facultatif comme registre = Register.DATA) comme données d'octet Dim comme octet = 0 si IsX64DriverUsed alors données = Inp64 (CULng (port + reg)) Sinon données = Inp32 (CUInt (port + reg) ) )) End If Données de retour Fonction de fin """ """ Écrit un numéro dans le registre du port LPT spécifié. """ """ Adresse du port. """ 0) Catch ex As Exception Return False End Try End Function #End Region "/METHODS #Region "Lecture/écriture du port LPT" """ """ Sous-écriture publique partagée (port en tant que ULong, reg en tant que registre, données en tant que ULong) Si IsX64DriverUsed puis Out64 (port + CULng (reg), données) Sinon si (données<= UInteger.MaxValue) Then Out32(CUInt(port + reg), CUInt(data)) Else Throw New ArgumentException("В 32-разрядных системах аргумент должен быть 32-разрядным (тип UInt32).", "data") End If End If End Sub #End Region "/Read / Write LPT Port """ """ Teste la présence d'un port LPT à une adresse donnée. """ """ Adresse du port parallèle. Fonction publique partagée CheckPortPresent(lptAddress As ULong) As Boolean Dim portPresent As Boolean = False Essayez InitLpt(lptAddress) Dim data As ULong = Read(lptAddress, Register.DATA) "enregistrer la valeur actuelle du registre de données" Vérifions : ce qui était écrit a été aussi lu ?<>Write(lptAddress, Register.DATA, &H0) portPresent = portPresent Et (&H0 = Read(lptAddress, Register.DATA)) Write(lptAddress, Register.DATA, &H55) portPresent = portPresent Et (&H55 = Read(lptAddress, Register.DATA )) Write(lptAddress, Register.DATA, &HAA) portPresent = portPresent Et (&HAA = Read(lptAddress, Register.DATA)) Write(lptAddress, Register.DATA, data) "restaurer la valeur précédente du registre de données" Vérifiez le présence de registres de contrôle et de données si le port n'est pas détecté (dans le cas d'un port unidirectionnel) If (Not portPresent) Then data = Read(lptAddress, Register.CONTROL) portPresent = ((data<>0)EtAussi(données<>Write(lptAddress, Register.DATA, &H0) portPresent = portPresent Et (&H0 = Read(lptAddress, Register.DATA)) Write(lptAddress, Register.DATA, &H55) portPresent = portPresent Et (&H55 = Read(lptAddress, Register.DATA )) Write(lptAddress, Register.DATA, &HAA) portPresent = portPresent Et (&HAA = Read(lptAddress, Register.DATA)) Write(lptAddress, Register.DATA, data) "restaurer la valeur précédente du registre de données" Vérifiez le présence de registres de contrôle et de données si le port n'est pas détecté (dans le cas d'un port unidirectionnel) If (Not portPresent) Then data = Read(lptAddress, Register.CONTROL) portPresent = ((data<>&HFF)) "Pas vide ? => Le port est présent. If (Not portPresent) Then data = Read(lptAddress, Register.STATUS) portPresent = ((data

&HFF)) End If End If Catch ex As Exception Return False End Try Return portPresent End Function End Class "/LPT

Code de classe LPT en C# : Code de classe LPT en C# (se développe) en utilisant System ; en utilisant System.Diagnostics ; en utilisant System.Runtime.InteropServices ; espace de noms LPTIO ( /// Classe pour travailler avec un port LPT. Une fois créé, il détermine la présence d'un pilote et sa capacité en bits. classe LPT scellée publique ( chaîne de const privée DLL32 = "inpout32.dll"; chaîne de const privée DLL64 = "inpoutx64.dll"; bool statique privé _IsX64DriverUsed; /// Indique si la version 64 bits du pilote est utilisée. public static bool IsX64DriverUsed ( get (retour LPT._IsX64DriverUsed ; ) )( if (LPT.getIsDriverX86()) ( LPT._IsX64DriverUsed = false; ) else ( if (!LPT.getIsDriverX64()) throw new SystemException("Le pilote du port LPT n'est pas installé."); LPT._IsX64DriverUsed = true; ) ) public LPT() ( ) octet externe statique privé IsInpOutDriverOpen(); externe statique privé ulong IsInpOutDriverOpen_x64(); octet externe statique privé Inp32 (uint PortAddress); private static extern void Out32 (uint portAddress, uint data); octet externe statique privé Inp64 (ulong PortAddress); private static extern void Out64 (ulong PortAddress, ulong Data); /// Fonction partagée privée CheckIsDriverX64() comme booléen Essayez Dim nResult comme ULong = IsInpOutDriverOpen_x64() retour (nResult /// 0) Catch ex As Exception Return False End Try End Function #End Region "/METHODS #Region "Lecture/écriture du port LPT" """ /// Détermine si le pilote est destiné à Windows 32 bits. booléen statique privé getIsDriverX86() ( bool flag; try ( LPT.IsInpOutDriverOpen(); flag = true; ) catch (Exception ex) ( ProjectData.SetProjectError(ex); flag = false; ProjectData.ClearProjectError(); ) return flag; ) /// Détermine si Le pilote est-il pour Windows 64 bits ? /// Adresse du port. /// 0) Catch ex As Exception Return False End Try End Function #End Region "/METHODS #Region "Lecture/écriture du port LPT" """ /// booléen statique privé getIsDriverX64() ( bool flag; try ( flag = Decimal.Compare(new Decimal(LPT.IsInpOutDriverOpen_x64()), Decimal.Zero) != 0; ) catch (Exception ex) ( ProjectData.SetProjectError(ex); flag = false; ProjectData. ClearProjectError(); indicateur de retour ; /// Lit 1 octet de données du port LPT. octet statique public Lire (port ulong, LPT.Register reg = LPT.Register.DATA)( return !LPT.IsX64DriverUsed ? LPT.Inp32(Convert.ToUInt32(Decimal.Add(new Decimal(port), new Decimal((int) reg)))) : LPT.Inp64(Convert.ToUInt64(Decimal.Add(new Décimal(port), nouveau décimal((int) reg))) ) /// Écrit un numéro sur le port LPT. Numéro à enregistrer. Sur les systèmes 32 bits, l'argument ne doit pas dépasser valeur maximale

3 pour le type UInt32. pour travailler avec le port LPT

public static void Write (port ulong, LPT.Register reg, données ulong) entrée32.dll( if (LPT.IsX64DriverUsed) ( LPT.Out64(checked (port + (ulong) (uint) reg), data); ) else ( if (data > (ulong) uint.MaxValue) throw new ArgumentException("At 32- sur les systèmes binaires, l'argument doit être de 32 bits (type UInt32).", "data"); LPT.Out32(Convert.ToUInt32(Decimal.Add(new Decimal(port), new Decimal((int) reg)) ), vérifié (données (uint))); Registres de ports LPT. inscription publique enum

( DONNÉES, STATUT, CONTRÔLE, ) ) ) Utiliser une classe .NET, mais l'implémentation est cachée, et de méthodes publiques Seules deux méthodes et une propriété sont à la disposition de l'utilisateur (elles sont abordées un peu plus loin).

Lors de l'instanciation, la classe elle-même déterminera quelle bibliothèque elle doit utiliser - entrée32.dll ou inpoutx64.dll. Par conséquent, l'utilisateur n'est pas tenu de prendre aucune mesure pour initialiser ou déterminer la profondeur de bits utilisée. dll. Vous pouvez immédiatement écrire ou lire depuis le port LPT. Un « mais » : si le pilote n'est pas installé, utilisez l'une des méthodes bibliothèque dynamique lèvera une exception, je recommande donc d'utiliser des blocs Essayez... Attrapez pour intercepter et gérer les exceptions.

Quelques exemples d'utilisation de la classe Utiliser une classe .NET.

Pour déterminer si la version 64 bits du pilote est utilisée (inpoutx64.dll si True) ou 32 bits (inpout32.dll si False) (en fait, vous n'avez pas besoin de le savoir, la classe utilise exactement la bibliothèque c'est nécessaire, mais tout à coup, pour une raison quelconque, vous devrez le découvrir à partir de votre programme) :

Bool is64bitDriver = LPT.IsX64DriverUsed ;

Pour écrire le numéro « 123 » dans le registre de contrôle du port LPT, appelez depuis votre classe :

LPT.Write(currentPort, LPT.Register.CONTROL, 123);

Pour lire un octet du registre de données du port LPT et lire le registre d'état :

Octet b = LPT.Read(currentPort, LPT.Register.DATA); octet s = LPT.Read(currentPort, LPT.Register.STATUS);

Ici Port actuel - Adresse du port LPT. De plus, si vous disposez d'un port LPT intégré, son adresse sera probablement 378h. Et si vous avez un port LPT sur une carte d'extension, alors l'adresse sera différente, par exemple : J100h ou C100h.

Pour connaître l'adresse du port LPT, rendez-vous dans le Gestionnaire de périphériques Windows, recherchez la rubrique Ports COM et LPT, sélectionnez le port parallèle que vous utilisez, et dans la fenêtre des propriétés (en cliquant dessus clic droit souris) regardez quelles ressources le port sélectionné utilise (vous devez prendre la première valeur de la plage).


Par exemple, dans ce cas, vous devez utiliser le numéro de port C100.

Télécharger les pièces jointes :

  • Télécharger le pilote pour le port LPT (2643 téléchargements)

Quiconque a déjà essayé d'assembler un PC par lui-même ou d'acheter l'un des composants a été confronté à la question des ports. Parallèle ou série ? Connecteur à quatre ou 16 broches ? Sortie via port ou mémoire ? Toutes ces questions se posent lorsque vous étudiez ce sujet et sélectionnez le bon câble.

Port

Qu'est-ce qu'un port ? Il s'agit d'un connecteur spécial dans un PC qui sert de lien entre différents types d'appareils et le système informatique. Les ports sont conditionnellement synonymes de connecteurs, nécessaires au fonctionnement de périphériques séparés de l'architecture du PC. Par exemple, en revanche, il convient de noter que le connecteur réseau, ou l’endroit où connecter la puce et la RAM, ne s’appelle pas un port.

Certains ports peuvent prendre en charge le branchement et le débranchement à chaud, d'autres nécessitent que vous éteigniez d'abord le système, puis que vous connectiez le port.

Le port matériel est disponible dans une variété de types. Cela inclut donc une interface parallèle, série, USB, PATA/SATA, PS/2 et quatre interfaces vidéo modernes : Display Port, HDMI, VGA, DVI.

Parallèle

Nous parlerons de l'un de ces types d'interface. Parallel a été créé pour PC sous forme de lien périphérique et ordinateur. Si nous parlons deÔ technologie informatique, alors ce type implémente physiquement une connexion parallèle, ce qui est tout à fait logique.

On entend souvent l’expression « port d’imprimante parallèle », et ce n’est pas sans raison. Taper de cette interface a reçu les noms Printer Port et Centronics Port immédiatement après sa naissance.

Commencer

Ce nom est vraiment venu pour une raison. L'interface a été développée par Centronics, qui a sorti une imprimante avec celle-ci en 1970. Le port a été aménagé par les sociétés Howard et Robinson. Personne n'avait prévu de créer nouveau type ou faire une découverte révolutionnaire. Tout s'est produit de facto et le port parallèle est devenu un standard de l'industrie.

À cette époque, les fabricants utilisaient de nombreux câbles différents. Par exemple, les connecteurs DC-3, 36, 25 et 50 broches étaient populaires.

Développement

Le développement du port imprimante a été rapidement repris. Les unes après les autres, les entreprises ont commencé à mettre en œuvre leurs versions. Des options plates pour un grand nombre de broches ont commencé à apparaître. Dataproducts a travaillé avec l'interface, développant le DC-37, qui était l'hôte, et un port à 50 broches connecté à l'imprimante.

Dataproducts a créé plusieurs options à la fois. Des connexions parallèles pourraient être mises en œuvre sur de courtes distances allant jusqu'à 15 mètres et sur de longues distances jusqu'à 150 mètres. Cette interface a duré longtemps. Jusque dans les années 1990, de nombreux constructeurs l’utilisaient en option.

La société américaine IBM a également décidé de contribuer à la création d'un port informatique parallèle. Au moment de sa première sortie ordinateur personnel il a été possible de se familiariser avec la modification Centronics. Il est intéressant de noter que de nombreux utilisateurs ont immédiatement reçu une condition. Seules les imprimantes Epson repensées incluant le logo IBM pouvaient fonctionner avec cette interface.

L'entreprise a travaillé dur pour standardiser le câble au format DB25F. Après quoi les fabricants d’imprimantes ont commencé à mettre en œuvre la norme dans leurs modèles. Et au début des années 90, le port Centronics populaire a commencé à être remplacé par IEEE 1284.

Variété

La nouveauté est donc entrée en vigueur et a acquis ses fans. IEEE 1284 a un autre nom - LPT. Le port parallèle a acquis une standardisation internationale et sert toujours à connecter des périphériques.

Comme l'option précédente, elle est plus souvent utilisée pour activer une imprimante, un scanner et divers équipements externes. Contrairement à la modification précédente, il est devenu possible de créer une connexion entre deux PC et d'activer des mécanismes de télécommande.

La base de l'IEEE 1284 était le port Centronics et ses diverses variantes.

Comparaison

Comme mentionné précédemment, l'interface Centronics a été créée par la société du même nom et était largement utilisée pour les PC IBM. Grâce à ce connecteur, il était possible de connecter des machines d'impression. Il a longtemps été considéré comme le principal, même s’il n’en était pas officiellement un.

Il a d’abord été créé pour le transfert d’informations unidirectionnel, il était donc idéal pour les imprimeurs. Lorsque les travaux sur les modifications duplex ont commencé, il a été décidé de formaliser l'une des nouvelles normes. C'est ainsi qu'est né l'EEE 1284.

Variété

C'est quoi ce port parallèle ? Côté ordinateur, il est représenté par un connecteur 25 broches sur deux rangées au format DB-25-femelle. Il convient de noter d'emblée qu'il s'agit du connecteur dit "femelle", mais il existe un connecteur similaire - "mâle", qui était auparavant utilisé dans les PC comme port COM.

Les équipements périphériques sont souvent équipés d'un micro-connecteur à 36 broches en forme de ruban, de sorte que le câble d'un côté comporte 25 broches DB-25-mâle et se connecte au PC, et de l'autre - 36 broches IEEE 1284-B. . Parfois, cette option remplace le port MiniCentronics, représenté par un câble AC à 36 broches.

Parmi eux, il y a aussi des câbles CC, des deux côtés desquels se trouve un MiniCentronics. Il s'agit d'une modification très rare, conçue pour les appareils répondant à la norme IEEE 1284-II.

Puisqu’il s’agit d’une norme, certaines exigences doivent être respectées. Par exemple, la longueur du câble ne peut pas dépasser trois mètres. Le bâtiment lui-même est présenté paires torsadées en général ou écran individuel. Les versions sur bande sont rares.

Si vous regardez attentivement les anciens modèles de scanner, vous remarquerez qu'il existait également un port DB-25 mâle, au lieu du port IEEE 1284-B. Il est intéressant de noter que ces appareils disposaient d’un connecteur DB-25 femelle supplémentaire pour permettre la connexion d’une imprimante. Le scanner transmettait donc les informations via deux interfaces.

Implémentation physique

Le port principal de Centronics, comme mentionné précédemment, était un port parallèle unidirectionnel. Le câble met en œuvre les principales caractéristiques. Ainsi, il y avait 8 lignes de signal pour le mouvement, des stroboscopes et une ligne d'état de l'appareil.

Évidemment, l'interface unidirectionnelle permettait de transférer les matériaux dans un sens, du PC vers l'équipement. Malgré cela, la technologie était un peu plus large. Il y en avait cinq lignes de retour qui surveillait l’état de l’appareil. La vitesse à laquelle il était possible de transmettre des informations fluctuait et s'élevait à 1,2 Mbit/s.

Rallonges

Toutes les modifications initiales ont ensuite été combinées et standardisées. Le processus d'unification lui-même s'est terminé par l'enregistrement de la norme IEEE-1284. Mais cela n’a pas résolu la question de la pleine conformité. Le nouveau produit était encore différent des extensions spécialisées créées précédemment.

Les développements les plus célèbres sont ceux de Hewlett-Packard. Parallèlement à Centronics, un portage de Bitronics est apparu. Il bénéficiait d'une technologie bidirectionnelle, déplaçait les données dans deux directions et était nécessaire pour collecter des informations sur l'état de l'imprimante.

Bitronics a travaillé avec le protocole de bus multiplexé HP. La technologie a permis d'utiliser une « chaîne » : connecter plusieurs appareils au connecteur LPT. Pour réaliser cette tâche, plusieurs normes ont été créées, même si la compatibilité n'a pas non plus été atteinte ici.

Par conséquent, si vous avez rencontré appareils obsolètes Hewlett-Packard, qui ne fonctionnent pas correctement - ce n'est pas surprenant. Tout le problème réside dans les ports et la mise en œuvre.

Possibilités

L'interface parallèle peut être utilisée dans plusieurs modes. Par exemple, SPP est une implémentation standard d'un port asymétrique compatible avec Centronics. Le mode Nibble est un mode de transfert de données bidirectionnel. Cela fonctionne grâce à des lignes de contrôle. À une certaine époque, c'était la seule option par laquelle Centronics transmettait des informations de manière bidirectionnelle.

Le mode octet est une autre option de synchronisation bidirectionnelle qui n'est pas devenue populaire, mais qui était encore utilisée avec certains contrôleurs. EPP - mode de fonctionnement des maîtres fabricants Intel, Xircom et Zenith Data Systems, se sont également engagés dans le transfert d'informations bidirectionnel à une vitesse de 2 Mo/s.

ET dernier mode-ESR. Ils y travaillaient Microsoft et Hewlett-Packard. La compression matérielle des fichiers, un tampon et le travail en accès direct à la mémoire sont apparus.

Application

Ce n'est un secret pour personne que la plupart des imprimantes sont désormais connectées via des câbles USB. Avant l’apparition de cette option, le connecteur était la seule option. Mais à côté de cela, il existait également dans divers périphériques.

Maintenant, il est difficile de dire ce qui est apparu plus tôt et en premier, mais ils sont devenus célèbres clés électroniques, qui protégeait le logiciel contre la copie. Ce port est également à la disposition des lecteurs et scanners. Et ceci, à son tour, a donné une impulsion à la création de connecteurs avec connexion parallèle pour les modems, cartes son, webcams, manettes de jeu, etc.

Ensuite, ils ont commencé à développer des adaptateurs pour le standard SCSI associés à un type parallèle. Des adaptateurs pour EPROM et contrôleurs matériels sont également connus.

Utilisation moderne

L'interface parallèle est devenue moins populaire. Il a été remplacé par des câbles USB, et pour connexion réseau-Ethernet. De nombreux fabricants considèrent le type de connecteurs parallèle comme obsolète. Par conséquent, il commence à disparaître en masse des panneaux d’interface des ordinateurs et ordinateurs portables. Microsoft demande aux développeurs de s'abstenir d'utiliser ce type de portage. Et pour ceux qui ne sont toujours pas prêts à renoncer à cette option, il existe un adaptateur « port USB parallèle ».

Différence

Souvent séquentiel et ports parallèles. Dans les systèmes IBM, en plus d'une interface parallèle, il existait des interfaces série et intégrées pour le clavier. Le port série était souvent utilisé pour connecter des appareils de communication à haut débit fonctionnant au format RS-232. Nous parlons ici de modems et d'appareils similaires.

Un port série était plus facile à mettre en œuvre pour les technologies nécessitant le transfert d’une petite quantité de données. Cela inclut une souris d'ordinateur ordinaire.

Erreur

Les gens découvrent souvent l'interface parallèle à partir du système lui-même. Parfois, des problèmes surviennent et nécessitent que l'utilisateur travaille dur pour les résoudre. Ainsi, certains ont peut-être remarqué une panne du « Pilote de port parallèle ». Généralement, cette erreur apparaît dans le journal système et est marquée d'une croix rouge.

De nos jours, un tel problème est de moins en moins courant dans le système. Peut se produire lors de l'exécution de Parport alors qu'il n'y a pas de port parallèle sur la carte. Dans ce cas, vous pouvez vous rendre dans le registre et dans la section Parport trouver la ligne « Démarrer ». Ici, vous devez changer la valeur « 2 » en « 4 ».

Conclusions

Le port parallèle appartient désormais au passé. Ils y ont travaillé au siècle dernier, mais dans le nôtre, ils ont pu le remplacer par des connecteurs plus pratiques. Les options restées inchangées ont pu acquérir des adaptateurs. Il est donc devenu possible d'acheter un contrôleur de port parallèle PCI, en remplacement de l'USB et d'autres interfaces populaires.

Il existe de nombreuses façons sur Internet de fabriquer soi-même tel ou tel câble. Mais, pour être honnête, les options ne sont pas entièrement sûres et sont discutables. C'est mieux si vous avez soudainement besoin d'un port parallèle pour un appareil, regardez dans les magasins. Même s'il n'est plus produit, il reste toujours en vente. Et lors de l'assemblage soi-même d'un PC, il est préférable de regarder de près le panneau d'interface de la carte mère pour ne pas avoir de problèmes plus tard.



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :