淺淡POS歷史

POS系統已邁向第五代了!至於前四代是什麼呢?也稍微瞭解一下,

第一代:電子收銀系統(Electronic Cash Register;ECR),錢箱加上按鈕,做簡單的運算、開立發票。
第二代:電子收銀系統(ECR) 同一代機功能,增加了網路RS232功能,可做簡單分析及統計報表
第三代:端點銷售系統(POS),開始採用 PC架構,不過是分離式主機與螢幕、週邊
第四代:端點銷售系統(Touch POS) 類似第三代,不過整合成一體,並針對防震、防水及耐用等功能有更大的要求。
第五代:無人櫃檯(Kiosk) 無線、無人櫃檯、無人商店

Delphi-將POS系統的Interbase匯到MySQL資料庫

前一陣子研究各家的餐飲、簡餐POS系統,意外的發現不少系統都是用Delphi寫的,資料庫也大多使用Interbase或是Firebird。

為了方便研究,就嘗試將資料庫轉到MySQL上去~記錄一下轉移方式。

工具:

做法:

在MySQL建立空白資料庫(utf8)

4

 

資料來源 (ODBC)新增 MySQL ODBC 3.51 Driver,注意一點要記得打開Details,將 Character Set 選成 Big5(不是utf8喔)

5

SQL Explorer→New Database→Database Driver Name選INTRBASE,SERVER NAME選擇您要連結的GDB檔案

8

6

7

打開Datapump,Source Alias選擇在SQL Explorer建立的名稱,User Name是SYSDBA(注意大小寫),password是 masterkey(注意大小寫)。接著Target Alias選擇MySQL ODBC建立的名稱。

11

10

9

12

13

 

 

 

14

[Delphi XE3]ESC/POS範例

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

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

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

[sourcecode language=”delphi”]
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;
[/sourcecode]

【POS系統開發】淺談ESC/POS

ESC/POS是由EPSON所制定給POS印表機專用的控制碼,因為清楚的制定各機型間的專有功能,且具有高度彈性的特性。後來被廣泛的支援並應用!目前大部份的熱感應印表機(出單機、發票機),都支援ESC/POS這套控制碼。所以POS在開發時,印表機可以在不用安裝驅動程式的狀況下,直接以ESC/POS指令列印。

而從下圖可以看到ESC/POS則是由ESC/P (Epson Standard Code for Printers)所衍生下來的。
esc-pos-history
如果對於指令有興趣的朋友,可以參考以下的文件。

【認識POS硬體】可程式電子錢櫃Cash drawer

  對一套POS系統來說,收銀結帳是很重要的環節,在早期POS未普遍時,大多由老闆/老闆娘或是可信賴的人來經手金錢,而POS系統普及後,由於可控管結算收銀金額及程式化錢櫃,才讓重要工作可以轉交給收銀員。

錢櫃主要分二種介面接頭(Interface connector),一種是印表機介面(RJ11/RJ12 connector);另一種是RS-232介面。在選購時就要注意,印表機介面的錢櫃是需要連結出單機、發票機或其他印表裝置,因為RJ11/RJ12的接頭接受24V電源輸入,而不用外接電源;而RS-232介面的錢櫃則是直接連結電腦,但RS-232不提供電源,所以需要12V的電源(也有5V的電源)。

控制的部份也分為二種:

1.RS-232介面錢櫃

RS-232介面的錢櫃控制很簡單,只要隨便向RS-232丟訊號即可。

或是在DOS模式(開始→執行 cmd),輸入 copy con com1此類的指令就可以打開了!

2.RJ11/RJ12介面錢櫃

而RJ11/RJ12介面的錢櫃,因為需要先送指令到印表機後,再由印表機發出開錢櫃的指令,相對之下安全性就較高,也可以從印表機的設定中,設定列印前(後)開啟錢櫃。較高階的錢櫃也可以偵測是開啟或關閉的。