本人开发一套中小酒店使用的餐饮管理软件,应客户需求,给后厨房添加打印机。
前台下单的时候要给后厨房自动发送厨房菜品名称,数量,桌号,下单时间。
这里有如下的技术问题:
1-串口打印机状态的判定,非常重要。打印机未开或出错(例如:缺纸)。程序要能判断出来进行菜单队列储存,直到打印机状态正常再打印出去。
2-根据不同串口打印机进行pos指令的细化,这个比较令人烦啊。打印机类型太多了。
弄了尽一个礼拜终于实现了,呵呵。
使用API:GetComState来获得串口打印机状态。
GetComState==0,代表串口打印机未打开。GetComState>0打印机开启了,发现如果缺纸的话,往端口打印机发送的打印指令会在换纸后继续执行.
唯一一个担心,缓存溢出,不过在实际中尚未发现。
单独编了一个打印服务器,利用API接受前台程序传来的菜品消息,进行队列封装,根据不同的端口信息,发送出去。
如果发现串口打印机未打开就把菜品数据添加到一个DataGridView中,有一个Timer控件在10秒中左右的循环中探测端口状态,
正常时发送数据,并且删除DataGridView中对应的行。