How to Communicate Through Parallel Port Using LabVIEW
The Parallel Port • The primary use of parallel port is to connect printers to computer and is specifically designed for this purpose. Thus it is often called as printer Port or Centronics port. • Almost, all PCs contain one parallel port, but you can add more by buying and inserting ISA/PCI parallel port cards.
The Parallel Port • Parallel port is a simple and inexpensive tool for building computer controlled devices and projects. • The simplicity and ease of programming makes parallel port popular in electronics hobbyist world. • Parallel ports are easy to program and faster compared to the serial ports. • But main disadvantage is it needs more number of transmission lines. Because of this reason parallel ports are not used in long distance communications
The Parallel Port The basic difference between working of parallel port and serial port. – In serial ports, there will be two data lines: One transmission and one receive line. – To send a data in serial port, it has to be sent one bit after another with some extra bits like start bit, stop bit and parity bit to detect errors (Look to previous serial port presentation). – But in parallel port, all the 8 bits of a byte will be sent to the port at a time and a indication will be sent in another line.
The Parallel Port
25 Contacts
Pin assignment
--Indicates active low signal
36 Contacts
The Parallel Port • Earlier parallel ports had only output enabled in data pins since printers only inputs data. But latter, to make parallel port capable of communicating with other devices, bidirectional ports are introduced. • By default, data port is output port. • To enable the bidirectional property of the port, we need to set the fifth bit (C5, count from C0) (of control register).
The Parallel Port Data Register (output)
Status Register input
Control Register (output)
The Parallel Port
Set the fifth Bit C5 to 1 for Bidirectional communication
The Parallel Port • Now we can say that to communicate through parallel port you should communicate with the following three ports or registers: Base address
1- The Data Port (278h/378h) which (input/output) 8 bits (the input or output data). 2- The Status Port (279h/379h) which reads 8 bits for the printer. 3- The Control Port (27Ah/37Ah) which transmit 8 bits to select output or input operation.
The Parallel Port • General Information: - Pins 10,11,12,13 and 15 used to output 5V. - Pins 18 to 25 are ground. - The port names in the previous slide are in hex. Like (378h) is 378 in hexadecimal
Parallel Port Base Address 2 4 378
1
3
Programming The Parallel Port with LabVIEW
Programming The Parallel Port with LabVIEW In Port VI
Out Port VI
address specifies the address to which you want to write an 16-bit signed integer. This VI accepts only 16-bit addresses. Like (378), (379) or (37A) in hex or its corresponding decimals (888). (889) or (890) respectively.
Programming The Parallel Port with LabVIEW • The data read can be I8 just to read the data port inputs • The data read can be I16 just to read the data port and status port inputs • The data read can be I32 to read all the data port, the status port and the control port inputs • The write value can be I8 just to write to the data port outputs • The write value can be I16 just to write to the data port and status port outputs • The write value can be I32 to write to all the data port, the status port and the control port outputs
Example 1 To send high or low value to DATA 0 of the parallel port (pin 2) Decimal Display Format
or
Led control hexadecimal Display Format
Example 2 To send high or low values to DATA 0..7 of the parallel port
Example 3 To read the inputs DATA 0..7 of the parallel port Control Port address
Data Port address
Should be low to read
Should be high to read
Co In hex but can be in decimal If display format changed
Parallel port monitor • Download the following program that monitor the three ports of the parallel port Parmon.exe
Example 4 Using VISA • The main trick is to tie pins 11(Busy) and 12 (Paper Error) to ground. Otherwise, the hardware driver will think the printer it is talking to is busy or experiencing an error and will not output any data. • Remember that in LabVIEW all serial communication needs to be sent as a string. Generally we will want to send 8-bit numbers to the port. This will require flattening the data to string so that the binary representation of the data does not change. We can use the Type Cast VI for the purpose.
Example 4 Using VISA To send high or low values to DATA 0..7 of the parallel port
Or type ASRL10
Example 5 Using VISA To send high or low values to DATA 0..7 of the parallel port Continuous output
Example 6 How to read the Status port getting S7S6S5S4S3
Note • To read the Control Port getting C3C2C1C0