Open Lpt
Open a printer device
Syntax
`
Open Lpt ["[LPT[x]:][Printer_Name][,TITLE=Doc_Title][,EMU=TTY]"] [For Input|Output] As #filenum
`
Usage
`
Open Lpt "LPT..." As [#]filenum
or
result = Open Lpt( "LPT..."[,] As [#]filenum )
`
Parameters
`x`
Specifies a port number. If omitted, output is sent to the system print spooler.
`Printer_Name`
Name of printer to open. This parameter is ignored on DOS.
`TITLE=Doc_Title`
Title of the print job as seen by the printer spooler. This parameter is ignored on DOS.
`EMU=TTY`
Emulation of TTY output on a windows GDI printer, using driver text imaging. This parameter is ignored on DOS and Linux.
`For Input|Output`
clause is allowed for compatibility, but it is ignored.
`filenum`
An unused file number to assign to the device.
Return Value
`0` is returned if `Open Lpt` completed successfully, otherwise a non-zero value is returned to indicate failure.
Description
`Open Lpt` opens a connection to a printer device. The connection is treated like a file, so data may be written to the printer using `Print` and `Put #` commands.
Any printer attached to the system may be opened with `Open Lpt`
`Open Lpt "LPT:" ...` will try to open the default printer on Windows and Linux, and `"LPT1:"` on DOS.
`LPrint` will automatically try to open the default printer on Windows and Linux, and `"LPT1:"` on DOS.
Platform specific notes:
Windows
The argument `EMU=TTY` assumes printable ASCII or Unicode text, and applies printer driver text imaging to the input. `EMU=TTY` also allows the usage of CR, LF, BS, TAB, FF, etc., for virtual print-head movement...even when the printer is a GDI printer and therefore doesn't itself understand these special characters. If `",EMU=TTY"` is omitted, the data must be sent in the printer's language (ESC/P, HPGL, PostScript, etc...). Other useful emulation modes aren't supported yet.
Linux
A printer spooler available through `lp` must be installed to access printers by name or a default printer. Spooler access was tested only with CUPS, but other spoolers may work that are invoked through `lp`. Port are zero-based on Linux. `"LPT1:"` corresponds with `"/dev/lp0"`.
The data must be sent in the printer's language (ESC/P, HPGL, PostScript, etc...). Emulation modes aren't supported yet.
DOS
FreeBASIC does not support print spoolers on DOS. Printers must be accessible through `"LPTx:"`.
The data must be sent in the printer's language (ESC/P, HPGL, PostScript, etc...). Emulation modes aren't supported yet.
Example
`
' Send some text to the Windows printer on LPT1:, using driver text imaging.
Open Lpt "LPT1:EMU=TTY" For Output As #1
Print #1, "Testing!"
Close
`
`
' Sends contents of text file test.txt to Windows printer named "ReceiptPrinter"
Dim RptInput As String
Dim PrintFileNum As Integer, RptFileFileNum As Integer
RptFileFileNum = FreeFile
Open "test.txt" For Input As #RptFileFileNum
PrintFileNum = FreeFile
Open Lpt "LPT:ReceiptPrinter,TITLE=ReceiptWinTitle,EMU=TTY" As _
#PrintFilenum
While (EOF(RptFileFileNum) = 0)
Line Input #RptFileFileNum, RptInput
Print #PrintFileNum, RptInput
Wend
Close #PrintFileNum ' Interestingly, does not require CHR(12). But if pagination is desired, CHR(12) is the way.
Close #RptFileFileNum
Print "Press any key to end program..."
GetKey
End
`
`
'This simple program will print a PostScript file to a PostScript compatible printer.
Dim As UByte FFI, PPO
Dim As String temp
FFI = FreeFile()
Open "sample.ps" For Input Access Read As #FFI
PPO = FreeFile()
Open Lpt "LPT1:" For Output As #PPO
While (EOF(FFI) = 0)
Line Input #FFI, temp
Print #PPO, temp
Wend
Close #FFI
Close #PPO
Print "Printing Completed!"
`
Dialect Differences

- In the -lang qb dialect the old syntax is supported OPEN "LPT:..." . This syntax used in the other dialects will open a regular file.

See also

- `Open`
- `LPrint`