<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt">> Hi all,<br>> I have a printer (Epson TM U220D, plugged in COM1 port) and my OS<br>> Linux/Fedora10 I can't found the driver printer for this OS (only for SUSE<br>> and Ubuntu that Epson provided). (Using Generic/TextOnly driver, not<br>> working)<br>><br>> So, I can't do printing process for my lazarus application.<br>><br>> My first question is,<br>><br>> [?] Do you know how to handle this situation? (Driver problem)<br><br>Yes, set it in cups properly, but DO NOT use Generic Text, use Raw printing<br>driver and set proper ESC/POS.<br>This is how I do that:<br>1.Prepare TStringList with commands and data to be printed.<br>  eg:<br>  MyPosList := TStringList.Create;<br>  MyPosList.Add(SEQUENCE_FOR_PRINTER_INITIALIZATION(read escposmanuals))<br>  MyPosList.Add('Hello world
 line 1');<br>  MyPosList.Add('Hello world line 2');<br>  MyPosList.Add('Hello world line 3');<br>  MyPosList.Add(SEQUENCE_FOR_CUTTER (if there's cutter));<br>  MyPosList.SaveToFile(YourTempFileOrWhatever);<br>  MyFunctionForPosPrinting(YourTempFileOrWhatever) (look below)<br><br>2.Save it to temp file eg. /tmp/myposprinter_XXXXX.txt<br>3.call cups to print it to desired pos printer (via<br>Libc.System()/TProcess/ExecuteProcess) -> lpr -PMYPOSPRINTER<br>/tmp/myposprinter_XXXXX.txt<br><br>I'm using ExecuteProcess()<br>http://www.freepascal.org/docs-html/rtl/sysutils/executeprocess.html<br><br>4.Delete temp file.<br><br>><br>><br>> Temporary, I try to print via command line (Terminal/Dos command like) to<br>> the printer using command line 'cat textfile.log > /dev/ttyS0',<br>><br>> and it's worked. Something printed.<br><br>DO NOT USE IT EVER. It's direct port printing and you can have troubles on<br>user
 machines with permissions, selinux etc etc.<br>Cups handles that fine.<br><br>><br>> And the (second) question is,<br>><br>> [?] How to apply this command (multiple lines sometimes) in Lazarus Code?<br>><br>> (By pressing from a button maybe) Can you all give me some codes to<br>> execute?<br><br>1.Use ESC/POS docs (or any other docs for your pos printer, but I guess that<br>TMU220D is pure ESC/POS printer.<br>2.Do as I explained above.<br><br>zeljko<br><br>----------------------------------------------------<br>Thank you very much to Zeljko for your answers<br>----------------------------------------------------<br><br>Here what I do exactly:<br><br>PRINTER PART<br><br>1. Plug my serial TM-U220D printer to my Linux Fedora 10 computer<br>2. Add Printer using CUPS (Common Unix Printing System) by typing http://127.0.0.1:631 on address bar mozilla<br>3. Setting Device to Serial Port #1<br>4. Setting Baud rate to 9600 ( my friend
 recommended )<br>5. Setting Make/Manufacture by RAW (thanks to Zeljko, I'm using Generic text before but won't work)<br>6. Setting Model to Raw Queue<br><br>LAZARUS PART<br><br>1. Add Printer4Lazarus package<br>2. Add printers in Uses (Uses Printers)<br>3. Create method<br><br>procedure PrintRawString(const S:String);<br>var<br>  Written: Integer;<br>begin<br>    Printer.Write(S[1], Length(S), Written);<br>end;<br><br>2. Use the method<br><br>procedure TForm1.PrintItClick(Sender: TObject);<br>begin<br>  Printer.Title := ‘My Title’;<br>  Printer.RawMode := True;<br>  Printer.BeginDoc;<br>  PrintRawString(‘Print This String’);<br>  Printer.EndDoc;<br>end;<br><br>3. We can add some ESC/p codes to string.<br><br>PrintRawString(Chr(27)+Chr(97)+Chr(1)+‘Print This String’);  //center
 alignment<br><br>------------------------------------------------------------------------------------------------<br><br><br><br><br>That's All :)<br></div></body></html>