{{fbdoc item="title" value="OPEN LPT"}}----
Open a printer device

{{fbdoc item="syntax"}}##
	**Open Lpt** ["[LPT[x]:][//Printer_Name//][,//TITLE=Doc_Title//][,//EMU=TTY//]"] [For Input|Output] [[KeyPgAs|as]] #//filenumber//
##
{{fbdoc item="usage"}}##
	**Open Lpt** "LPT..." [[KeyPgAs|as]] [#]//filenumber//
		//or//
	//result// = **Open Lpt**( "LPT..."[,] [[KeyPgAs|as]] [#]//filenumber// )
##
{{fbdoc item="param"}}
	##//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.

{{fbdoc item="ret"}}
	A 32 bit ##[[KeyPgLong|Long]]##: ##0## is returned if ##**Open Lpt()**## completed successfully, otherwise a non-zero value is returned to indicate failure.

{{fbdoc item="desc"}}
	##**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 ##[[KeyPgPrint|Print]]## and ##[[KeyPgPutfileio|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.
	
	##[[KeyPgLprint|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 ##[[KeyPgErr|Err]]## in the next line. The function version of  ##**Open Lpt**## returns directly the error code as a 32 bit ##[[KeyPgLong|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.

{{fbdoc item="ex"}}
{{fbdoc item="filename" value="examples/manual/fileio/openlpt1.bas"}}%%(freebasic)
' 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
%%
{{fbdoc item="filename" value="examples/manual/fileio/openlpt2.bas"}}%%(freebasic)
' 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
%%

{{fbdoc item="filename" value="examples/manual/fileio/openlpt.bas"}}%%(freebasic)
'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!"
%%

{{fbdoc item="lang"}}
	- In the //[[CompilerOptlang|-lang qb]]// dialect the old syntax is supported OPEN "LPT:..." . This syntax used in the other dialects will open a regular file.

{{fbdoc item="see"}}
	- ##[[KeyPgOpen|Open]]##
	- ##[[KeyPgLprint|Lprint]]##

{{fbdoc item="back" value="CatPgFile|File I/O Functions"}}