[Delphi XE3]ESC/POS範例

找遍了台灣的資料,對於POS收銀系統硬體相關的程式非常的少。

只好自己Try & Error一番,順便也將結果告訴一下大家囉~希望大家不要再為了它而浪費了不少時間。

很簡單的示範如何利用Delphi XE3及SPComm 元件來印出收據、切紙並打開錢櫃。

procedure TForm2.Button1Click(Sender: TObject);
var
  s:Ansistring;
begin
  Comm1.CommName := ComboBox1.Text;
  Try
    Comm1.StartComm;
    //初始化
    s:= chr(27) + chr(64);
    Comm1.WriteCommData(PAnsiChar(s),Length(s));
    // 印出目前日期、時間並換行
    s:= DateToStr(now)+' '+TimeToStr(now)+ chr(10)+ chr(13) ;
    Comm1.WriteCommData(PAnsiChar(s),Length(s));
    s:= chr(27) + chr(100) + chr(2);
    Comm1.WriteCommData(PAnsiChar(s),Length(s));
    s:= chr(29) + chr(33) + chr(17) ;
    Comm1.WriteCommData(PAnsiChar(s),Length(s));
    s:= 'Printer - Testing Success'+ chr(10);
    Comm1.WriteCommData(PAnsiChar(s),Length(s));
    s:= chr(29) + chr(33) + chr(0) ;
    Comm1.WriteCommData(PAnsiChar(s),Length(s));
    s:= chr(27) + chr(100) + chr(5);
    Comm1.WriteCommData(PAnsiChar(s),Length(s));
    // 切紙
    s := Chr(29) + Chr(86) + Chr(0) ;
    Comm1.WriteCommData(PAnsiChar(s),Length(s));
    //打開錢櫃
    s := chr(27) + chr(112) + chr(0) + chr(50) + chr(200) ;
    Comm1.WriteCommData(PAnsiChar(s),Length(s));
  Except
    on E: Exception do Begin
      ShowMessage('Open ComPort Error!'+#10#13+'Error MSG:'+E.Message);
    End;
  End;
end;

我要留言

留言

One thought on “[Delphi XE3]ESC/POS範例

  1. 林大哥,
    你好,本人近來有利用VB開發POS系統,但近期在出單機的部份遇到問題,想請問一下,
    出單機的收據格式是否用程式來設定大小,有在國外網站看到有人發表若用如CrystalReport來設計的話
    出單機的列印速度不會很快……請問這方面的觀念是正確的嗎?….
    對於出單機的收據…是否能幫小弟我提供一個好的方向…..不然目前真的沒有概念來設計這方面…謝謝

    若你不吝回覆小弟我的問題,是否可以直接回信到小弟的E-mail,謝謝。
    E-mail: wickwolf@gmail.com

發表迴響

你的電子郵件位址並不會被公開。