Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 28099|回复: 45

以 Lazarus 實作收銀機前後台通訊程式 (使用 INDY 10)

[复制链接]

该用户从未签到

发表于 2010-8-24 23:56:26 | 显示全部楼层 |阅读模式
看到標題, 或許有人會覺得奇怪, 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(不用再開一新連線), 分享給大家


因為初到貴寶地, 資歷還很菜, 無法提交帶有連結位置的完整源碼位置, 各位就忍痛勉強看一下直接貼在這兒的源碼, 等我哪天資歷夠了再把完整源碼連結位置貼出來 (如果我沒忘記這件事的話)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册(注册审核可向QQ群索取)

x

评分

参与人数 1威望 +11 收起 理由
猫工 + 11 互相帮助,相互学习

查看全部评分

回复

使用道具 举报

该用户从未签到

发表于 2010-8-25 09:22:29 | 显示全部楼层
回复楼主:
本人原来也写过POS系统,对于你说的几点,我也来说一下,请指教:
1.前台POS收款机是直接访问后台oracle数据库,用存储过程进行访问的。
2.整套系统是没有和外网连接的,所以收银员也不可能上外网。
3.你说的应该是安全性方面的吧,这点没有怎么考虑。用的tcp/ip

以上几点只是针对你说的那几点,我说一下我以前的办法,以上观点并不代表我的办法比你的好,只是说能人这样做过而以。

并且对您用lazarus来做pos系统,膜拜。。。
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2010-8-25 21:32:04 | 显示全部楼层

回 2楼(猫工) 的帖子

是的, 是安全性上的考量, 500 台收銀機的環境(shopping mall), 避免病毒散播癱瘓整個賣場收銀機網路, 全部公開通訊協定都被鎖起來(如 netbuie, ftp,http ....), 只容許 pos 跟 pos server 間自定的通訊方法

我個人覺得 lazarus 使用在 pos 上還 OK , 且.pos 不用 user 輸入中文; 目前慢慢把一些 POS 機制移轉到 Lazarus, 如 com port 控制, 前後台之間的通訊, 數據庫存取...都還沒遇到阻礙, "休閒研究"成果也都公開在小弟台灣雅虎 blog 中, 可惜從大陸無法連台灣雅虎, 準備慢慢把文章轉移到這邊
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2010-8-25 21:56:07 | 显示全部楼层
欢迎啊,大家互相学习
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2010-8-25 22:08:57 | 显示全部楼层
个人觉得用lazarus做pos是没问题的,几个基本的组件可以让功能上实现,只是深度的界面和功能上,需要找些第三方组件来完成,这样的组件不好找。
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2010-8-25 22:32:11 | 显示全部楼层
不好找就慢慢找呀 , 積少成多, 積沙成塔
目前已慢慢將 POS 上會用到的各個領域(如 RS-232 控制, 前後台通訊, 記憶體物件排序搜尋等等), 先以小型測試程式的方式完成, 等所有功能都完備並做過測試後, 再將這些測試程式組合成一個完整的 POS 系統

下圖是我那目前還只有空殼子的 POS 程式 (FOR LINUX) , 看到這個畫面, 我一個想到的是可以像 IPHONE 一樣 , 在螢幕上往左一滑, 數字鍵盤就跑到左邊, 方便習慣使用左手的人 (哈)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册(注册审核可向QQ群索取)

x
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2010-8-25 22:38:22 | 显示全部楼层
界面布局不错,你用到哪些第三方组件了没有?
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2025-3-16 16:30
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2010-8-25 22:40:37 | 显示全部楼层
    前来围观,表示对楼主的钦佩。。。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2010-8-25 22:41:45 | 显示全部楼层

    回 7楼(猫工) 的帖子

    應該沒有, TBUTTON 在 WIN32 下不能變顏色, 在 Linux 下卻可以, 所以看起來以為是第三方控件

    貓工長官有沒發現我還有很多功能鍵沒有做出來 ? 如退貨, 交易取消等等, 要到哪裡去按 ? 沒錯 !! 打算實作像 IPHONE 一樣, 在觸控螢幕上用手指往左或右一滑, 其它功能菜單就被 "滑" 出來讓收銀員選擇, 有沒有很 cool (哈)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-3-16 16:30
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2010-8-25 22:42:31 | 显示全部楼层
    引用第7楼猫工于2010-08-25 22:38发表的  :
    界面布局不错,你用到哪些第三方组件了没有?
    应该没用,感觉就是GTK+的皮肤,只是改了颜色,效果真的很不错。。
    回复 支持 反对

    使用道具 举报

    *滑块验证:

    本版积分规则

    QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

    GMT+8, 2025-5-2 09:45 , Processed in 0.035233 second(s), 13 queries , Redis On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表