大家好,
需求:在某行政大厅中,有自助终端机,客户可以上去办理某项行政业务,填表格并打印出来,但打印之前,需要先付费,因此该机子上会有一个“塞钱”的入口,当然也可以找零,付款完毕后,系统才打印。用户填写的表格是java表单,“提交”后,等待用户付款,付完款后,java保存数据并打印。问:据我所知,自助收费机是硬件实现的(如自助售饮料机),那么,java程序如何与这玩意互通?即,java如何能监听到收费系统的状态(如客户已准确付款、客户付款不够等)?谢谢大家~

解决方案 »

  1.   

    没具体研究过,但提供下我自己的思路。
    可以看到,这是个软硬结合的系统。系统的功能是软件功能和硬件功能的组合。那么,必须清楚地定义出软件实现什么,硬件实现什么。这就解决了系统设计的最基本问题:定义模块的接口。软件是模块,收钱的机器也是模块。
    具体到收银机,就是把它看成一个黑盒子,那么他具有的接口就是:
    1、接受一个钱数并启动收钱过程,包括检测真伪、找零等等;
    2、提供一个接口用于外部调用者查询状态,可能的状态包括:空闲、正在收钱、收钱成功、收钱失败等等;
    那么,收银机之外的系统所做的就是:
    1、调用接口获取收银机状态,如果空闲,进行第二步。其它状态下,应该等待,并在等待时间结束后继续获取收银机状态知道其空闲。或者不等待,先使用者反馈状态并进行其它业务;
    2、调用接口发给收银机一个钱数;
    3、通过调用接口轮询收银机状态,此时关心的是收钱成功或者失败。
    4、获取状态后在进行其它业务处理;至于软件与设备的通讯,可用的接口很多。可能COM口是目前选择较多的。这主要取决于设备提供什么。当然,有的设备本身不提供任何外部接口,这就必须做改装了,难度可能很大。另外,现在有通用的收银设备模块,可以考虑用来集成,而不要考虑使用成型设备,如自动售货机之类的来进行集成。
      

  2.   

    厂商会给你对应的调用接口,你可以直接调用。如果给的是对应的Java接口,那么比较方便,如果是C接口,则需要用到JNI。