1

我正在开发一个销售点 (POS) 应用程序,在结账时终端需要支持各种设备;扫描仪、磁卡读卡器和现金抽屉。我们使用 POS.NET 支持所有这些,并且在正常操作情况下它们都可以正常工作。

在测试过程中发现了一个问题,如果钱箱初始化正确,然后钱箱断电,RS232 Posiflex CR4101,POS.NET 不会告诉你有什么问题。没有例外,没有错误,什么都没有。

我们使用非常标准的代码来初始化设备:

this.PosExplorer = new PosExplorer();
var deviceInfo = this.PosExplorer.GetDevice(DeviceType.CashDrawer, deviceName);
this.device = (CashDrawer)this.PosExplorer.CreateInstance(deviceInfo);
this.device.Open();
this.device.Claim(1000);
this.device.DeviceEnabled = true;

然后,当我们想要打开我们使用的现金抽屉时(包含在适当的异常处理和失败代码的重新初始化逻辑中):

this.device.OpenDrawer();

问题是,对 OpenDrawer 的调用不会返回任何问题。POS.NET 现金抽屉服务对象有一个属性 DrawerOpened,尽管抽屉实际上保持关闭状态,但它实际上返回 true。更好的是,如果此时您重新打开现金抽屉的电源,DrawerOpened 将返回 false,这表明现金抽屉刚刚关闭。

有人有建议吗?

此外,在建议之前,由于在全国所有商店推出更换的成本,现金抽屉模型不能更改为更准确(根本)报告电源状态的模型。

其次,这些设备上没有电源指示灯,因此结账人员知道任何问题的第一个迹象就是抽屉没有打开时。

第三,我建议优化工作环境,以尽量减少结账人员撞、踢或以其他方式靠近电源组或电缆的机会,以减少“部分断电”系统的机会。

这是一个针对最小公分母(用户)进行编码的练习,并试图从所有信息都错误的意外、未报告的情况中恢复。

引用波拉特的话,“大获成功!”。

4

0 回答 0