{{fbdoc item="title" value="OPEN LPT"}}---- Open a printer device, using it as if it were file operations. {{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 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 %% {{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 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!" %% {{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"}}