RS232與ESC/POS
串列傳輸&並列傳輸
POS周邊大部分都是串列傳輸(Serial)和並列傳輸(LPT),一般我們會稱呼為RS232、RS485主要是早期用來溝通硬體設備的語言,至今依舊是溝通硬體的主要方式。在POS中最常串接的發票機、熱感機、磅秤機、條碼掃描器、客戶顯示器都是利用RS232 或 LPT來達到溝通的動作。主要是透過WINDOW你要設備間互通S提供的API來操作
使用RS232一定要了解RS232的
鮑率(Baud Rate): 300, 1200, 2400, 9600, 19200, 115200 等bit/s
同位檢查(Parity Check): 奇同位(Odd)、偶同位(Even)、不減查同位(None)
資料位元(Data Bit) :5、6、7、8 bit/s。
停止位元(Stop Bit): 1 、 1.5 、 2 bit/s。
特別強調這四點的原因是因為。你要設備間互通。這四組一定要一致才會收的到正確的資訊。
台灣設備一般都是9600,n,8,1 or 9600,E,7,1
ESC/POS
這是種周邊的語言。舉凡發票機熱感機客戶顯示器都是透過這標準的ESC/POS指令來完成動作由EPSON定義。在編寫使用此指令的設備時,不需要使用到最新的技術文章。要找到相符的版本級指令集較好。[文件]
1.1 印紙本發票特別注意事項[WP-T810例外]
- 1. 在QRCODE部分進PAGMODE模式處理
- 2. PAGEMODE須定義長度及大小
- 3. 定義完畢後須先定義QRCODE的列印位置
- 4. 再送QRCODE
- 5. 如需平行列印兩顆以上QRCODE 必須在離開PAGEMODE之前都先定義好
- 6. 離開PAGEMOD->STANDMODE 再繼續列印接續資料。
- 1. 一般標準BARCODE只能印17個字元
- 2. 若要提高只能縮小BARCODE的列印寬度及長度。相對的會降低掃描能力
1.2 印BARCODE注意事項
POS的應用
- 1. 提供RS232 送收指令的元件[磅秤機整合]、[發票機整合]、[熱感機整合]、[客戶顯示器整合]
- 2. 信用卡元件
- 3. 電子發票的列印
信用卡UML
1. 利用RS232送命令觸發卡機。
- 2. 將金額、交易模式讓卡機得知,進行刷卡。
RS232元件使用
TCommDev– [RS232元件底層屬性] |
||
參數 |
屬性 |
說明 |
FBaudRate |
TBaudRateType |
鮑率 Ex. 9600 |
FDataBits |
TDataBitsType |
資料位元 Ex. 8 |
FParityCheck |
TparityCheckType |
位元檢查 Ex. None |
FStopBits |
TStopBitsType |
停止位元 Ex. _1 |
FDevicePort |
TDevicePort |
連接埠 Ex. COM1 |
FCheckDSR |
Boolean |
設備告訴電腦已準備好(過電) |
FDelay |
integer |
下一筆指令間延遲時間 |
發票機、熱感機元件
TinvPrinter. SendString – [直接送字串給周邊] |
||
參數 |
屬性 |
說明 |
SendString |
AnsiString |
預列印的字串 |
回傳 |
屬性 |
說明 |
Result |
Boolean |
True 指令已送出 False連線失敗 |
TinvPrinter. SendCOMString – [送ESC/POS指令給周邊] |
||
參數 |
屬性 |
說明 |
SendString |
AnsiString |
預送出的ESC/POS指令 |
回傳 |
屬性 |
說明 |
Result |
Boolean |
True 指令已送出 False連線失敗 |
TinvPrinter. OpenCashDrawer – [開錢櫃] |
||
回傳 |
屬性 |
說明 |
Result |
Boolean |
True 指令已送出 False連線失敗 |
TinvPrinter. PrintBarcode – [印barcode] |
||
參數 |
屬性 |
說明 |
xBarcode |
AnsiString |
要列印的BARCODE內容 |
回傳 |
屬性 |
說明 |
Result |
Boolean |
True 指令已送出 False連線失敗 |
TinvPrinter. PrintQRcode – [印QRCODE] |
||
參數 |
屬性 |
說明 |
xBarcode |
AnsiString |
要列印的QRCODE內容 |
回傳 |
屬性 |
說明 |
Result |
Boolean |
True 指令已送出 False連線失敗 |
TinvPrinter. EndPageMode– [結束PageMode] |
因Pagemode每一種機型都不相同。故此沒做成祖先 |
信用卡元件
TEDCCom. SendToEDC – [送] |
||
參數 |
屬性 |
說明 |
TransType |
AnsiString |
交易型態 [參考規格文件] |
Payment |
AnsiString |
交易金額 |
StoreNo |
AnsiString |
店號 |
PosNo |
AnsiString |
機號 |
TrnNo |
AnsiString |
交易序號 |
回傳 |
屬性 |
說明 |
Result |
Boolean |
True 指令已送出 False連線失敗 |
TEDCCom. SendToEDC2 – [Call廠商提供的EXE檔] |
||
參數 |
屬性 |
說明 |
TransType |
AnsiString |
交易型態 [參考規格文件] |
Payment |
AnsiString |
交易金額 |
StoreNo |
AnsiString |
店號 |
PosNo |
AnsiString |
機號 |
TrnNo |
AnsiString |
交易序號 |
回傳 |
屬性 |
說明 |
Result |
Boolean |
True INI已寫入 False連線失敗 |
信用卡通訊過程
Time out:60 seconds or more before sending response block.
ECR |
Route |
AS320 EDC |
REQUEST message |
è |
|
|
ç |
<ACK> <ACK> |
(ECR is waiting for response…) |
| |
(EDC is in processing…) |
|
ç |
RESPONSE message |
<ACK><ACK> |
è |
(DONE) |
REQUEST Data 144 bytes 固定長度
項 |
欄位名稱 |
長度 |
位置 |
備註 |
1 |
Trans Type |
2 |
1 |
交易別 |
2 |
Host ID |
2 |
3 |
銀行別 |
3 |
Receipt No |
6 |
5 |
調閱編號 |
4 |
Card Number |
19 |
11 |
信用卡卡號(左靠右補空白) |
5 |
Expiration Date |
4 |
30 |
信用卡有效期(以****取代) |
6 |
Trans Amount |
12 |
34 |
交易金額 |
7 |
Trans Date |
6 |
46 |
交易日期 |
8 |
Trans Time |
6 |
52 |
交易時間 |
9 |
Approval Code |
9 |
58 |
授權碼(左靠右補空白) |
10 |
ECR Response Code |
4 |
67 |
通訊回應碼 |
11 |
Terminal ID |
8 |
71 |
端末機代號 |
12 |
Reference No |
12 |
79 |
銀行交易序號 |
13 |
Store ID |
16 |
91 |
櫃號(左靠右補空白) |
14 |
Amount1 |
12 |
107 |
金額1 |
15 |
Amount2 |
12 |
119 |
金額2 |
16 |
Amount3 |
12 |
131 |
金額3 |
17 |
Installment Period |
2 |
143 |
期數 |