资料名称 iF6报钟器-公共接口程序(SQL方式)—硬件设备驱动V1.01
更新时间 2013-9-14 16:09:17
下载地址
http://pan.baidu.com/share/link?shareid=3212436965&uk=624116759
资料说明
我公司提供以数据库作为开发接口的方式与第三方应用程序作对接,底层接口程序“智能语音报钟系统iF6设备驱动服务”(下称设备驱动)负责完成通过RS232/RS485和刷卡器进行通讯的工作;第三方合作软件公司依据自己需求,开发的应用程序(下称应用程序)可根据接口协议与设备驱动对接,主要分为以下三步完成。
1、设备驱动程序完成了对设备发来的RS232/RS485格式数据解包,并将信息内容保存至数据表FXT_MESSAGE中,并将相应的记录状态(message_status字段)设置成为“请求”;
2、应用程序定期(如1秒钟,具体时间可由应用程序自行定义)对数据表FXT_MESSAGE进行检索,查询是否有新增的“请求”记录;获得请求信息后,完成请求所要求的功能,并将结果写回数据表FXT_MESSAGE中,修改相应字段。修改方法为:将处理结果写入response_conten字段中,并将message_status设置为“响应”。
3、设备驱动程序扫描数据表FXT_MESSAGE,查询是否有“响应”信息,并将响应内容发送至对应的设备,设备收到驱动发来的信息后,对信息进行处理(如显示成功/失败、到钟提醒、报警等),然后通知驱动程序处理成功,驱动程序修改记录状态为null,此时驱动完成了整个信息处理。对于完成了的信息记录,应用程序可进行任意操作(比如移除、清除等)
 
工作流程图如下:
图一:接口流程图
 
 
二、驱动安装及运行环境需求
1、安装设备驱动需要确保有Java的运行环境,以及RS232串口驱动;
2、需安装SQLSERVER数据库,数据库与设备驱动可以分别在不同的服务器或工作站中运行;
三、数据库接口表结构
    FXT_SETTING表格说明
     字段名称
数据类型
是否为空
详细说明
agent_name
nvarchar
NOT NULL
代理名称
com_id
int
PK
串口号
baud_rate
int
NULL
波特率
start_bits
int
NULL
开始位
stop_bits
int
NULL
停止位
data_bits
int
NULL
数据位
parity
int
NULL
校验位
    此表格存放串口号代理器,一个串口号可以接128个设备。
    FXT_MENU表格说明
     字段名称
数据类型
是否为空
详细说明
menu_type
nvarchar
PK
刷卡器中可更新菜单类型,包括:上钟模式;技师类别;服务类型;商品编号
menu_item
nvarchar
PK
菜单项目,具体的菜单项目内容
此表格存放的数据将在设置功能启动的时候自动从数据库中读取。
FXT_MESSAGE表说明:
字段名称
数据类型
是否为空
详细说明
com_id
int
PK
串口号
device_id
int
PK
设备号
request_time
datetime
PK
请求时间,精确到毫秒 (ms)
request_type
nvarchar
NULL
请求命令类型,如:上钟、加钟、服务、查询、小费、商品等等
request_param
nvarchar
NULL
请求命令参数列表,如:小费金额:202;技师卡号:0001488298
response_time
Datetime
NULL
响应时间,精确到毫秒 (ms)
response_type
Nvarchar
NULL
响应类型:包括“返回信息”、“催钟”、“报警”等等
response_content
Nvarchar
NULL
响应内容,一段简体文字(GB2312)或者一个编号,以供发出声音
message_status
Nvarchar
NULL
信息状态,“请求”、“响应”为空等
具体的创建表格SQL文件请参考db/createdatabase.sql文件的
请求例子格式如下:
com_id
device_id
Request_time
Request_type
Request_param
Message_status
1
1
2011-9-6
10:10:10.168
加钟
加钟时间:60;客人卡号: 0008888868;技师卡号:0006666866
请求
在实际施工中,通过串口扩展卡,一个PCI插槽可以扩展8个串口,每个串口最多可以连接128个房间。客户应该在自己的系统中建立房间与串口号和设备号的对应关系。这样通过串口号,和设备号,软件就可以得到是哪个房间发送的信息了。
四、命令内容的详细格式
请求参数根据不同的请求类型即命令内容的不同,拥有的参数个数和参数名称是不一样的,具体的参数需要根据刷卡器设置的菜单类型来决定;应用程序应先将参数列表解释成为“名=值”对的方式放在存储表中,然后根据需要来获得相关的参数值,从而调用不同的功能方法。    例如加钟:
命令类型       加钟
命令参数       模式编号:01;加钟钟数:1;技师卡号:0006666866
应用软件应该根据命令类型的不同,对命令参数进行分析,获得每个必要的参数值。对命令参数处理时需要使用正则表达式:首先以分号作为间隔获得参数名称和值对,将其以参数名为主键,存入哈希表中,然后根据参数名称获得值来作相应处理。
1、应用程序获得有效请求的方法:
由于应用程序程序可能是由不同的语言编写的,所以方法会有一定差异,但是应用标准的SQL数据库语言或者ODBC接口,使用以下SQL查询语句通常可以完成这个功能:
select * from fxt_message where request_time>getDate()-0.001 and message_status='请求';
其中request_time>getDate()-0.001表示请求时间不超过1分30秒的记录,也可就通过编程动态计算获得。
获得数据库记录后,有可能同时存在多个记录,应该根据每一个记录的串口号、设备号、请求类型、请求参数逐个进行处理,调用不同的方法处理。
2、应用程序返回信息
本接口可以接受的返回信息可以不是固定的,可根据国标字库显示相应的文字,常用信息:
起钟成功 加钟成功 小费成功 错误技师卡    已经起钟 房间错误 出钟成功
应钟成功 服务成功 没有起钟 错误部长卡    错误客人卡    错误模式编号
错误商品编号  错误技师编号  排钟成功 点钟成功 选钟成功 括钟成功
撤钟成功 退技师成功    更换房间成功  商品成功 赠送成功 错误技师类别
应用程序可根据流程需要,自行设置相应的返回信息,但字体不能超过31个中文字符或62个英文字符。
使用以下SQL查询语句通常可以完成这个功能:
update fxt_message
set response_time=getDate(),
response_type='返回信息',
response_content='$信息内容$',
message_status='响应'
where com_id='$com_id$' and device_id='$device_id$' and request_time=$请求时间$
其中$信息内容$根据上一步骤处理结果所返回的情况,动态确定;
其中$com_id$、$device_id$和$请求时间$根据获取请求时查询所得相应值来确定。