Open Lpt

Open a printer device

Syntax
   Open Lpt ["[LPT[x]:][Printer_Name][,TITLE=Doc_Title][,EMU=TTY]"] [For 
   Input|Output] As #filenumber

Usage
   Open Lpt "LPT..." As [#]filenumber
      or
   result = Open Lpt( "LPT..."[,] As [#]filenumber )

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.
   filenumber
      An unused file number to assign to the device.

Return Value
   A 32 bit Long: 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.

   The error code returned by Open Lpt can be checked using Err in the next 
   line. The function version of  Open Lpt returns directly the error code 
   as a 32 bit Long.

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 Long, RptFileFileNum As Long

   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 Long 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

