下午到舊公司討論電子發票格式相關問題,跟舊同事聊天聊到電子發票支援的硬體時,舊同事也抱怨到POS相關的硬體廠商雖然”宣稱”支援”標準的ESC/POS指令”,但實測起來每台機器還是會呈現出不同的結果。
突然想到之前在做醫療檢驗儀器連線時,即使設備商提到是使用ASTM格式傳輸,但不管是尿液、血液…..適用什麼immuLite、AXSYM、Alastat….最後在做連線通訊時也是不一樣。
這也是做軟硬體結合時,寫程式的悲哀吧XDDD不過寫出來時又是另一種雀躍的心情了~~
大型網站架構..net 架構師.rabbitMQ.redis.行動開發.APP開發教學.PHP Laravel開發..net core C# 開發.架構師之路.Delphi開發.資料庫程式.進銷存.餐飲POS系統
下午到舊公司討論電子發票格式相關問題,跟舊同事聊天聊到電子發票支援的硬體時,舊同事也抱怨到POS相關的硬體廠商雖然”宣稱”支援”標準的ESC/POS指令”,但實測起來每台機器還是會呈現出不同的結果。
突然想到之前在做醫療檢驗儀器連線時,即使設備商提到是使用ASTM格式傳輸,但不管是尿液、血液…..適用什麼immuLite、AXSYM、Alastat….最後在做連線通訊時也是不一樣。
這也是做軟硬體結合時,寫程式的悲哀吧XDDD不過寫出來時又是另一種雀躍的心情了~~
找遍了台灣的資料,對於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]
因為開發需求,把對照表留下來一下。
Chr(0) | Null | Chr(29) | 分组符 | Chr(38) | & | Chr(48) | 0 |
Chr(8) | 退格 | Chr(30) | 記錄分離符號 | Chr(39) | ‘ | Chr(49) | 1 |
Chr(9) | Tab | Chr(31) | 單元分隔符號 | Chr(40) | ( | Chr(50) | 2 |
Chr(10) | 换行 | Chr(32) | 空格SPACE | Chr(41) | ) | Chr(51) | 3 |
Chr(12) | 换页 | Chr(33) | ! | Chr(42) | * | Chr(52) | 4 |
Chr(13) | Enter | Chr(33) | ! | Chr(43) | + | Chr(53) | 5 |
Chr(22) | 粘贴 | Chr(34) | “ | Chr(44) | , | Chr(54) | 6 |
Chr(26) | 撤销 | Chr(35) | # | Chr(45) | – | Chr(55) | 7 |
Chr(27) | Esc | Chr(36) | $ | Chr(46) | . | Chr(56) | 8 |
Chr(28) | 文件分隔符 | Chr(37) | % | Chr(47) | / | Chr(57) | 9 |
Chr(58) | : | Chr(68) | D | Chr(78) | N | Chr(88) | X |
Chr(59) | ; | Chr(69) | E | Chr(79) | O | Chr(89) | Y |
Chr(60) | < | Chr(70) | F | Chr(80) | P | Chr(90) | Z |
Chr(61) | = | Chr(71) | G | Chr(81) | Q | Chr(91) | [ |
Chr(62) | > | Chr(72) | H | Chr(82) | R | Chr(92) | \ |
Chr(63) | ? | Chr(73) | I | Chr(83) | S | Chr(93) | ] |
Chr(64) | @ | Chr(74) | J | Chr(84) | T | Chr(94) | ^ |
Chr(65) | A | Chr(75) | K | Chr(85) | U | Chr(95) | _ |
Chr(66) | B | Chr(76) | L | Chr(86) | V | Chr(96) | ` |
Chr(67) | C | Chr(77) | M | Chr(87) | W | Chr(97) | a |
Chr(98) | b | Chr(108) | l | Chr(118) | v | Chr(128) | € |
Chr(99) | c | Chr(109) | m | Chr(119) | w | ||
Chr(100) | d | Chr(110) | n | Chr(120) | x | ||
Chr(101) | e | Chr(111) | o | Chr(121) | y | ||
Chr(102) | f | Chr(112) | p | Chr(122) | z | ||
Chr(103) | g | Chr(113) | q | Chr(123) | { | ||
Chr(104) | h | Chr(114) | r | Chr(124) | | | ||
Chr(105) | i | Chr(115) | s | Chr(125) | } | ||
Chr(106) | j | Chr(116) | t | Chr(126) | ~ | ||
Chr(107) | k | Chr(117) | u | Chr(127) | 删除 |