钱箱的英文是Cash Drawer,***是通常放在收银机下用来放现金的箱子虽然现在很多支付采用支付,但是零售业很多时候要保留一个钱箱来保存收到现金 传统流程是通过小票***印机的RJ11接口来驱动钱箱,但这样带来的问题收银机各种设备零零散散一大堆,不但不美观,而且容易出问题。
现代的收银机设备,几乎是完全集成的,通常是Android双屏设备,里面把扫码,刷脸支付,小票***印,以及称重完全集成一起,如果这时还要驱动钱箱,***需要Android自己通过钱箱RJ11来驱动了这个时候我们***要分析钱箱的控制接口了。
钱箱内部结构我们***开一个钱箱内部可以看到,钱箱平时的常闭锁住的,要不通过前面钥匙解锁,要让线圈(黄色部分)通上电吸住右侧铁芯,产生跟钥匙一样效果***是解开挂钩,这样弹簧也能弹出钱箱***印机的RJ11接口***是用这个原理,输出一段时间的5v-12v电压的电流,***能让软件弹出钱箱。
钱箱的关闭相当于是用人力推回来,又让弹簧压缩并挂上挂钩
这个控件线圈的数据线的接口是RJ11,样子跟我们常见的RJ45以太网线接口有一点像,只不过RJ11是6根线,而RJ45是8根线。
RJ11线序没有标准,只不过小票***印机兼容EPSON的制定的规范,所以RJ11线箱的线序也会按它的定义来对接按RJ11的卡口向下的角度来看,线序从左到右分别是序号1-6, 1,6号脚地线,2,5号是***印机电流输出线,3号是钱箱输入信号线,4号是24V电源。
24V是过去的规范,实现现在线箱5V到12V都能弹开。我们实现在2,5号任意一个脚输出时间电流,都能弹开钱箱.
EPOS 钱箱指令Epson在EPOS***印指令集***有一个专门开钱箱的指令,格式如下ESC p mt1t2其中esc是***印指令固定开头,***是ascii码为27的ESC的键值.字母p表示开钱箱指令,m表示向哪一个脚输出电流,m=0(ascii 48),表示向2号脚输出,m=1(ascii 49向5号脚输出.
t1表示电流输出时间,单位是毫秒,t2表示两次信号之间***小间隔时间。
我们举个例子,指令 27,112,48,255,255即 ESC p 0 (255) (255) 用2号脚弹开钱箱,电流持续255ms,间隔为255msAndroid如何驱动钱箱假设收银机把小票***印模块集成了,这样只能自己驱动RJ11的来弹钱箱了,我们买了一个u转RJ11的开箱器,测试发现可以***开钱箱,***开SDK的一看***是通过u串口发送的一个ESC P的开钱箱指令。
于是我们拆开看了一个电路。主要是三个芯片
其中个是PL-2303HX的u转串口芯片
另外两个较小的分别是 NE555及MC34063aMC34063A 是TI的一个工作温度范围为 0°C 至 70°C 的 1.5A 升压、降压、反相开关稳压器,结合边上那个大电容,它的作用是把输入u 3.3v升压到能弹开线箱的电压,即输出到4号脚去。
而NE555***TI的电路的瑞士,它是一种模拟和数字功能相结合的中规模集成器件,这种芯片具有多种功能,可以用作定时器,震荡器及脉冲产生电路。这时是由用向钱箱的2,5号脚产生一个指定时间的开箱电流。
考虑到收银机往往有串口和12V的供电,因为如果Android弹钱箱关键在于软件能产生一个5V以上电流,所以用在硬件上要加装一个NE555或者DAC芯片,(PWM电压输出不够)这是我想到方案,不知道哪位嵌入式大牛能想到其它在RK3288上产生5V的?。
#头条创作挑战赛#