File "parport.htm"

Full Path: /home/analogde/www/port parallele/parport.htm
File size: 41 KB
MIME-type: text/html
Charset: 8 bit

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="description" content="Information and tools relating to design and programming for the PC's parallel printer port.">
<meta http-equiv="keywords" content="parallel port, ECP, EPP, PS/2 mode, SPP, bidirectional port, laplink, LPT, IEEE-1284, inpout, inp, out, inpout32, port i/o">
<meta name="Author" content="Jan Axelson">
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">

<title>The PC's Parallel Port</title><link rel="stylesheet" href="parport_fichiers/lvr.css" type="text/css"></head>


<body bgcolor="#ffffff">

<table style="border: medium none ;" border="1" width="100%">
  <tbody><tr>
    <td bordercolor="#FFFFFF" bordercolorlight="#FFFFFF" bordercolordark="#FFFFFF" align="left" bgcolor="#c0c0c0" valign="top" width="20%"> 
      <!-- #BeginLibraryItem "/Library/menu.lbi" -->
<p><font face="Verdana, Arial, Helvetica, sans-serif"><a href="http://www.lvr.com/index.html">Lakeview 
  Research home</a></font></p>
<p><img src="parport_fichiers/questionmark.jpg"><font face="Verdana, Arial, Helvetica, sans-serif"><a href="http://www.lvr.com/search.htm">SEARCH</a></font></p>
<p><strong><font face="Verdana, Arial, Helvetica, sans-serif">ResourcePages</font></strong><font face="Verdana, Arial, Helvetica, sans-serif"><br>
  <img src="parport_fichiers/trired.gif" align="left" height="18" width="14"><a href="http://www.lvr.com/ethernet.htm">Embedded 
  Ethernet and Internet</a> <br>
  </font><font face="Verdana, Arial, Helvetica, sans-serif"><img src="parport_fichiers/trired.gif" align="left" height="18" width="14"><a href="http://www.lvr.com/usb.htm">USB</a><br>
  <img src="parport_fichiers/trired.gif" align="left" height="18" width="14"><img src="parport_fichiers/trired.gif" align="left" height="18" width="14"><a href="http://www.lvr.com/usbcode.htm">USB 
  Code</a><br>
  <img src="parport_fichiers/trired.gif" align="left" height="18" width="14"><img src="parport_fichiers/trired.gif" align="left" height="18" width="14"><a href="http://www.lvr.com/hidpage.htm">HID 
  Page</a> <br>
  </font><font face="Verdana, Arial, Helvetica, sans-serif"><img src="parport_fichiers/trired.gif" align="left" height="18" width="14"><a href="http://www.lvr.com/serport.htm">Serial 
  Ports</a><a href="http://www.lvr.com/serport.htm"></a><br>
  <img src="parport_fichiers/trired.gif" align="left" height="18" width="14"><a href="http://www.lvr.com/parport.htm">Parallel 
  Port</a><br>
  <img src="parport_fichiers/trired.gif" align="left" height="18" width="14"><a href="http://www.lvr.com/microc.htm">8052-Basic</a> 
  <a href="http://www.lvr.com/microc.htm">Microcontrollers</a><br>
  <img src="parport_fichiers/trired.gif" align="left" height="18" width="14"><a href="http://www.lvr.com/pcbs.htm">PC 
  Boards</a><br>
  </font></p>
<p><font face="Verdana, Arial, Helvetica, sans-serif"><strong>Books<br>
  </strong><img src="parport_fichiers/triylw.gif" align="left" height="18" width="14"><a href="http://www.lvr.com/eec.htm">Embedded 
  Ethernet and Internet Complete</a><br>
  <img src="parport_fichiers/triylw.gif" align="left" height="18" width="14"><a href="http://www.lvr.com/usbc.htm">USB 
  Complete</a><br>
  <img src="parport_fichiers/triylw.gif" align="left" height="18" width="14"><a href="http://www.lvr.com/spc.htm">Serial 
  Port Complete</a><br>
  <img src="parport_fichiers/triylw.gif" align="left" height="18" width="14"><a href="http://www.lvr.com/parprtib.htm">Parallel 
  Port Complete</a><br>
  <img src="parport_fichiers/triylw.gif" align="left" height="18" width="14"><a href="http://www.lvr.com/microcib.htm">The 
  Microcontroller Idea Book</a><br>
  <img src="parport_fichiers/triylw.gif" align="left" height="18" width="14"><a href="http://www.lvr.com/makpcbds.htm">Making 
  Printed Circuit Boards</a></font></p>
<p><font face="Verdana, Arial, Helvetica, sans-serif"><img src="parport_fichiers/triylw.gif" align="left" height="18" width="14"><a href="http://www.lvr.com/ordering.htm"><strong>Where 
  to Buy the Books</strong></a></font></p>
<p><font face="Verdana, Arial, Helvetica, sans-serif"><strong>Lakeview Research 
  Info<br>
  </strong><img src="parport_fichiers/triblu.gif" align="left" height="18" width="14"><a href="http://www.lvr.com/index.html#Contact%20Information">Contact 
  Lakeview</a><br>
  <img src="parport_fichiers/triblu.gif" align="left" height="18" width="14"><a href="http://www.lvr.com/press.htm">News 
  for the Press</a><br>
  <img src="parport_fichiers/triblu.gif" align="left" height="18" width="14"> <a href="http://www.lvr.com/articles.htm">Magazine 
  Articles</a> </font></p>
<!-- #EndLibraryItem --><p></p>
 
<script type="text/javascript"><!--
google_ad_client = "pub-9614272375919933";
google_ad_width = 120;
google_ad_height = 600;
google_ad_format = "120x600_as";
google_color_border = "000000";
google_color_bg = "F0F0F0";
google_color_link = "0000FF";
google_color_url = "008000";
google_color_text = "000000";
//--></script>
<script type="text/javascript" src="parport_fichiers/show_ads">
</script><iframe name="google_ads_frame" src="parport_fichiers/ads.htm" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" frameborder="0" height="600" scrolling="no" width="120">&lt;img&gt;</iframe>		
	
</td>
    <td bordercolor="#FFFFFF" bordercolorlight="#FFFFFF" bordercolordark="#FFFFFF" align="left" bgcolor="#ffffff" valign="top" width="80%"> 
      <p align="center"><a href="http://www.lvr.com/">Lakeview Research home</a> &gt; Parallel Port 
        Central </p>
      <h1 align="center">Parallel Port Central</h1>
      <p align="center"><strong>A collection of files and links to material about 
        the PC's parallel port, <br>
        including ECP, EPP, bidirectional, and IEEE-1284 modes (and other I/O 
        ports as well).</strong></p>
      <p align="center"><strong>brought to you by Jan Axelson</strong></p>
      <p align="center"><a href="#Basics">Basics</a> | <a href="#Enhanced%20and%20Extended%20Ports">ECP 
        &amp; EPP</a> | <a href="#Hardware">Hardware</a> | <a href="#Troubleshooting">Troubleshooting</a> 
        | <a href="#ConnectingTwoPCs">Connecting 2 PCs</a></p>
      <p align="center"><a href="#Enhanced%20and%20Extended%20Ports"></a><a href="#UsingPrinters">Using 
        Printers</a> | <a href="#Enhanced%20and%20Extended%20Ports"></a><a href="#Programming">Programming</a><a href="#Cables"></a> 
        | <a href="#Books">Books</a></p>
      <h2><img src="parport_fichiers/ppccover.gif" alt="Parallel Port Complete" align="left" border="1" height="106" hspace="10" width="75">Parallel 
        Port Complete</h2>
      <p>For all you ever wanted to know about the parallel port, order a copy 
        of <a href="http://www.lvr.com/parprtib.htm"><em><strong>Parallel Port Complete</strong></em></a>. 
        Read <a href="http://www.lvr.com/parprtib.htm#Chapter1">Chapter 1</a> on-line. </p>
      <h2><a name="Basics"></a>The Basics</h2>
      <ul>
        <li> 
          <p><a href="http://www.lvr.com/jansfaq.htm">Jan's Parallel Port FAQ</a> has answers to 
            frequently asked questions about using, interfacing, and programming 
            the parallel port in all of its modes.</p>
        </li>
        <li> 
          <p><a href="http://www.lvr.com/files/ibmlpt.txt">The parallel port FAQ </a>. Basics about 
            the parallel port and how to use it, by Zhahai Stewart. (50K)</p>
        </li>
        <li> 
          <p>The <a href="http://peripherals.miningco.com/">Computer Peripherals 
            Guide</a> at about.com is a good place to start if you're looking 
            for help in using standard peripherals such as printers and drives. 
            Hosted by Rick Russell.</p>
        </li>
        <li> 
          <p><a href="http://www.phanderson.com/">Control and data acquisition</a> 
            information and projects, from Peter H. Anderson and his students. 
            Code examples in C.</p>
        </li>
        <li> 
          <p><a href="ftp://ftp.armory.com/pub/user/rstevew/LPT/">Various LPT 
            documents.</a> Steve Walz has collected a useful set of parallel-port-related 
            FAQs and information.</p>
        </li>
        <li> 
          <p><a href="http://www.beyondlogic.org/index.html#PARALLEL">Beyond Logic</a> 
            has tutorials (including EPP and ECP), projects, and a debug tool 
            with source code. From Craig Peacock.</p>
        </li>
        <li> 
          <p><a href="http://www.doc.ic.ac.uk/%7Eih/doc/par/">Interfacing to the 
            IBM-PC Parallel Printer Port</a>. General information, plus several 
            projects.</p>
        </li>
        <li> 
          <p><a href="http://www.epanorama.net/links/pc/index.html">Tomi Engdahl's 
            PC Hardware pages</a>. Many links.</p>
        </li>
        <li> 
          <p><a href="http://www.pcwebopedia.com/Hardware/Ports_and_Interfaces/">PC 
            Webopedia</a>. Definitions and many links.</p>
        </li>
        <li> 
          <p><a href="http://www.torque.net/linux-pp.html">External Parallel Port 
            devices and Linux</a>. Many links and info about the Linux-parport 
            mailing list. From Grant Guenther.</p>
        </li>
        <li> 
          <p>If you have a (usually old) device that sends data to a line printer, 
            and you want to instead read the data into a PC, you have a couple 
            of options. One is to buy or make a parallel-to-serial converter and 
            read the data at a serial port, using a terminal emulator or software 
            you write. <a href="http://www.qi.fcen.uba.ar/materias/iqi/paralel1/home.clear.net.nz/pages/kheidens/lptcap/lptcap.htm">LPTCAP</a> 
            is another approach, consisting of circuits and software for reading 
            the data into a PC's parallel port. From Kris Heidenstrom. Also see 
            <a href="http://www.jadtechcorp.com/hawk.htm">JADTech's Silent Hawk</a>.</p>
        </li>
        <li> 
          <p>A tutorial on <a href="http://www.cnckits.com/">motion control from 
            the parallel port</a>. From cncKITS.</p>
        </li>
      </ul>
      <ul>
        <li> 
          <p>Some web pages in Spanish: <a href="http://www.angelfire.com/pa2/jcgr/tecnica/PP/pp.htm">El 
            Puerto Paralelo</a> from Juan Carlos Galarza Roca. <a href="http://www.modelo.edu.mx/univ/virtech/circuito/paralelo.htm">El 
            puerto paralelo de la PC</a> from Virgilio Gmez Negrete. <a href="http://www.pchardware.org/puertos/paralelo.php">El 
            puerto paralelo</a> from Javier Olcina and David Romero. </p>
        </li>
      </ul>
      <h2><a name="Enhanced and Extended Ports"></a>Enhanced and Extended Ports</h2>
      <p>Including the bidirectional (PS/2) port, extended capabilities port (ECP), 
        and enhanced parallel port (EPP), and the IEEE-1284 standard that descibes 
        them all.</p>
      <h3>General Information</h3>
      <ul>
        <li> 
          <p>A table showing the <a href="http://www.lvr.com/files/pppinout.pdf">pinouts</a> of all 
            three of the commonly used parallel-port connectors, including the 
            25-pin D-sub, the 36-contact Centronics connector, and the new IEEE-1284C 
            connector. (6K PDF (Acrobat)&nbsp;file)</p>
        </li>
        <li> 
          <p><a name="Warp Nine Engineering"></a><a href="http://www.fapo.com/">Warp 
            Nine Engineering</a> has descriptions of the EPP, ECP, and other IEEE-1284 
            modes. Warp Nine's products include ECP/EPP parallel-port cards, EPP&nbsp;and 
            ECP drivers, and a peripheral interface controller that provides the 
            logic between a general-purpose microcontroller and a PC's parallel 
            port, to enable a peripheral to support EPP&nbsp;and ECP modes. Also 
            check here for the latest information on IEEE standards relating to 
            the parallel port. And there's a link to <a href="http://www.fapo.com/files/ecp_reg.pdf">Microsoft's 
            document describing ECP mode</a>. (325k, PDF file).</p>
        </li>
        <li> 
          <p>Various files relating to the IEEE-1284 standard, from <a href="ftp://ftp.lexmark.com/ieee/">Lexmark's 
            FTP site</a></p>
        </li>
        <li> 
          <p>Information on ordering standards from <a href="http://stdsbbs.ieee.org/">IEEE</a>. 
            The title of the parallel port standard is <em>1284-1994 IEEE Standard 
            Signaling Method for a Bidirectional Parallel Peripheral Interface 
            for Personal Computers</em>.</p>
        </li>
        <li> 
          <p><a href="http://www.smsc.com/ftpdocs/chips.html">Standard Microsystems 
            Corp.</a> has preliminary versions of the daisy-chain specification 
            and EPP BIOS, plus drivers and source code for SMC chips.</p>
        </li>
        <li> 
          <p><a href="http://www.transdigital.net/">Trans Digital</a> has a high-speed 
            universal parallel-port product.</p>
        </li>
      </ul>
      <h2><a name="Hardware"></a>Hardware</h2>
      <h3>Boards</h3>
      <ul>
        <li> 
          <p><img src="parport_fichiers/new.gif" height="12" width="31"><a href="http://www.winfordeng.com/products/">Winford 
            Engineering</a> has very handy breadboard adapters and breakout boards 
            with DB-25 connectors.</p>
        </li>
        <li> 
          <p><a href="http://www.zanthic.com/">Zanthic</a> has inexpensive proto 
            boards for parallel-port interfacing with EPP handshaking. Some also 
            have a CAN interface.</p>
        </li>
        <li> 
          <p><a href="http://www.byterunner.com/">Byte Runner Technologies</a> 
            has parallel-port expansion cards, both ISA and PCI-based.</p>
        </li>
      </ul>
      <h3>Chips</h3>
      <p>The data sheets for parallel-port controller chips include timing diagrams, 
        register assignments, and other useful details about accessing and using 
        the new modes. <em>PC-side</em> chips are for use in PCs; <em>peripheral-side</em> 
        chips are for use in peripherals. 
      </p><ul>
        <li> 
          <p><a href="http://www.amd.com/epd/29k/202_ds/202_ds.pdf">AMD's Am29202 
            processor</a> (PDF), for use in EPP/ECP (peripheral-side).</p>
        </li>
        <li> 
          <p>National Semiconductor has a variety of <a href="http://www.national.com/appinfo/advancedio/">Super 
            I/O</a> chips that include an IEEE 1284-compatible parallel port with 
            EPP and ECP modes. (PC-side)</p>
        </li>
        <li> 
          <p><a href="http://www.fairchildsemi.com/pf/74/74VHC161284.html">Fairchild's 
            74VHC161284 Transceiver</a> contains eight bidirectional data buffers 
            and eleven control/status buffers to implement an IEEE-1284 Level 
            2 interface. Outputs on the cable side can be configured to be either 
            open drain or push-pull.</p>
        </li>
        <li> 
          <p><a href="http://www.smsc.com/">Standard Microsystems Corp.,</a> (SMSC), 
            another manufacturer of EPP/ECP parallel-port chips. (PC- and peripheral-side).</p>
        </li>
        <li> 
          <p><a href="http://www.exar.com/products.php?areaID=3">Exar/Startech</a>'s 
            ST78C34 and ST78C36 are EPP/ECP&nbsp;chips. Look under Products/Communications/General 
            Purpose. (PC-side). </p>
        </li>
        <li> 
          <p><a href="http://www.ti.com/sc/docs/msp/irda/selguide.htm#pir552">Texas 
            Instruments' TL16PIR552</a> includes a PC-side ECP+EPP, plus a dual 
            UART and IrDa interface.</p>
        </li>
        <li> 
          <p><a href="http://www.fapo.com/1284pic.htm">Warp Nine's W91284PIC</a> 
            supports all modes, plus daisy-chaining and negotiating. (peripheral-side)</p>
        </li>
        <li> 
          <p><a href="http://www.winbond.com/e-winbondhtm/partner/b_2_d_2.htm">Winbond</a> 
            has PC-side chips.</p>
        </li>
      </ul>
      <h3>Cables</h3>
      <ul>
        <li> 
          <p><img src="parport_fichiers/new.gif" height="12" width="31"><a href="http://www.geocities.com/keinhong/nfpt/">NFPT 
            (No-Frills Parallel Transfer)</a> includes a DOS program with source 
            code and instructions for building an ECP test cable for transferring 
            files between two PCs using ECP mode. From Kein-Hong Man.</p>
        </li>
        <li> 
          <p>Denis Kondakov has figured out <a href="http://www.lvr.com/files/ecp-dcc.zip">how to 
            do Direct Cable Connection ECP transfers between PCs</a> using a simple, 
            home-brewed cable configuration. It requires a patch to paralink.vxd 
            (zip file, 36k).</p>
        </li>
        <li> 
          <p><a href="http://www.lpt.com/lpt/">Parallel Technologies'</a> Universal 
            Cable contains active circuits for high-speed parallel-port communications 
            using Windows 95/98's Direct Cable Connection. Parallel Port Development 
            Kits are available as well.</p>
        </li>
        <li> 
          <p>Trans Digital's <a href="http://www.transdigital.net/">Universal 
            Parallel Port</a> is a high-speed, long-distance link between parallel-port 
            peripherals and a PC-ard (PCMCIA) slot.</p>
        </li>
        <li> 
          <p>If you want to connect your parallel printer to a USB port, USBGear 
            has a <a href="http://www.usbgear.net/item_157.html">True-Bi Directional 
            USB Printer Cable adapter</a> (USBG-1284Bi) that claims to support 
            bidirectional printer communications. (Most other adapters don't.)</p>
        </li>
      </ul>
      <h2><a name="Troubleshooting"></a>Troubleshooting</h2>
      <ul>
        <li> 
          <p><a href="http://www.lvr.com/files/para14.zip">Para14.zip</a>. Parallel-port diagnostic 
            and information utility from Parallel Technologies. (88K)</p>
        </li>
        <li> 
          <p><a href="http://www.sysinternals.com/ntw2k/freeware/portmon.shtml">PortMon</a> 
            monitors and displays all serial and parallel port activity on a system. 
            From Mark Russinovich.</p>
        </li>
        <li> 
          <p><a href="http://www.jadtechcorp.com/hawk.htm">JadTech's Silent Hawk</a> 
            products non-obtrusively capture parallel-port data. The Silent Hawk 
            III Model 1284 functions as a protocol analzyer.</p>
        </li>
        <li> 
          <p><a href="http://www.qualitylogic.com/device_test.html">QualityLogic</a> 
            has a protocol analyzer and test suite for IEEE-1284 links as well 
            as a variety of products for printer testing.</p>
        </li>
      </ul>
      <h2><a name="ConnectingTwoPCs"></a>Connecting Two PCs</h2>
      <p>Connecting two PCs via their parallel ports requires a special cable. 
        For software, you can use Windows 95/98's Direct Cable Connection, a third-party 
        product, or write your own program to do the transfers. To find out about 
        Direct Cable Connection, click F1 on the desktop and search for Direct 
        Cable Connection.</p>
      <ul>
        <li> 
          <p><a href="http://www.kime.net/directcc/index.html">The Connect Pages</a> 
            have information on how to connect two PCs running various combinations 
            of operating systems, using serial and parallel ports. From Kime.Net.</p>
        </li>
        <li> 
          <p>Symantec is one of many sources for the <a href="http://service1.symantec.com/SUPPORT/ghost.nsf/docid/1998121609495725">pinout 
            for a LapLink cable</a> used in PC-to-PC transfers.</p>
        </li>
        <li> 
          <p>Sewell Development's <a href="http://www.sewelld.com/">Fast Lynx</a> 
            works with everything from DOS through Windows XP.</p>
        </li>
        <li> 
          <p><a href="http://www.laplink.com/products/llgold/overview.asp">Laplink</a> 
            and <a href="http://enterprisesecurity.symantec.com/products/products.cfm?productID=2">pcAnywhere</a> 
            support PC-to-PC transfers.</p>
        </li>
        <li> 
          <p>Also see the information under <a href="#Cables">Cables</a>.</p>
        </li>
      </ul>
      <h2><a name="UsingPrinters"></a>About Using Printers</h2>
      <ul>
        <li> 
          <p><a href="http://support.microsoft.com/support/search/c.asp">Microsoft's 
            Knowledge Base</a> has a lot of printer-related articles. These are 
            just a few: <br>
          </p>
          <blockquote> 
            <p><a href="http://support.microsoft.com/support/kb/articles/Q154/0/78.asp">HOWTO: 
              Send Raw Data to a Printer Using the Win32 API from Visual Basic</a>. 
              Article ID: 154078. <br>
              <a href="http://support.microsoft.com/support/kb/articles/Q96/7/95.ASP">HOWTO: 
              Use PASSTHROUGH Escape to Send Data Directly to Printer</a>. Article 
              ID: 96795. <br>
              <a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;160129">HOWTO: 
              Get the Status of a Printer and a Print Job</a>. Article ID: 160129.</p>
          </blockquote>
        </li>
        <li> <a href="http://www.fixyourownprinter.com/">Do-it-yourself printer 
          repair</a>.</li>
      </ul>
      <ul>
        <li>The <a href="http://www.elabinc.com/printer.htm">EDE1400 Serial to 
          Parallel-Printer Converter</a> chip converts serial data to a parallel 
          interface suitable for connecting to parallel printers. The chip generates 
          printer-control signals as monitors printer-status signals. From E-Lab 
          Digital Engineering.</li>
      </ul>
      <h2><a name="Projects"></a>Various Projects</h2>
      <p>Projects that use the parallel port or an I/O chip like the 8255 Parallel 
        Peripheral Interface chip. </p>
      <ul>
        <li> 
          <p><a href="http://www.boondog.com/%5Ctutorials%5C8255%5C8255.htm">Connecting 
            an 8255 Parallel Peripheral Interface to the ISA bus</a>. From Boondog 
            Automation. </p>
        </li>
        <li> 
          <p><a href="http://www.pjrc.com/tech/8051/ide/wesley.html">How to connect 
            an IDE disk to a microcontroller using an 8255</a>. by Peter Faasse. 
            I've included this one because of many requests for info about IDE 
            interfacing.</p>
        </li>
        <li> 
          <p>GKDesign's <a href="http://www.geocities.com/SiliconValley/Lakes/7156/">Universal 
            IR Controller for a PC</a> includes source code and a circuit for 
            reading and sending infrared remote-control signals via the parallel 
            port.</p>
        </li>
      </ul>
      <ul>
        <li><a href="http://pinewood.hmpg.net/">World's Least Expensive Pinewood 
          Derby Timer</a>. From James H. Brown.</li>
      </ul>
      <h2><a name="Programming"></a>Programming</h2>
      <p>There are various ways for applications to access the parallel port and 
        other I/O ports in PCs, including directly accessing port addresses, communicating 
        with a driver that accessing port addresses and using Windows' built-in 
        drivers.</p>
      <p>Under Windows 3.x/95/98/Me, applications can read and write directly 
        to port addresses. Use your compiler's built-in functions (<em>inp</em> 
        and <em>out</em> or similar) or in-line assembly code. (See the source 
        code in my <em>inpout32.zip</em> below for an example.) This method is 
        simple, but it's slow, it can't protect the port from access by other 
        applications, and it doesn't work at all under Windows NT/2000/Xp. If 
        you use Visual Basic or another language that doesn't have functions for 
        port I/O or allow in-line assembly code, you can use a DLL or a custom 
        control that adds port I/O functions to an application.</p>
      <p>A system-level device driver enables faster port access and can manage 
        access by multiple applications. Driver types include VxD (virtual device 
        driver) for Windows 9x/Me, WDM for Windows 98/NT/2000/Me/Xp, and kernel-mode 
        driver for Windows NT/2000/Xp. Hardware interrupts must use a system-level 
        driver under Windows 9x/NT/2000/Me/Xp. If you don't want to write your 
        own driver, there are custom controls and other tools that enable applications 
        to access ports and respond to interrupts via a driver.</p>
      <p>A third way to access ports is to use the drivers included with Windows. 
        Windows 3.x/9x/NT have no functions for generic port access, only functions 
        tied to specific uses. For example, there are API calls for accessing 
        printers and for accessing serial ports controlled by UARTs. In Visual 
        Basic, the Printer object and MSComm control are other options for parallel 
        and serial-port access. Built-in functions and controls like these are 
        usually the best solution when their abilities match what you're trying 
        to accomplish.</p>
      <p> Windows 2000/Xp add improved drivers for accessing parallel-port devices 
        with support for SPP, PS/2 (Byte), EPP, and ECP modes and daisy-chaining. 
        Parclass is a system class driver for parallel-port devices, and Parport 
        is a system function driver for the parallel port. The <a href="http://www.microsoft.com/ddk/">Windows 
        DDK</a> has details. Search for <em>Parallel Devices and Drivers</em> 
        in the documentation index. </p>
      <p>Below are links to tools that you can use for port access. I've grouped 
        them according to which operating systems they're supported in. The list 
        includes freeware, shareware, and commercial products. </p>
      <h3>Programming Tools for Port I/O and Interrupts </h3>
      <p><strong>For Windows 95/98/NT/2000/Me/Xp</strong> </p>
      <ul>
        <li> 
          <p><strong><a href="http://www.logix4u.net/">Inpout32.dll</a></strong> 
            is compatible with my Win9x inpout32.dll (below) but works under all 
            Windows editions from Win95/98/Me to WinNT/2000/XP. For Windows NT 
            etc., a kernel mode device driver is embedded in the DLL in binary 
            form. Freeware. A big thank you to LOGIX4U for coming up with this 
            and making it available. For testing inpout32.dll in Visual Basic 
            6, see my example program <a href="http://www.lvr.com/files/test_inpout32_vb6.zip">Test_inpout32_vb6.zip</a>. 
            For testing inpout32.dll in Visual Basic .NET, see my example program 
            <a href="http://www.lvr.com/files/test_inpout32_vbdotnet.zip">Test_inpout32_vbdotnet.zip</a>. 
          </p>
        </li>
      </ul>
      <ul>
        <li><img src="parport_fichiers/new.gif" height="12" width="31"><a href="http://www.codeproject.com/csharp/csppleds.asp">I/O 
          Ports Uncensored</a>. How to access ports in C# (CSharp) using inpout32. 
          By Levent S. and the Code Project.</li>
      </ul>
      <ul>
        <li>Before you can access an I/O port, you need to know its address. The 
          <a href="http://sourceforge.net/project/showfiles.php?group_id=107163&amp;package_id=117766">get_io</a> 
          DLL finds port addresses and has been tested in Windows 98/2000/XP. 
          It does not work under Windows NT. (See <a href="http://www.lvr.com/jansfaq.htm">Jan's 
          FAQ</a> for NT info.) Free. From Graham Bartlett.</li>
      </ul>
      <ul>
        <li><a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;823179&amp;Product=vb6">HOW 
          TO: Access Serial Ports and Parallel Ports by Using Microsoft Visual 
          Basic .NET</a>. How to use WriteFile to access the data port. Knowledge 
          Base article #823179 from Microsoft.</li>
      </ul>
      <ul>
        <li><a href="http://sheepdogguides.com/dt3k.htm">Delphi: DLLs and Accessing 
          Port Hardware</a>. An article from TK Boyd.</li>
      </ul>
      <ul>
        <li> 
          <p><a href="http://www.driverlinx.com/">DriverLinx Port I/O</a>. Freeware. 
            Supports: port I/O. From Scientific Software Tools. John Pappas has 
            written <a href="http://diskdude.cjb.net/software/cbuilder/index.html">TDLPortIO</a>, 
            a freeware interface for DriverLinx for use with C++ Builder, Delphi, 
            and other languages.</p>
        </li>
        <li> 
          <p><a href="http://www.tetradyne.com/">DriverX</a>. Supports: port I/O 
            and interrupts. From Tetradyne Software.</p>
        </li>
        
        <li> 
          <p><a href="http://www.jspayne.com/io/home.html">IO ActiveX Communications 
            module</a>. Shareware. Line-printer-type access to LPT ports.. From 
            JSPayne.</p>
        </li>
        <li> 
          <p><a href="http://www.uct.on.ca/">Ioport &amp; NTPort</a>. Shareware.&nbsp; 
            Supports: port I/O. From Robert Woudsma at Upper Canada Technologies.</p>
        </li>
        <li> 
          <p><a href="http://www.zeecube.com/driver.htm">Parallel Port Direct 
            I/O Access package</a>. Shareware. Supports: port I/O. Supports access 
            under NT by changing the I/O permission map for the process that claims 
            the port. From Peter Shoebridge at Zeecube Software</p>
        </li>
        <li> 
          <p><a href="http://www.paraport.net/">ParPort</a> provides a DLL with 
            functions that enable applications to read and write to a parallel 
            port using the enhanced drivers provided with Windows 2000 and Windows 
            Xp. Free for non-commercial use. From ParaPort.net.</p>
        </li>
        <li> 
          <p><a href="http://www.entechtaiwan.com/tools.htm">TVicHW32 &amp; TVicPort</a>. 
            Shareware. Supports: port I/O and hardware interrupts. From EnTech 
            Taiwan</p>
        </li>
        <li> 
          <p><a href="http://www.gizmos-n-gadjets.com/ASP/Software.asp">W95pio 
            and Ntpio</a>. Freeware. Supports: port I/O. Intended for use with 
            HP's VEE visual programming language, but adaptable to other uses. 
            Hosted by Gizmos-N-Gadjets. Ntpio is also available from <a href="http://we.home.agilent.com/cgi-bin/bvpub/agilent/editorial/cp_MiscEditorial.jsp?ID=1000000407:epsg:sud&amp;LANGUAGE_CODE=eng&amp;CT=AGILENT_EDITORIAL&amp;COUNTRY_CODE=ZZ">Agilent</a>'s 
            website.</p>
        </li>
        <li> 
          <p><a href="http://www.internals.com/">WinIO</a>. Freeware. Supports: 
            port I/O. Includes a DLL, declarations, and C source code. From Internals.com.</p>
        </li>
        <li> 
          <p>WinRT, WinRT-VB, WinDK. These products are no longer available from 
            BSQUARE.</p>
        </li>
      </ul>
      <p><strong>For Windows 95/98/Me Only</strong> 
      </p><ul>
        <li> 
          <p><a name="inpout32"></a> <a href="http://www.lvr.com/files/inpout32.zip">Inpout32.zip</a>. 
            Freeware. Supports: port I/O. The file contains inpout32.dll, which 
            I wrote in Delphi 2. The zip file includes the DLL, Visual-Basic declarations 
            for <tt>inp </tt>and <tt>out</tt>, documentation, a test program, 
            and the Delphi source code, which includes assembly code for port 
            I/O. If you don't see the DLL file after you unzip the files, you 
            probably have system files hidden. To unhide them, go to My Computer 
            &gt; View &gt; Folder Options &gt; View &gt; Hidden Files and select Show All 
            Files. Instructions for using inpout32 with C++ are in <a href="http://www.lvr.com/jansfaq.htm">Jan's 
            FAQ</a>. <strong>To add port access under Windows NT/2000/XP with 
            no changes to application code, see Inpout32.dll above.</strong></p>
        </li>
        <li> 
          <p><a href="http://www.wdj.com/">Lptaccess</a>. Freeware. This is a VxD 
            that enables an application to reserve port addresses for its exclusive 
            use. Details are in Karen Hazzah's <em>VxD Advisor</em> column in 
            the January 1998 issue of <em>Windows Developer's Journal</em>. The 
            magazine's website has the program code and info about the magazine.</p>
        </li>
        <li> 
          <p>The tutorial <a href="http://www.boondog.com/">Visual Basic DLLs 
            and PC Interfacing</a> is an excellent explanation of how to write 
            your own inpout DLL in Visual C++. From Paul Oh.</p>
        </li>
        <li> 
          <p><a href="http://www.softcircuits.com/sw_tools.htm">Win95io.zip</a>. 
            Freeware. Supports: port I/O. Another inpout DLL. The DLL is just 
            2048 bytes. From Jonathan Wood at Softcircuits.</p>
        </li>
      </ul>
      <p><strong>For Windows NT/2000/Xp Only </strong> 
      </p><ul>
        <li> 
          <p><a href="http://www.direct-io.com/">Direct I/O</a>. Shareware. Incluces 
            interrupt emulation. From Ingenieurbuero Paule.</p>
        </li>
        <li> 
          <p><a href="http://www.zealsoftstudio.com/ntport/">NTPort Library</a>. 
            Shareware. From Zeal SoftStudio.</p>
        </li>
        <li> 
          <p><a href="http://www.beyondlogic.org/porttalk/porttalk.htm">PortTalk</a>. 
            Freeware. From BeyondLogic.</p>
        </li>
        <li> 
          <p>The <a href="http://www.sybera.de/english/e_sha.htm">SHA toolkit</a>. 
            Freeware. Enables port I/O, hardware interrupts, and DMA from C++ 
            and Delphi applications. From Sybera.</p>
        </li>
        <li> 
          <p><a href="http://www.thesycon.de/">Thesycon</a> has a driver for NT 
            and Windows 2000.</p>
        </li>
        <li> 
          <p><a href="http://www.winsite.com/info/pc/winnt/programr/tinypo20.zip/">Tinyport</a>. 
            Shareware. Supports: port I/O. A ready-to-run kernel-mode device driver. 
            Tinyport complies with the rules that Microsoft has specified for 
            NT drivers, so it doesn't undermine NT's stability and can be used 
            in critical applications. From Manfred Keul.</p>
        </li>
        <li> 
          <p><a href="http://www.embeddedtronics.com/design&amp;ideas.html">UserPort</a> 
            is a kernel mode driver for Windows NT/2000 that gives usermode programs 
            access to I/O ports. From Tomas Franzon. Updated 5/31/01. Inspired 
            by the article "Direct Port I/O and Windows NT" by Dale Roberts, which 
            describes a way to defeat NT's security for port I/O. <a href="http://www.ddj.com/">Dr. 
            Dobbs' Journal</a>, May 1996. The article is available on CD. </p>
        </li>
        <li> 
          <p><a href="http://www.pcjunkie.cwc.net/">ParIO</a> is an NT Parclass 
            driver modified from a Microsoft DDK demo.From Martin Davey</p>
        </li>
      </ul>
      <h4>16-bit-only Tools</h4>
      <p>Use these with products such as Visual Basic 3 or 16-bit Visual Basic 
        4 under Windows 3.x. 
      </p><ul>
        <li> 
          <p><a href="http://www.lvr.com/files/inpout16.zip">inpout16.zip</a> Freeware. Supports: 
            port I/O. Includes an inpout DLL, source code in PowerBasic, and an 
            example VB project. From Lakeview Research. </p>
        </li>
        <li> 
          <p><a href="http://www.lvr.com/files/inpout.zip">inpout.zip</a>. Freeware. Supports: port 
            I/O. Another inpout DLL. Includes assembly-language source code. From 
            Jay Munro.</p>
        </li>
        <li> 
          <p><a href="http://www.customautomationtech.com/honesoftware/port.htm">Port16</a> 
            ActiveX control. Shareware. From Hone Software.</p>
        </li>
        <li> 
          <p><a href="http://www.softcircuits.com/sw_tools.htm">vbasm.zip</a>. 
            Freeware. Supports: port I/O. A DLL that adds Inp, Out, Peek, Poke, 
            Call Interrupt, and more for accessing ports and memory. From Jonathan 
            Wood at Softcircuits.</p>
        </li>
      </ul>
      <h4>For 16- and 32-bit Programs (Windows 3.x, Windows 95/98)</h4>
      <ul>
        <li> 
          <p><a href="http://www.powerbasic.com/">PowerBasic</a> is the source 
            for several products that are useful for applications that access 
            ports. PowerBasic's 16-bit and 32-bit DLL compilers enable you to 
            write and compile DLLs in Basic. The Basic syntax is nearly identical 
            to classic QuickBasic. Because the DLLs are compiled, not interpreted 
            like Visual Basic code, they're fast. The 16-bit edition includes 
            <em>inp</em> and <em>out</em> for port access. The 32-bit edition 
            allows port access under Windows 95/98 via inline assembly code. There's 
            also a 32-bit Basic console compiler for text-only Windows applications 
            and even a DOS compiler. </p>
        </li>
        <li> 
          <p>"<a href="http://www.coolstf.com/vb.html"><strong><em>Using 
            16-bit DLLs with 32-bit VB</em></strong></a>." This article explains, 
            step-by-step, a method for using 16-bit DLLs in 32-bit VB applications. 
            The example described is port I/O with Vbasm (see above). To use this 
            method, you must have both a 16-bit and a 32-bit edition of Visual 
            Basic. From COOL.STF.</p>
        </li>
        <li> 
          <p><a href="http://www.zealsoftstudio.com/vbio/">Vbio.dll</a>. Freeware. 
            From Zeal SoftStudio. </p>
        </li>
      </ul>
      <p>Other Driver Information and Sources</p>
      <ul>
        <li> 
          <p>Windows 2000 and Windows Me include a <a href="http://www.lvr.com/usbwin.htm">USB printer 
            driver</a>, and the driver can be distributed for use with Windows 
            98.</p>
        </li>
        <li> 
          <p>Dan Norton has an FAQ and many links relating to <a href="http://www.chsw.com/ddk">Device 
            Driver Development</a> </p>
        </li>
        <li> 
          <p>The <a href="http://www.asktheoracle.com/driver/">Device Driver Resource 
            Page</a> has many links. From Bob Weiman and Oracle Engineering. </p>
        </li>
        <li> 
          <p><a href="#Warp%20Nine%20Engineering">Warp Nine Engineering</a> has IEEE-1284 
            drivers.<a name="Other Links"></a></p>
        </li>
        <li> 
          <p><a href="http://www.geocities.com/Juanga69/parport/">Parallel Printer 
            Port Access through Java</a>. From Juan Gabriel Del Cid Portillo.</p>
        </li>
      </ul>
      <h3>Linux</h3>
      <ul>
        <li> 
          <p>The <a href="http://people.redhat.com/twaugh/parport/html/ppdev.html">ppdev</a> 
            driver enables accessing port bits, interrupts, negotiating, and setting 
            modes. </p>
        </li>
      </ul>
      <h2><a name="Books"></a>Books about Parallel Port Hardware and Programming</h2>
      <p>Here are links to a variety of books about parallel port hardware and 
        programming. The titles are listed alphabetically, except for my book, 
        which is first. :)</p>
      <p><a href="http://www.lvr.com/parport.htm"><strong>Parallel Port Complete: Programming, Interfacing, 
        and Using the PC's Parallel Printer Port</strong></a><em><a href="http://www.amazon.com/exec/obidos/ASIN/0965081915/janaxelsonslakev"><img src="parport_fichiers/amazonwh.gif" align="right" border="0" height="29" hspace="5" vspace="5" width="90"></a></em><br>
        Jan Axelson<br>
        1996, Lakeview Research<br>
        343 pages, $39.95 <br>
        Covers all of the port's modes and how to use them in custom applications.</p>
      <p><strong>Build Your Own Low-Cost Data Acquisition and Display Devices</strong><em><a href="http://www.amazon.com/exec/obidos/ASIN/0830643486/janaxelsonslakev"><img src="parport_fichiers/amazonwh.gif" align="right" border="0" height="29" hspace="5" vspace="5" width="90"></a></em><br>
        by Jeffrey Hirst Johnson<br>
        1993, McGraw Hill/TAB Electronics<br>
        305 pages, $24.95<br>
        Lots of detail about the port hardware (serial ports too) and ISA interfacing, 
        with DOS Pascal program code.</p>
      <p><strong>Controlling the World With Your PC</strong><em><a href="http://www.amazon.com/exec/obidos/ASIN/1878707159/janaxelsonslakev"><img src="parport_fichiers/amazonwh.gif" align="right" border="0" height="29" hspace="5" vspace="5" width="90"></a></em><br>
        by Paul Bergsman<br>
        1994, LLH Technology Pub<br>
        257 pages, $35<br>
        Many projects with DOS code in BASIC, C and Pascal<em></em></p>
      <p><strong>Programming the Parallel Port: Interfacing the PC for Data Acquisition 
        &amp; Process Control<a href="http://www.amazon.com/exec/obidos/ASIN/0879305134/janaxelsonslakev"></a></strong><em><a href="http://www.amazon.com/exec/obidos/ASIN/0879305134/janaxelsonslakev"><img src="parport_fichiers/amazonwh.gif" align="right" border="0" height="29" hspace="5" vspace="5" width="90"></a></em><br>
        by Dhananjay V. Gadre<br>
        1998, CMP Books<br>
        308 pages, $44.95<br>
        Includes source code in C for DOS and Linux.</p>
      <p><br>
      </p>
      <p><br>
      </p>
      <p><br>
      </p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp; </p>
    </td>
  </tr>
</tbody></table>

<p>&nbsp;</p>

<p>&nbsp;</p>
</body></html>