收银台的客户端需要连接各种外设设备,包括小票打印机,智能POS,扫描枪等外围设备。
传统的收银台只有PC端,外围设备通常都是通过有线的形式连接到PC。
现代的收银台除了PC端,还有手机,平板电脑等移动收银台。
手机和平板不能通过有线的形式连接到外围设备,需要通过蓝牙,WiFi,GPRS,NFC等无线形式连接到外围设备。
基于这种情形下,设备服务器需要有以下特性。
1.可扩展。由于外围设备的类型和个数不确定,设备服务器必须支持添加设备,删除设备。
2.可共享。一个现代的收银系统可以包括多个客户端,比如PC端,iOS端,Android端。一个客户端连接的设备,可以共享其他客户端。
3.稳定。设备状态可以检测,设备掉线可以重连,设备出错可以重试,可以脱机工作。
4.高性能。设备必须稳定高效的工作,要有一定的吞吐量。可以并行或者串行工作。
设备服务器实现方案。
1.可扩展
高度抽象外设设备的基类。
一般的外围设备都有支持一下几种功能:
a.设备的查找或者发现
b.设备的连接
c.设备的状态检测
d.设备的基本信息
e.设备的数据读写
基于这些外围设备基类,每种设备实现自己的子类。
外围设备在基类的内部实现自己的连接方式,列如蓝牙,WiFi,GPRS,NFC。
设备服务器不需要关心外围设备的实现方式,直接管理外围设备。
这样设备服务器就可以支持不同的外围设备。
2.可共享。
一般收银系统的客户端都在一个局域网中,比如一个饭店的收银系统的客户端连接到一个WiFi上。
由于所有的客户端都在一个局域中,每个客户端启动一个本地的HTTP请求。
客户端添加外围设备时,都把自己连接的外围设备信息发送到中央服务器。
其他设备通过查询中央服务器,可以获取到分享的外围设备的信息,然后向共享外围设备的客户端发起HTTP请求。
分享外围设备的客户端收到请求后,向自己连接的外围设备转发请求。
3.稳定。
设计缓存队列,超时策略,完善设备状态监测,掉线重连方案,出错重连方案。
每种设备的连接方式不一样,所有必须根据设备的特性、驱动,尽可能考虑所有的可能所有出错的场景,不断的试错,不断完善。
多和设备厂商联系,向技术支持请教。
去掉一些不稳的设备,寻找同种设备的最佳厂商。
4.高性能。
使用多线程,信号量,同步锁。
同一个设备串行,不同设备并行。
找出性能的瓶颈,并进行优化。
网友评论