資料名稱 | iF6報鐘器-公共接口程序(SQL方式)—硬件設(shè)備驅(qū)動V1.01 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
更新時間 | 2013-9-14 16:09:17 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
下載地址 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
資料說明 | 我公司提供以數(shù)據(jù)庫作為開發(fā)接口的方式與第三方應(yīng)用程序作對接,底層接口程序“智能語音報鐘系統(tǒng)iF6設(shè)備驅(qū)動服務(wù)”(下稱設(shè)備驅(qū)動)負責(zé)完成通過RS232/RS485和刷卡器進行通訊的工作;第三方合作軟件公司依據(jù)自己需求,開發(fā)的應(yīng)用程序(下稱應(yīng)用程序)可根據(jù)接口協(xié)議與設(shè)備驅(qū)動對接,主要分為以下三步完成。
1、設(shè)備驅(qū)動程序完成了對設(shè)備發(fā)來的RS232/RS485格式數(shù)據(jù)解包,并將信息內(nèi)容保存至數(shù)據(jù)表FXT_MESSAGE中,并將相應(yīng)的記錄狀態(tài)(message_status字段)設(shè)置成為“請求”;
2、應(yīng)用程序定期(如1秒鐘,具體時間可由應(yīng)用程序自行定義)對數(shù)據(jù)表FXT_MESSAGE進行檢索,查詢是否有新增的“請求”記錄;獲得請求信息后,完成請求所要求的功能,并將結(jié)果寫回數(shù)據(jù)表FXT_MESSAGE中,修改相應(yīng)字段。修改方法為:將處理結(jié)果寫入response_conten字段中,并將message_status設(shè)置為“響應(yīng)”。
3、設(shè)備驅(qū)動程序掃描數(shù)據(jù)表FXT_MESSAGE,查詢是否有“響應(yīng)”信息,并將響應(yīng)內(nèi)容發(fā)送至對應(yīng)的設(shè)備,設(shè)備收到驅(qū)動發(fā)來的信息后,對信息進行處理(如顯示成功/失敗、到鐘提醒、報警等),然后通知驅(qū)動程序處理成功,驅(qū)動程序修改記錄狀態(tài)為null,此時驅(qū)動完成了整個信息處理。對于完成了的信息記錄,應(yīng)用程序可進行任意操作(比如移除、清除等)
工作流程圖如下:
圖一:接口流程圖
1、安裝設(shè)備驅(qū)動需要確保有Java的運行環(huán)境,以及RS232串口驅(qū)動;
2、需安裝SQLSERVER數(shù)據(jù)庫,數(shù)據(jù)庫與設(shè)備驅(qū)動可以分別在不同的服務(wù)器或工作站中運行;
FXT_SETTING表格說明
此表格存放串口號代理器,一個串口號可以接128個設(shè)備。
FXT_MENU表格說明
此表格存放的數(shù)據(jù)將在設(shè)置功能啟動的時候自動從數(shù)據(jù)庫中讀取。
FXT_MESSAGE表說明:
具體的創(chuàng)建表格SQL文件請參考db/createdatabase.sql文件的
請求例子格式如下:
在實際施工中,通過串口擴展卡,一個PCI插槽可以擴展8個串口,每個串口最多可以連接128個房間。客戶應(yīng)該在自己的系統(tǒng)中建立房間與串口號和設(shè)備號的對應(yīng)關(guān)系。這樣通過串口號,和設(shè)備號,軟件就可以得到是哪個房間發(fā)送的信息了。
請求參數(shù)根據(jù)不同的請求類型即命令內(nèi)容的不同,擁有的參數(shù)個數(shù)和參數(shù)名稱是不一樣的,具體的參數(shù)需要根據(jù)刷卡器設(shè)置的菜單類型來決定;應(yīng)用程序應(yīng)先將參數(shù)列表解釋成為“名=值”對的方式放在存儲表中,然后根據(jù)需要來獲得相關(guān)的參數(shù)值,從而調(diào)用不同的功能方法。 例如加鐘:
命令類型 加鐘
命令參數(shù) 模式編號:01;加鐘鐘數(shù):1;技師卡號:0006666866
應(yīng)用軟件應(yīng)該根據(jù)命令類型的不同,對命令參數(shù)進行分析,獲得每個必要的參數(shù)值。對命令參數(shù)處理時需要使用正則表達式:首先以分號作為間隔獲得參數(shù)名稱和值對,將其以參數(shù)名為主鍵,存入哈希表中,然后根據(jù)參數(shù)名稱獲得值來作相應(yīng)處理。
1、應(yīng)用程序獲得有效請求的方法:
由于應(yīng)用程序程序可能是由不同的語言編寫的,所以方法會有一定差異,但是應(yīng)用標準的SQL數(shù)據(jù)庫語言或者ODBC接口,使用以下SQL查詢語句通常可以完成這個功能:
select * from fxt_message where request_time>getDate()-0.001 and message_status='請求';
其中request_time>getDate()-0.001表示請求時間不超過1分30秒的記錄,也可就通過編程動態(tài)計算獲得。
獲得數(shù)據(jù)庫記錄后,有可能同時存在多個記錄,應(yīng)該根據(jù)每一個記錄的串口號、設(shè)備號、請求類型、請求參數(shù)逐個進行處理,調(diào)用不同的方法處理。
2、應(yīng)用程序返回信息
本接口可以接受的返回信息可以不是固定的,可根據(jù)國標字庫顯示相應(yīng)的文字,常用信息:
起鐘成功 加鐘成功 小費成功 錯誤技師卡 已經(jīng)起鐘 房間錯誤 出鐘成功
應(yīng)鐘成功 服務(wù)成功 沒有起鐘 錯誤部長卡 錯誤客人卡 錯誤模式編號
錯誤商品編號 錯誤技師編號 排鐘成功 點鐘成功 選鐘成功 括鐘成功
撤鐘成功 退技師成功 更換房間成功 商品成功 贈送成功 錯誤技師類別
應(yīng)用程序可根據(jù)流程需要,自行設(shè)置相應(yīng)的返回信息,但字體不能超過31個中文字符或62個英文字符。
使用以下SQL查詢語句通常可以完成這個功能:
update fxt_message
set response_time=getDate(),
response_type='返回信息',
response_content='$信息內(nèi)容$',
message_status='響應(yīng)'
where com_id='$com_id$' and device_id='$device_id$' and request_time=$請求時間$
其中$信息內(nèi)容$根據(jù)上一步驟處理結(jié)果所返回的情況,動態(tài)確定;
其中$com_id$、$device_id$和$請求時間$根據(jù)獲取請求時查詢所得相應(yīng)值來確定。 |