JavaPOS标准v1.14 (2)

  Device Behavior Models



Properties,Methods,Events:

 6.1             Properties.  

      设备的特性或者设置。

      读取属性的方法:

           TypegetSampleProperty() throws JposException;

           voidsetSampleProperty(Type value) throws JposException;


 6.2             Methods


 6.3             Events

Javapos利用事件来实现回调,上层应用必须注册它所关心的事件,注册后,当事件派送时,javapos就会调用上层应用的处理事件的方法。

 

设备初始和终止处理

通常,上层应用的调用次序如下:

l  获取Device Control的对象/引用

l  注册事件

l  调用open方法,从而实例化Device Service,并和Device Control关联。

l  调用claim方法,获取物理设备的独占权。

l  设置属性DeviceEnabled为true

l  使用设备

l  设置属性DeviceEnabled为false

l  调用release方法,释放物理设备的独占权。

l  调用close方法,取消Device Control和Device Service的关联。

l  注销事件。

 


设备共享模型

JavaPOS设备分类两种共享方式:被一个Device Control独占,或者被多个Devicecontrol完全共享或者部分共享。

l  独占设备

常见的设备一般都是独占的,比如pos打印机。这就意味着,上层应用必须首先调用claim方法去获取独占权,如果在获取独占权之前调用方法或者访问属性,就会抛出异常JposException。

l  共享设备

有些设备是共享式的,比如keylock。他们能够被多个Device control实例访问。

 


数据类型



异常



事件



Device Service内部创建并维护一个事件队列,当事件产生时,它将该事件放入到队列中,当消费事件队列的线程在进行消费某个事件时,会调用Device Control中的回调方法,而且,在这些回调方法中,将会调用上层应用程序中定义的event listener.

 

 

设备输入模型

对于独占类设备来说,设备输入模型就是事件驱动输入。只有在DeviceEnabled为true的时候,才允许接受数据。收到的数据会被当做一个DataEvent入队。如果属AutoDisable为true,那么当接受到数据的时候,JavaPOS设备会自动禁用自己,并将DeviceEnabled设置为false。

 

如果上层应用程序想要接受来自设备的输入,那么就要将DataEventEnabled属性设置为true。如此之后当收到输入的时候,设备就会投送一个DataEvent事件。DataEvent事件可能会通过Status属性包含输入状态信息。

 

当设备在投递该事件之前,会将DataEventEnabled属性设置为false以禁止以后的输入数据事件。这就导致了当应用程序在处理某个输入的时候,新的输入数据将被入队。当处理完成之后,将DataEventEnabled属性设置为真,从而继续处理。

 

Error handling

 

Miscellaneous

对于有些设备来说,应用程序必须调用一个初始化输入的方法。当设备收到输入后,通常不会再接受其他输入,直到重新调用初始化输入的方法。MICR和Signature Capturedevice就是这样的设备。

 

 

 

设备输出模型

输出模型包含同步和异步两种方式。有些设备支持两种,有些只支持一种,有些甚至都不支持。

 

l  同步方式

上层应用调用设备类别特定的方法完成输出,只有输出完成后,javapos设备才返回。当输出操作很快时,可考虑用这种方式。同步方式的优势是使用简单。

l  异步方式

上层应用程序调用设备的特定的异步方法时,javapos设备会校验参数,如果参数不合法,就抛出异常。然后,将进行如下操作:

1.      为这个请求分配内存

2.      为这个请求设置OutputID属性

3.      尽快的返回

当JAVAPOS设备完成这个请求后,OutputCompleteEvent事件将会被投递给上层应用。这个事件的属性包含了已经完成的请求的output id。如果在处理完成之前,应用程序调用了clearOutput方法或者产生了JPOS_ER_CLEAR的ErrorEEvent,那么就不会产生OutputCompleteEvent了。

 

 

设备电源状态报告模型

应用程序经常需要知道电源状态信息,这里的电源状态不是指电量(通电,电量低)。

 

Javapos将设备电源状态分为三个:

ONLINE:设备已上电并且就绪。

OFF:设备已断电或者跟终端已经断开。

OFFLINE:设备已上电,但是未就绪或者还不能相应请求。

OFF_OFFLINE:OFF或者OFFLINE。

属性

下面的属性适用于所有设备类型:

CapPowerReporting:

         标识电源报告的能力。属性值:JPOS_PR_NONE(Device Service不能够决定设备电源状态),JPOS_PR_STANDARD(DeviceService能够决定OFF_OFFLINE和ONLINE),JPOS_PR_ADVANCED(DeviceService能够决定OFF、OFFLINE和ONLINE)。

PowerState:

         由Device Service维护的一个属性,取值:JPOS_PS_UNKNOWN、JPOS_PS_ONLINE、JPOS_PS_OFF、JPOS_PS_OFFLINE、JPOS_PS_OFF_OFFLINE。

PowerNotify:

         应用程序设置该属性,通过StatusUpdateEvents和PowerState属性来进行电源状态报告通知。这个属性必须在DeviceEnabled属性之前设置。

 

设备信息报告模型

上层应用经常需要获取各种设备的配置信息和使用属性等信息。比如配置信息有设备序列号,固件版本和连接类型。POS打印机的使用数据有,打印的行数,切纸张数等。

 

更新固件模型

上层应用程序要求能够对POS设备进行固件更新。Javapos规定的机制如下:

l  CapUpdateFirmware,属性,标识设备是否支持固件更新

l  CapCompareFirmwareVersion,属性,标识固件版本是否可比较

l  updateFirmware,方法,异步方式更新固件

l  compareFirmwareVersion,方法,比较固件版本

l  StatusUpdateEvent,事件,报告固件更新进度

 

设备状态

Javapos定义了一个属性,State,有以下值:

JPOS_S_CLOSED

JPOS_S_IDLE

JPOS_S_BUSY

JPOS_S_ERROR

 

1,  初始值为JPOS_S_CLOSED

2,  Open方法成功调用后为JPOS_S_IDLE

3,  设备正在处理输出的时候为JPOS_S_BUSY,输出完成后为JPOS_S_IDLE

4,  当遇到错误的时候为JPOS_S_ERROR

 

线程

当DEVICE CONTROL实例被用在多线程中的时候,需要注意同步。

 

版本处理

略。

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值