開店買POS收銀硬體?找銥特爾科技是好選擇!

身邊好多朋友都在詢問,POS硬體買那一家比較好?不過說實在的!壽山是吃軟不吃硬的傢伙,所以都著重在軟體開發上面。硬體多是配合居多~不過既然大家都一直在詢問的話,就推一下朋友的老字號餐飲收銀系統公司。

銥特爾科技擁有超過十五年的餐飲、飲料、快餐POS收銀系統的經驗,硬體除了有低廉買斷的價格外,也可以利用月租的方式取得收銀機。而除了其他基本的硬體如出單機、客戶顯示器、標籤機、發票機之外,銥特爾科技也獨家取得台灣區的取餐呼叫器總代理,以及指紋門禁考勤機、來電顯示器等硬體。

10153777_220668251466416_5925132099323567958_n

1960052_214749398724968_105793911_n

1601354_214749395391635_1595013721_n

POS軟體部份,有功能強大的富必達阿波羅餐飲POS系統,也有簡單易上手的安達POS系統可做選擇,如果店家需要使用行動裝置做點餐,也有無線點餐系統可供選購。

10178132_218483098351598_4639304801783421976_n

10262050_218483095018265_128909876423590086_n    10151765_218483091684932_8697685651644490876_n1620879_218480575018517_9132188576972621908_n

10157130_218480531685188_4524845556808369937_n   10256103_218480595018515_6634262374133315077_n

10247304_220668071466434_5959772453704020542_n

銥特爾科技粉絲頁網址 http://on.fb.me/1gSk8dl

銥特爾點餐POS系統銷售諮詢

專線電話:02-29974000 / 蕭先生 0922067818 / 潘先生 0922987818

Delphi使用SPComm沒辦法觸發ReceiveData

SPComm 在連線Com機器時,時候沒辦法觸發 ReceiveData,後來才知道StartComm後要留點時間給它喘氣(連線)。所以加上sleep~

[pascal]
var
s:Ansistring;
begin
RepCom.StartComm;
s := Chr(16) + Chr(4) + Chr(1) ;
sleep(50);
RepCom.WriteCommData(PAnsiChar(s),Length(s));
end;
[/pascal]

Delphi仿POS系統設定按鈕拖曳更改排序

drag2

drag1
許多餐飲或是快餐POS系統都會提供拖曳去更改按鈕排序!
在Delphi可不可以做得到呢?當然是簡單的~

1)MouseDown事件加上
(sender as tbutton).BeginDrag(false);
2)DragOver事件加上
if source is TButton then
Accept:=true;
3)DragDrop事件加上 >> 互換對方的caption
if Sender is TButton then begin
TempCaption := TButton(Source).Caption;
TButton(Source).Caption := TButton(Sender).Caption;
TButton(Sender).Caption := TempCaption;
end;

Delphi POS餐飲系統開發支援多國語言作法

開發餐飲POS或是其他系統,如果想打入國際市場的話,都會考量多國語系的問題,大部份就是使用mapping的方式。

在Delphi裡面的做法也很簡單~

先取得form上面的元件數(ComponentCount)

接下來用一個迴圈去比對即可。

資料表也可以開成一個

表單名稱、元件名稱、語言1、語言2、語言3的欄位…

不過因為裡面使用了infopower的wwdbgrid元件,寫在formcreate或formshow都抓不到值,後來是放到FormActivate才順利抓到

以下提供簡單的範例

 
[pascal]
var
sFormName:String;
i:integer;
begin
sFormName:= Self.Name; // 表單名稱
for i:=0 to self.ComponentCount -1 do begin
if Components[i] is TLabel then begin
if (TLabel(components[i]).Caption <>”) then begin
TLabel(components[i]).Caption := 取得語系….;
end;
end;
if Components[i] is TButton then begin
if (TButton (components[i]).Caption <>”) then begin
TButton (components[i]).Caption := 取得語系….;
end;
end;
end;
end;
[/pascal]
wwDBGrid的話關鍵有:
s:= TwwDBGrid(Components[i]).DataSource.DataSet.Fields[j].FieldName;
TwwDBGrid(Components[i]).ColumnByName(s).DisplayLabel
TwwDBGrid(Components[i]).ColumnByName(s).GroupName

Delphi使用記憶體模擬表格的kbmmemtable

雖然在Delphi有clientdataset可以使用,但美中不足的是必需在程式部署時附上midas.dll,或是在程式中uses MidasLib。最近看到國外在討論的kbmmemtable,由於在寫餐飲的POS功能所以也來測試一下。

因為kbmmemtable不需要BDE支援,所以不用特別去設定DatabaseName, TableName和TableType這些屬性。

建立欄位很簡單,

with kbmMemTable1.FieldDefs do
begin
Clear;
Add(‘t01’, ftInteger, 0, false);
end;

建立index也只需要

Add(‘Index01’, ‘value’, []);

接著就可以像一般的ttable一樣,append新增edit修改delete刪除等動作…..

然後呢也可以直接讓datasource指定它,讓kbmmemtable的值顯示在dbgird上面。

它支援loadfromdataset的功能,如果需要cache資料在程式裡不要連結資料庫時,就可以利用這個功能。另外也可以支援savetofile的功能,共有二種

1)二進位資料

SaveToBinaryFile

LoadFromBinaryFile

2)csv格式

SaveToFile

LoadFromFile

 

常見的餐飲、飲料POS機硬體設定問題

接觸餐飲、快餐、飲料店等POS開發後,週遭許多朋友都會問相關的問題!
不過許多看起來真的都是設定上的問題,可能是因為有潔癖的關係,看到線髒了就像拔起來擦一擦,不過悲劇就開始發生了~接回去硬體全都不聽使喚!再加上呼叫POS廠商叫天天不應、叫地地不靈的情況下,欲哭無淚。

不過真的有這麼困難嗎?其實也還好啦!就由壽山來帶領大家稍微認識一下。

1441363_10151669974171541_2044485183_n-2上圖是POS機器與各種硬體連接的介面,大致上就是幾種規格:

  • LPT 點矩陣式印表機用
  • Line In/Out 麥克風/喇叭
  • COM(Serial port) 主要POS機硬體規格
  • USB
  • LAN 網路
  • PS/2 鍵盤、滑鼠
  • VGA 可以第二台螢幕
  • RJ11
  • DC 電源

言歸正傳,那為什麼我把家裡USB的鍵盤、滑鼠、隨身碟隨便拔插都可以抓得到?為什麼上面的COM1~4我接錯了就不會動呢?

螢幕快照 2013-11-04 下午5.59.16

原因是Serial Port的控制是直接將指令送到指定的Com Port去,不經過驅動程式去驅動的情況下直接使用。

所以下一次在拔插Com Port的插頭時,記得要先記住那個Port是接在那個Com Port,如果真的忘了就去找到系統中設定Com Port的位置去接對就行了。

 

 

Delphi XE5 30天學習暫停五天

晚安!突然有網友來信問了怎麼停頓沒教了呢?其實不是沒有教啦~只是最近在忙著手上的專案。剛好手上在從事 餐飲業的POS系統開發以及 Codeigniter 結合 bootstrap3的案子,這正好又可以寫一些文章分享了!

請大家耐心等候囉!

[Delphi] 餐廳、飲料、簡餐等餐飲業POS系統畫面實踐

posscreen

在餐廳、飲料、簡餐等餐飲業的pos系統,常常可以如上圖的畫面。在Delphi如何實踐呢?提出幾個重點:

1.取得.ClientWidth、ClientHeight

2.如果是Scrollbox這類會出現捲軸的元件,記得再透過GetSystemMetrics(SM_CXVSCROLL)、GetSystemMetrics(SM_CYHSCROLL)取得捲軸的寬度、高度,扣除掉才能取得正確可佈置的寬、高

3.透過Ceil記算頁數

4.Create元件時記得設定Parent

5.清空元件利用

while xxx.ControlCount > 0 do begin
xxx.Controls[0].Free;
end;

 

淺淡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