Параллельный порт pci драйвер windows 7

Устройства

ОС

ID

Inf

Ссылка

PCI PARALLEL PORT

6.5.1.5


Чипсеты


Enhanced ports

Windows XP x86

OX12PCI840\*PNP0400

oxpar2.inf Скачать

PCI PARALLEL PORT

6.5.1.5


Чипсеты


Enhanced ports

Windows XP x86

OX12PCI840\*PNP0400

oxpar2.inf Скачать

PCI PARALLEL PORT

5.1.2


Чипсеты


Enhanced ports

Windows XP SP2 x86

Windows XP x86

OX12PCI840\*PNP0400

oxpar2.inf Скачать

PCI PARALLEL PORT

6.5.1.5


Чипсеты


Enhanced ports

Windows XP x86

OX16PCI954\*PNP0400

oxpar2.inf Скачать

PCI PARALLEL PORT

6.5.1.5


Чипсеты


Enhanced ports

Windows XP x86

OX16PCI954\*PNP0400

oxpar2.inf Скачать

PCI PARALLEL PORT

5.1.2


Чипсеты


Enhanced ports

Windows XP SP2 x86

Windows XP x86

OX16PCI954\*PNP0400

oxpar2.inf Скачать

PCI PARALLEL PORT

7.00.0000.08


Чипсеты


Oxford Semiconductor Inc

Windows 7 x86

Windows Vista x86

Windows XP x86

PCI\VEN_1415&DEV_9513

OxPPort.inf Скачать

PCI PARALLEL PORT

7.00.0000.08


Чипсеты


Oxford Semiconductor Inc

Windows 7 x64

Windows Vista x64

Windows XP SP2 x64

Windows XP x64

PCI\VEN_1415&DEV_9513

OxPPort.inf Скачать

PCI PARALLEL PORT

7.00.0000.08


Чипсеты


Oxford Semiconductor Inc

Windows 7 x86

Windows Vista x86

Windows XP x86

PCI\VEN_1415&DEV_9513

OxPPort.inf Скачать

PCI PARALLEL PORT

7.00.0000.08


Чипсеты


Oxford Semiconductor Inc

Windows 7 x64

Windows Vista x64

Windows XP SP2 x64

Windows XP x64

PCI\VEN_1415&DEV_9513

OxPPort.inf Скачать

PCI PARALLEL PORT

7.00.0000.08


Чипсеты


Oxford Semiconductor Inc

Windows 7 x86

Windows Vista x86

Windows XP x86

PCI\VEN_1415&DEV_9513

OxPPort.inf Скачать

PCI PARALLEL PORT

7.00.0000.08


Чипсеты


Oxford Semiconductor Inc

Windows 7 x64

Windows Vista x64

Windows XP SP2 x64

Windows XP x64

PCI\VEN_1415&DEV_9513

OxPPort.inf Скачать

PCI PARALLEL PORT

7.00.0000.08


Чипсеты


Oxford Semiconductor Inc

Windows 7 x86

Windows Vista x86

Windows XP x86

PCI\VEN_1415&DEV_9513

OxPPort.inf Скачать

PCI PARALLEL PORT

7.00.0000.08


Чипсеты


Oxford Semiconductor Inc

Windows 7 x64

Windows Vista x64

Windows XP SP2 x64

Windows XP x64

PCI\VEN_1415&DEV_9513

OxPPort.inf Скачать

PCI PARALLEL PORT

7.00.0000.08


Чипсеты


Oxford Semiconductor Inc

Windows 7 x86

Windows Vista x86

Windows XP x86

PCI\VEN_1415&DEV_8403

OxPPort.inf Скачать

PCI PARALLEL PORT

7.00.0000.08


Чипсеты


Oxford Semiconductor Inc

Windows 7 x64

Windows Vista x64

Windows XP SP2 x64

Windows XP x64

PCI\VEN_1415&DEV_8403

OxPPort.inf Скачать

PCI PARALLEL PORT

7.00.0000.08


Чипсеты


Oxford Semiconductor Inc

Windows 7 x86

Windows Vista x86

Windows XP x86

PCI\VEN_1415&DEV_8403

OxPPort.inf Скачать

PCI PARALLEL PORT

7.00.0000.08


Чипсеты


Oxford Semiconductor Inc

Windows 7 x64

Windows Vista x64

Windows XP SP2 x64

Windows XP x64

PCI\VEN_1415&DEV_8403

OxPPort.inf Скачать

PCI PARALLEL PORT

7.00.0000.08


Чипсеты


Oxford Semiconductor Inc

Windows 7 x86

Windows Vista x86

Windows XP x86

PCI\VEN_1415&DEV_8403

OxPPort.inf Скачать

PCI PARALLEL PORT

7.00.0000.08


Чипсеты


Oxford Semiconductor Inc

Windows 7 x64

Windows Vista x64

Windows XP SP2 x64

Windows XP x64

PCI\VEN_1415&DEV_8403

OxPPort.inf Скачать

Devices

Systems

ID

Inf

Link

PCI PARALLEL PORT

7.00.0000.08


Chipsets


Oxford Semiconductor Inc

Windows 7 x86

Windows Vista x86

Windows XP x86

PCI\VEN_1415&DEV_9513

OxPPort.inf Download

PCI PARALLEL PORT

7.00.0000.08


Chipsets


Oxford Semiconductor Inc

Windows 7 x86

Windows Vista x86

Windows XP x86

PCI\VEN_1415&DEV_9513

OxPPort.inf Download

PCI PARALLEL PORT

7.00.0000.08


Chipsets


Oxford Semiconductor Inc

Windows 7 x86

Windows Vista x86

Windows XP x86

PCI\VEN_1415&DEV_9513

OxPPort.inf Download

PCI PARALLEL PORT

7.00.0000.08


Chipsets


Oxford Semiconductor Inc

Windows 7 x86

Windows Vista x86

Windows XP x86

PCI\VEN_1415&DEV_9513

OxPPort.inf Download

PCI PARALLEL PORT

7.00.0000.08


Chipsets


Oxford Semiconductor Inc

Windows 7 x86

Windows Vista x86

Windows XP x86

PCI\VEN_1415&DEV_8403

OxPPort.inf Download

PCI PARALLEL PORT

7.00.0000.08


Chipsets


Oxford Semiconductor Inc

Windows 7 x86

Windows Vista x86

Windows XP x86

PCI\VEN_1415&DEV_8403

OxPPort.inf Download

PCI PARALLEL PORT

7.00.0000.08


Chipsets


Oxford Semiconductor Inc

Windows 7 x86

Windows Vista x86

Windows XP x86

PCI\VEN_1415&DEV_8403

OxPPort.inf Download

PCI PARALLEL PORT

7.00.0000.08


Chipsets


Oxford Semiconductor Inc

Windows 7 x86

Windows Vista x86

Windows XP x86

PCI\VEN_1415&DEV_8403

OxPPort.inf Download

PCI PARALLEL PORT

7.00.0000.08


Chipsets


Oxford Semiconductor Inc

Windows 7 x86

Windows Vista x86

Windows XP x86

PCI\VEN_1415&DEV_8403

OxPPort.inf Download

PCI PARALLEL PORT

7.00.0000.08


Chipsets


Oxford Semiconductor Inc

Windows 7 x86

Windows Vista x86

Windows XP x86

PCI\VEN_1415&DEV_9523

OxPPort.inf Download

PCI PARALLEL PORT

7.00.0000.08


Chipsets


Oxford Semiconductor Inc

Windows 7 x86

Windows Vista x86

Windows XP x86

PCI\VEN_1415&DEV_9523

OxPPort.inf Download

PCI PARALLEL PORT

7.00.0000.08


Chipsets


Oxford Semiconductor Inc

Windows 7 x86

Windows Vista x86

Windows XP x86

PCI\VEN_1415&DEV_9523

OxPPort.inf Download

PCI PARALLEL PORT

7.00.0000.08


Chipsets


Oxford Semiconductor Inc

Windows 7 x86

Windows Vista x86

Windows XP x86

PCI\VEN_1415&DEV_9523

OxPPort.inf Download

Home  »  PCI Parallel Port

Use the links on this page to download the latest version of PCI Parallel Port drivers. All drivers available for download have been scanned by antivirus program. Please choose the relevant version according to your computer’s operating system and click the download button.

System Information

Your machine is currently running: Windows (Detect)


  • Driver Version: 8.1.0.0
  • Release Date: 2013-03-09
  • File Size: 79.71K
  • Supported OS: Windows 10 32 bit, Windows 8.1 32bit, Windows 7 32bit, Windows Vista 32bit, Windows XP 32bit

  • Driver Version: 7.1.0.0
  • Release Date: 2010-01-13
  • File Size: 63.82K
  • Supported OS: Windows 10 32 & 64bit, Windows 8.1 32 & 64bit, Windows 7 32 & 64bit, Windows Vista 32 & 64bit, Windows XP

  • Driver Version: 1.00.0000.06
  • Release Date: 2009-12-21
  • File Size: 5.86K
  • Supported OS: Windows 10 32 & 64bit, Windows 8.1 32 & 64bit, Windows 7 32 & 64bit, Windows Vista 32 & 64bit, Windows XP

  • Driver Version: 4.0.6
  • Release Date: 2002-01-11
  • File Size: 27.74M
  • Supported OS: Windows 10 32 bit, Windows 8.1 32bit, Windows 7 32bit, Windows Vista 32bit, Windows XP

На этой странице вы можете бесплатно скачать Dell Optiplex 3010 Parallel port PCIE add-in card драйвер v.A04 7.2.0.0

Категория:Barebones

Производитель:Dell

Оборудование:Dell Optiplex 3010

Тип программы:Драйвер

Название:Parallel port PCIE add-in card driver

Версия:A04 7.2.0.0

Размер файла:7.02Mb

Рейтинг:5/5

Тип архива:ZIP Self-Extracting

Дата выхода:04 Jun 2012

Система:Windows 7, Windows 7 64-bit, Windows Vista, Windows Vista 64-bit, Windows XP, Windows XP 64-bit

Status:Free

Загрузок:708

Описание:Parallel port PCIE add-in card driver for Dell Optiplex 3010

Правовая информация:Все програмное обеспечение, размещённое на Driver.ru является бесплатным. Все названия и торговые марки принадлежат их владельцам.

Внимание:Некоторые программы получены из непроверенных источников. Мы не гарантируем их совместимость и работоспособность. Всегда проверяйте загруженные файлы с помощью антивирусных программ. Мы не несём никакой ответственности за возможные потери, возникшие в результате установки загруженных программ. Загрузка файла с Driver.ru обозначает вашу информированность об этом и согласие с данными условиями.

Похожие файлы:

Название:Conexant D400,External USB 56K Modem Driver

Версия:MdmDiag32_­1.0.22.0, A00

Система:Windows 7, Windows VistaWindows XP

Название:Conexant D400,External USB 56K Modem Driver

Версия:NW2.5.46, A01

Система:Windows 7, Windows 7 64-bit, Windows Vista, Windows Vista 64-bit, Windows XPWindows XP 64-bit

Название:ST2220T Touch Monitor

Версия:A00-00

Система:Windows 7, Windows 7 64-bit, Windows Vista, Windows Vista 64-bit, Windows XP, Windows XP 64-bit, Windows 2000Windows Server 2003

Название:Digital Delivery Application

Версия:2.2

Система:Windows 8 64-bit

Название:Conexant D400,External USB 56K Modem driver

Версия:Drv_­Vista32_­V2.0.19.51,A07

Система:Windows Vista

Название:Conexant D400,External USB 56K Modem driver

Версия:Drv_­Win7-32_­2.0.22.0,A02

Система:Windows 7

Название:Conexant D400,External USB 56K Modem driver

Версия:MdmDiag32_­1.0.28.0,A01

Система:Windows 7, Windows VistaWindows XP

Название:Conexant D400,External USB 56K Modem Driver

Версия:DLD1.21,A00

Система:Windows 7, Windows 7 64-bit, Windows Vista, Windows Vista 64-bit, Windows XPWindows XP 64-bit

Название:Conexant D400,External USB 56K Modem Driver

Версия:Drv_­Win7-64_­2.0.22.0,A02

Система:Windows 7 64-bit

Название:Conexant D400,External USB 56K Modem Driver

Версия:MdmDiag64_­1.0.28.0,A01

Система:Windows 7 64-bit, Windows Vista 64-bitWindows XP 64-bit

 

Лет 10-15 назад параллельный порт был довольно востребованным интерфейсом для связи между устройствами. Сегодня производители различных устройств отдают предпочтение последовательным интерфейсам. Тем не менее, и сегодня LPT порт всё ещё можно встретить. А некоторые разработчики ещё пишут под него программы (или поддерживают написанные во времена расцвета параллельных интерфейсов). Но в компьютерах сейчас LPT порт – достаточно большая редкость. Существуют, конечно, платы расширения для компьютера, которые реализуют интерфейс LPT. Они в основном представляют собой платы на шине PCI. К сожалению, далеко не весь софт, который был написан для интегрированных в материнскую плату LPT портов, будет работать с LPT-PCI-платами.

Предлагается решение этой проблемы: программный класс, написанный под .NET, и динамическую библиотеку, которая работает с LPT. Данная реализация проверена на 32- и 64-разрядных Windows XP, Windows 7, 8 и 10 как со встроенными LPT портами, так и реализованными в виде плат расширения на шине PCI или PCI-Express. Скачать драйвер для LPT порта можно по ссылке внизу после статьи.

1Установка драйвера для работы с LPT портом

В приложенном архиве находятся две папки – для 32-разрядной и для 64-разрядной версий Windows. В одной из папок лежит файл InstallDriver.exe. Сначала запустите этот файл, он установит динамические библиотеки в систему. После этого компьютер следует перезагрузить.

Чтобы использовать предлагаемый драйвер, файлы inpout32.dll и inpoutx64.dll должны располагаться в одной директории с исполняемым файлом вашей программы.

2Программный класс использования библиотек работы с LPT портом

Мной был написан класс для .NET, который использует динамические библиотеки inpout32.dll и inpoutx64.dll и позволяет считывать из параллельного порта и записывать в его регистры данные.

Упомянутые библиотеки написаны не мной. Я предлагаю удобный класс-оболочку, упрощающий работу с данными библиотеками. Кроме того, автор библиотек в файле readme.txt сообщает, что его драйвер не поддерживает PCI устройства. Мне удалось его запустить для работы как с интегрированным параллельным портом, так и LPT портом, реализованном в виде платы расширения на шине PCI-Express. Причём порт отлично работает и на современной Windows10 x64, и на более старых системах.

Вот код класса LPT на языке VB.NET:

Код класса LPT на языке VB.NET (разворачивается)

Imports System.Runtime.InteropServices

''' <summary>
''' Работа с LPT портом. При создании определяет наличие драйвера и выбирает подходящую библиотеку.
''' </summary>
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"

    ''' <summary>
    ''' Регистры параллельного порта.
    ''' </summary>
    Public Enum Register As Integer
        ''' <summary>
        ''' Регистр данных SPP/EPP.
        ''' </summary>
        DATA = 0
        ''' <summary>
        ''' Регистр состояния SPP/EPP.
        ''' </summary>
        STATUS = DATA + 1
        ''' <summary>
        ''' Регистр управления SPP/EPP.
        ''' </summary>
        CONTROL = DATA + 2
        ''' <summary>
        ''' Регистр адреса EPP. Чтение или запись в него генерирует свзяанный цикл чтения или записи адреса EPP.
        ''' </summary>
        EPP_ADDRESS = DATA + 3
        ''' <summary>
        ''' Регистр данных EPP. Чтение (запись) генерирует связанный цикл чтения (записи) данных EPP.
        ''' </summary>
        EPP_DATA = DATA + 4
        ''' <summary>
        ''' Регистр активации режима EPP.
        ''' </summary>
        ''' <remarks>
        ''' Если только смешанный "ECP+EPP" или "Extended" - скорее всего потребуется еще выполнить запись в порт ECR байта 0x80 
        ''' (ECR - это регистр ECP-режима, ECR=BASE_ADDR+0x402, BASE_ADDR - базовый адрес LPT-порта
        ''' </remarks>
        ECR = DATA + &H402 
    End Enum

#End Region '/CONST

#Region "DllImport"

    <DllImport(DLL32, CharSet:=CharSet.Auto, EntryPoint:="IsInpOutDriverOpen")>
    Private Shared Function IsInpOutDriverOpen() As Byte
    End Function

    <DllImport(DLL64, CharSet:=CharSet.Auto, EntryPoint:="IsInpOutDriverOpen")>
    Private Shared Function IsInpOutDriverOpen_x64() As UInt64
    End Function

    <DllImport(DLL32, CharSet:=CharSet.Auto, EntryPoint:="Inp32")>
    Private Shared Function Inp32(PortAddress As UInt32) As Byte
    End Function

    <DllImport(DLL32, CharSet:=CharSet.Auto, EntryPoint:="Out32")>
    Private Shared Sub Out32(portAddress As UInt32, data As UInt32)
    End Sub

    <DllImport(DLL64, CharSet:=CharSet.Auto, EntryPoint:="Inp32")>
    Private Shared Function Inp64(PortAddress As UInt64) As Byte
    End Function

    <DllImport(DLL64, CharSet:=CharSet.Auto, EntryPoint:="Out32")>
    Private Shared Sub Out64(PortAddress As UInt64, Data As UInt64)
    End Sub

#End Region '/DllImport

#Region "CTOR"

    ''' <summary>
    ''' Проверяет возможность использования x86 или x64 драйвера. В случае невозможности выбрасывает исключение "драйвер не установлен".
    ''' </summary>
    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("Драйвер для LPT порта не установлен.")
        End If
    End Sub

    ''' <summary>
    ''' Инициализация порта - выставление XXXX0100'b в регистре контроля.
    ''' </summary>
    Private Shared Sub InitLpt(port As ULong)
        Write(port, Register.ECR, &H80)
        Write(port, Register.CONTROL, &H4)
    End Sub

#End Region '/CTOR

#Region "PROPS"

    ''' <summary>
    ''' Используется ли 64-разрядная версия драйвера.
    ''' Если драйвер не установлен, возвращается NULL.
    ''' </summary>
    Public Shared ReadOnly Property IsX64DriverUsed As Boolean?
        Get
            Return _IsX64DriverUsed
        End Get
    End Property
    Private Shared ReadOnly _IsX64DriverUsed As Boolean? = Nothing

#End Region '/PROPS

#Region "METHODS"

    ''' <summary>
    ''' Определяет, является ли драйвер 32-разрядным.
    ''' </summary>
    Private Shared Function CheckIsDriverX86() As Boolean
        Try
            Dim res As Byte = IsInpOutDriverOpen()
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function

    ''' <summary>
    ''' Определяет, является ли драйвер 64-разрядным.
    ''' </summary>
    Private Shared Function CheckIsDriverX64() As Boolean
        Try
            Dim nResult As ULong = IsInpOutDriverOpen_x64()
            Return (nResult <> 0)
        Catch ex As Exception
            Return False
        End Try
    End Function

#End Region '/METHODS

#Region "Read / Write LPT Port"

    ''' <summary>
    ''' Читает из заданного регистра LPT порта 1 байт данных.
    ''' </summary>
    ''' <param name="port">Номер порта.</param>
    ''' <param name="reg">Регистр порта.</param>
    Public Shared Function Read(port As ULong, Optional reg As Register = Register.DATA) As Byte
        Dim data As Byte = 0
        If IsX64DriverUsed Then
            data = Inp64(CULng(port + reg))
        Else
            data = Inp32(CUInt(port + reg))
        End If
        Return data
    End Function

    ''' <summary>
    ''' Записывает в заданный регистр LPT порта число.
    ''' </summary>
    ''' <param name="port">Адрес порта.</param>
    ''' <param name="reg">Регистр порта.</param>
    ''' <param name="data">Число для записи. В 32-разрядных системах аргумент должен быть не более, чем максимальное значение для типа UInt32.</param>
    Public Shared Sub Write(port As ULong, reg As Register, data As ULong)
        If IsX64DriverUsed Then
            Out64(port + CULng(reg), data)
        Else
            If (data <= 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

    ''' <summary>
    ''' Тестирует наличие LPT порта по заданному адресу.
    ''' </summary>
    ''' <param name="lptAddress">Адрес параллельного порта.</param>
    Public Shared Function CheckPortPresent(lptAddress As ULong) As Boolean
        Dim portPresent As Boolean = False
        Try
            InitLpt(lptAddress)
            Dim data As ULong = Read(lptAddress, Register.DATA) 'сохраняем текущее значение регистра данных

            'Проверим: что записали, то и прочитали?
            Write(lptAddress, Register.DATA, &H0)
            portPresent = portPresent And (&H0 = Read(lptAddress, Register.DATA))

            Write(lptAddress, Register.DATA, &H55)
            portPresent = portPresent And (&H55 = Read(lptAddress, Register.DATA))

            Write(lptAddress, Register.DATA, &HAA)
            portPresent = portPresent And (&HAA = Read(lptAddress, Register.DATA))

            Write(lptAddress, Register.DATA, data) 'восстанавливаем прежнее значение регистра данных

            'Проверим наличие регистров управления и данных, если порт не обнаружен (в случае однонаправленного порта)
            If (Not portPresent) Then
                data = Read(lptAddress, Register.CONTROL)
                portPresent = ((data <> 0) AndAlso (data <> &HFF)) 'Не пустое значение? => Порт присутствует.
                If (Not portPresent) Then
                    data = Read(lptAddress, Register.STATUS)
                    portPresent = ((data <> 0) AndAlso (data <> &HFF))
                End If
            End If
        Catch ex As Exception
            Return False
        End Try
        Return portPresent
    End Function

End Class '/LPT

Код класса LPT на языке C#:

Код класса LPT на языке C# (разворачивается)

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;

namespace LPTIO
{
  /// Класс для работы LPT портом. При создании определяет наличие драйвера и его разрядность.
public sealed class LPT
  {
    private const string DLL32 = "inpout32.dll";
    private const string DLL64 = "inpoutx64.dll";
    private static bool _IsX64DriverUsed;

    /// Используется ли 64-разрядная версия драйвера.
    public static bool IsX64DriverUsed
    {
      get
      {
        return LPT._IsX64DriverUsed;
      }
    }

    static LPT()
    {
      if (LPT.getIsDriverX86())
      {
        LPT._IsX64DriverUsed = false;
      }
      else
      {
        if (!LPT.getIsDriverX64())
          throw new SystemException("Драйвер для LPT порта не установлен.");
        LPT._IsX64DriverUsed = true;
      }
    }

    [DebuggerNonUserCode]
    public LPT()
    {
    }

    [DllImport("inpout32.dll", CharSet = CharSet.Auto)]
    private static extern byte IsInpOutDriverOpen();

    [DllImport("inpoutx64.dll", EntryPoint = "IsInpOutDriverOpen", CharSet = CharSet.Auto)]
    private static extern ulong IsInpOutDriverOpen_x64();

    [DllImport("inpout32.dll", CharSet = CharSet.Auto)]
    private static extern byte Inp32(uint PortAddress);

    [DllImport("inpout32.dll", CharSet = CharSet.Auto)]
    private static extern void Out32(uint portAddress, uint data);

    [DllImport("inpoutx64.dll", EntryPoint = "Inp32", CharSet = CharSet.Auto)]
    private static extern byte Inp64(ulong PortAddress);

    [DllImport("inpoutx64.dll", EntryPoint = "Out32", CharSet = CharSet.Auto)]
    private static extern void Out64(ulong PortAddress, ulong Data);

    /// Определяет, является ли драйвер для 32-разрядной версии Windows.
    private static bool getIsDriverX86()
    {
      bool flag;
      try
      {
        LPT.IsInpOutDriverOpen();
        flag = true;
      }
      catch (Exception ex)
      {
        ProjectData.SetProjectError(ex);
        flag = false;
        ProjectData.ClearProjectError();
      }
      return flag;
    }

    /// Определяет, является ли драйвер для 64-разрядной версии Windows.
    private static bool 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();
      }
      return flag;
    }

    /// <summary>Читает из LPT порта 1 байт данных.</summary>
    /// <param name="port">Номер порта.</param>
    /// <param name="reg">Регистр порта.</param>
    public static byte Read(ulong port, 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 Decimal(port), new Decimal((int) reg))));
    }

    /// <summary>Записывает в LPT порт число.</summary>
    /// <param name="port">Адрес порта.</param>
    /// <param name="reg">Регистр порта.</param>
    /// <param name="data">Число для записи. В 32-разрядных системах аргумент должен быть не более, чем максимальное значение для типа UInt32.</param>
    public static void Write(ulong port, LPT.Register reg, ulong data)
    {
      if (LPT.IsX64DriverUsed)
      {
        LPT.Out64(checked (port + (ulong) (uint) reg), data);
      }
      else
      {
        if (data > (ulong) uint.MaxValue)
          throw new ArgumentException("В 32-разрядных системах аргумент должен быть 32-разрядным (тип UInt32).", "data");
        LPT.Out32(Convert.ToUInt32(Decimal.Add(new Decimal(port), new Decimal((int) reg))), checked ((uint) data));
      }
    }

    /// <summary>Регистры порта LPT.</summary>
    public enum Register
    {
      DATA,
      STATUS,
      CONTROL,
    }
  }
}

3Применение класса .NET для работы с LPT портом

Если мы посмотрим на список экспортируемых функций библиотеки inpout32.dll с помощью замечательного инструмента DLL Export Viewer от NirSoft, то увидим следующую картину:

Список экспортируемых функций библиотеки inpout32.dll

Список экспортируемых функций библиотеки inpout32.dll

Это список функций, которые мы можем использовать. Фактически все они используются в классе LPT, но реализация скрыта, и из публичных методов пользователю доступны только два метода и одно свойство (они рассматриваются чуть далее).

При инстанцировании класс сам определит, библиотеку какой разрядности ему использовать – inpout32.dll или inpoutx64.dll. Поэтому от пользователя не требуется никаких действий по инициализации или определения разрядности используемой dll. Вы можете сразу записывать или читать из LPT порта. Одно «Но»: если драйвер не установлен, обращение к любому из методов динамической библиотеки вызовет исключение, поэтому рекомендую использовать блоки Try…Catch для перехвата и обработки исключений.

Несколько примеров использования класса LPT.

Для определения, используется ли 64-разрядная версия драйвера (inpoutx64.dll при True) или 32-разрядная (inpout32.dll при False) (на самом деле, это знать не обязательно, класс использует именно ту библиотеку, которая нужна, но вдруг вам для чего-то понадобится это узнать из своей программы):

bool is64bitDriver = LPT.IsX64DriverUsed;

Для записи числа «123» в регистр контроля LPT порта вызовите из своего класса:

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

Для чтения одного байта из регистра данных LPT порта и чтения регистра статуса:

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

Здесь currentPortадрес LPT порта. Причём, если у вас интегрированный LPT порт, то его адрес будет, скорее всего, 378h. А если у вас LPT порт на плате расширения, то адрес будет другой, например, D100h или C100h.

Чтобы узнать адрес LPT порта, зайдите в диспетчер устройств Windows, найдите раздел Порты COM и LPT, выберите используемый параллельный порт, и в окне свойств (щёлкнув по нему правой кнопкой мыши) посмотрите, какие ресурсы использует выбранный порт (необходимо брать первое значение из диапазона).

Ресурсы, используемые LPT портом, в диспетчере устройств Windows

Ресурсы, используемые LPT портом, в диспетчере устройств Windows

Например, в данном случае необходимо использовать номер порта C100.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Windows не удалось найти драйвер для сетевого адаптера обнаружено
  • Как открыть мой компьютер через cmd windows 10
  • Код ошибки 0x80072ee7 при обновлении windows 7 до windows 10
  • Как посмотреть системные требования компьютера на windows 11
  • Как удалить неудаляемые обновления windows 10