|
看到標題, 或許有人會覺得奇怪, POS 跟後台 DB 通訊或要資料, 用資料庫聯結的方式或是 HTTP/XML 查詢不就得了 ?? 原因如下
1.這是有數百台 POS 規模的客戶, 不會讓你每台 POS 都灌個 ORACLE CLIENT 之類的東西直接去連資料庫
2.專櫃收銀員素質不一, 預防利用 POS 偷上網, 或是病毒感染癱瘓整個賣場網路, 幾乎所有通訊協定都鎖起來, 除了 POS 跟 POS SERVER 間自定的 Middle ware 的通訊協定
3.包含檔案傳輸, 都絕不透過網芳或是 FTP , 完全使用自訂通訊方式 , 本案例就是實做自訂的 POS 跟 POS SERVER 間的 Middle ware 通訊
我個人把收銀機前後台網路通訊歸類為四種主要命令, 建立好後這四種命令機制後, POS 前後台之間的通訊需求都可搞定, 其它業種之程式需求當然也可應用到
1.SEND_STR 命令 : POS 向主機發出 STRING 資料
例如 : POS 送出 "I AM ALIVE" 告知主機 POS 連線狀況
2.GET_STR 命令 : POS 向主機要求取回 STRING 資料
例如 : POS 向後台要回主機時間字串以便同步 POS 時間,
或是簡單查詢字串 (送出會員卡號, 從主機取回會員姓名等)
3.SEND_FILE 命令 : POS 向主機送出 FILE
例如 : POS 把交易資料檔送至主機
4.GET_FILE 命令 : POS 向主機要求取回 FILE (可能有多筆檔案)
例如 : POS 從主機取得 "程式更新", "主檔配信",
甚至較複雜的查詢(如退貨交易資料內容)都可透過 GET_FILE 命令機制
這些機制可以綁在 POS 程式中, 變成 POS 程式的一部份; 也可獨立出成一 Middleware 程式, 基本上本程式是 for 收銀機使用目的而開發, 但並非 for 收銀機程式專用, 上面四種通訊功能其實就是一般程式與程式在網路上的資料交換應用
--------------------------------------------------------------------------------------------------------------------------------------
INDY 10 是 Borland Delphi/BCB 上有名的網路通訊元件, 現已移植到 Lazarus 上, INDY 10 跟 INDY 9 的 CODING 方式差異很大, 為了實做以上提到的四種命令機制, 研究了幾個晚上才有所成果, 把網路上找到的一些程式碼片段連結起來改成我要的機能就成了本程式, 其中包含大檔案的分割傳送, Server 收到 Client 取檔指令後如何透過原連線回送檔案到 Client(不用再開一新連線), 分享給大家
因為初到貴寶地, 資歷還很菜, 無法提交帶有連結位置的完整源碼位置, 各位就忍痛勉強看一下直接貼在這兒的源碼, 等我哪天資歷夠了再把完整源碼連結位置貼出來 (如果我沒忘記這件事的話) |
评分
-
查看全部评分
|