基于lua的播放協(xié)議轉(zhuǎn)換方法、系統(tǒng)、終端的制作方法
【專利摘要】本發(fā)明公開一種基于LUA的播放協(xié)議轉(zhuǎn)換方法,包括:S101、調(diào)用M2M模塊啟用導(dǎo)入的LUA插件包;S102、在LUA插件包中實現(xiàn)與第三方系統(tǒng)或設(shè)備的通信連接;S103、解析播放消息協(xié)議或控制消息協(xié)議,并根據(jù)協(xié)議描述到指定的服務(wù)器下載素材文件;S104、調(diào)用LUA模板引擎把抽取的數(shù)據(jù)與對應(yīng)的模板做為參數(shù)傳入到LUA模板引擎的入口函數(shù),輸出轉(zhuǎn)換后的播放消息協(xié)議或控制消息協(xié)議;S105、把轉(zhuǎn)換后的播放消息協(xié)議控制消息協(xié)議通過發(fā)送播放或控制消息接口發(fā)送至終端應(yīng)用層;S106、終端應(yīng)用層根據(jù)接收到的轉(zhuǎn)換后的播放消息協(xié)議或控制消息協(xié)議的協(xié)議描述加載素材文件進行相應(yīng)的動作。本發(fā)明公開一種基于LUA的播放消息協(xié)議轉(zhuǎn)換終端及系統(tǒng)。
【專利說明】基于LUA的播放協(xié)議轉(zhuǎn)換方法、系統(tǒng)、終端
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于LUA的播放協(xié)議轉(zhuǎn)換方法、系統(tǒng)、終端。
【背景技術(shù)】
[0002]現(xiàn)有的聯(lián)網(wǎng)版終端在對接第三方系統(tǒng)或設(shè)備時,用C程序開發(fā)存在如下兩個問題:
[0003]1.測試及BUG排查過程繁瑣:
[0004]由于嵌入式設(shè)備所采用的芯片一般是ARM、MIPSE架構(gòu),所以嵌入式開發(fā)過程是在LINUX系統(tǒng)通過交叉編譯鏈對C程序進行編譯,然后再編譯后的生成的各個庫文件掛接到嵌入式設(shè)備中運行,修改完BUG后要對程序驗證,步驟一般是:運行交叉編譯程序,執(zhí)行掛載開發(fā)環(huán)境,運行主函數(shù)三個步驟,每次修改一個小問題,都得重復(fù)執(zhí)行上述幾個步驟,對于測試、BUG排查是相當(dāng)?shù)馁M時的。
[0005]2.在嵌入式設(shè)備實現(xiàn)對多種API協(xié)議的兼容性往往開發(fā)效率不高:
[0006]嵌入式設(shè)備在實現(xiàn)對多個API協(xié)議進行對接,就需要在嵌入式設(shè)備程序通過C程序?qū)崿F(xiàn)對多種API協(xié)議的實現(xiàn),從程序維護角度講,在程序嵌入對接各種API功能,程序模塊耦合性高,給以后代碼維護,軟件升級增加的難度。從開發(fā)效率來講,在業(yè)務(wù)邏輯的實現(xiàn)往往采用動態(tài)語言(Iua)會比采用過程式語言(c)開發(fā)效率高,利用動態(tài)語言的特性如內(nèi)存回收特征可以避免C語言內(nèi)存泄露問題,帶來問題排查的復(fù)雜性。
【發(fā)明內(nèi)容】
[0007]為解決現(xiàn)有技術(shù)終端在對接第三方系統(tǒng)或設(shè)備時,用C程序開發(fā)產(chǎn)生的測試不方便,bug排查過程繁瑣、在嵌入式設(shè)備實現(xiàn)對多種API協(xié)議的兼容性開發(fā)效率不高的技術(shù)缺陷,本發(fā)明提供一種基于LUA的播放協(xié)議轉(zhuǎn)換方法及系統(tǒng),使用開發(fā)的LUA插件包實現(xiàn)協(xié)議的轉(zhuǎn)換,可以支持多種播放消息協(xié)議的效果。
[0008]本發(fā)明采用的一個技術(shù)方案是:
[0009]提供一種基于LUA的播放協(xié)議轉(zhuǎn)換方法,包括步驟:導(dǎo)入LUA插件包,并與第三方系統(tǒng)或設(shè)備建立通信連接,插件包中包含播放類模板和控制類模板,播放類模板和控制類模板是通過將播放消息協(xié)議和控制消息協(xié)議中的數(shù)據(jù)抽取出來用對應(yīng)變量名稱替換生成;按照解析規(guī)則解析第三方系統(tǒng)或設(shè)備發(fā)送的播放消息協(xié)議或控制消息協(xié)議,從解析出的播放信息和控制信息中抽取數(shù)據(jù);將抽取的數(shù)據(jù)填充到模板中對應(yīng)變量名的相應(yīng)位置,生成轉(zhuǎn)換后的播放消息協(xié)議或控制消息協(xié)議并將其發(fā)送至終端應(yīng)用層。
[0010]該一種基于LUA的播放協(xié)議轉(zhuǎn)換方法,包括:S101、調(diào)用M2M模塊啟用導(dǎo)入的LUA插件包,插件包中包含播放類模板和控制類模板,播放類模板和控制類模板是通過將播放消息協(xié)議和控制消息協(xié)議中的數(shù)據(jù)抽取出來用對應(yīng)變量名稱替換生成;S102、在LUA插件包中實現(xiàn)與第三方系統(tǒng)或設(shè)備的通信連接;S103、當(dāng)LUA插件包接收到第三方系統(tǒng)或設(shè)備發(fā)送的播放消息協(xié)議或控制消息協(xié)議時,根據(jù)協(xié)議描述判定消息類型是播放類型還是控制類型,按照解析規(guī)則解析播放消息協(xié)議或控制消息協(xié)議,并根據(jù)協(xié)議描述到指定的服務(wù)器下載素材文件;S104、從解析出的播放信息和控制信息中抽取數(shù)據(jù),然后根據(jù)消息類型尋找對應(yīng)的協(xié)議模板,再調(diào)用LUA模板引擎把抽取的數(shù)據(jù)與對應(yīng)的模板做為參數(shù)傳入到LUA模板引擎的入口函數(shù),通過入口函數(shù)輸出轉(zhuǎn)換后的播放消息協(xié)議或控制消息協(xié)議;S105、調(diào)用M2M模塊的發(fā)送播放或控制消息接口,把轉(zhuǎn)換后的播放消息協(xié)議控制消息協(xié)議通過發(fā)送播放或控制消息接口發(fā)送至終端應(yīng)用層;S106、終端應(yīng)用層根據(jù)接收到的轉(zhuǎn)換后的播放消息協(xié)議或控制消息協(xié)議的協(xié)議描述加載素材文件進行相應(yīng)的動作。
[0011]本發(fā)明采用的另一個技術(shù)方案是:
[0012]提供一種基于LUA的播放消息協(xié)議轉(zhuǎn)換終端,包括M2M模塊,還包括:啟用模塊,用于調(diào)用M2M模塊啟用導(dǎo)入的LUA插件包,插件包中包含播放類模板和控制類模板,播放類模板和控制類模板是通過將播放消息協(xié)議和控制消息協(xié)議中的數(shù)據(jù)抽取出來用對應(yīng)變量名稱替換生成;通信模塊,用于在LUA插件包中實現(xiàn)與第三方系統(tǒng)或設(shè)備的通信連接;解析和下載模塊,用于當(dāng)LUA插件包接收到第三方系統(tǒng)或設(shè)備發(fā)送的播放消息協(xié)議或控制消息協(xié)議時,根據(jù)協(xié)議描述判定消息類型是播放類型還是控制類型,按照解析規(guī)則解析播放消息協(xié)議或控制消息協(xié)議,并根據(jù)協(xié)議描述到指定的服務(wù)器下載素材文件;協(xié)議轉(zhuǎn)換模塊,用于從解析出的播放信息和控制信息中抽取數(shù)據(jù),然后根據(jù)消息類型尋找對應(yīng)的協(xié)議模板,再調(diào)用LUA模板引擎把抽取的數(shù)據(jù)與對應(yīng)的模板做為參數(shù)傳入到LUA模板引擎的入口函數(shù),通過入口函數(shù)輸出轉(zhuǎn)換后的播放消息協(xié)議或控制消息協(xié)議;協(xié)議發(fā)送模塊,用于調(diào)用M2M模塊的發(fā)送播放或控制消息接口,把轉(zhuǎn)換后的播放消息協(xié)議控制消息協(xié)議通過發(fā)送播放或控制消息接口發(fā)送至終端應(yīng)用層;播放執(zhí)行模塊,用于控制終端應(yīng)用層根據(jù)接收到的轉(zhuǎn)換后的播放消息協(xié)議或控制消息協(xié)議的協(xié)議描述加載素材文件進行相應(yīng)的動作。
[0013]本發(fā)明采用的另一個技術(shù)方案是:
[0014]提供一種基于LUA的播放消息協(xié)議轉(zhuǎn)換系統(tǒng),包括第三方系統(tǒng)以及與第三方系統(tǒng)通信連接的至少一個終端,所述終端是所述的基于LUA的播放消息協(xié)議轉(zhuǎn)換終端,所述第三方系統(tǒng)用于發(fā)送播放消息協(xié)議或控制消息協(xié)議至所述終端。
[0015]本發(fā)明的有益效果是:區(qū)別于現(xiàn)有技術(shù)中,終端在對接第三方系統(tǒng)或設(shè)備時,用C程序開發(fā)產(chǎn)生的測試不方便,bug排查過程繁瑣、在嵌入式設(shè)備實現(xiàn)對多種API協(xié)議的兼容性開發(fā)效率不高的技術(shù)缺陷,本發(fā)明提供一種基于LUA的播放協(xié)議轉(zhuǎn)換方法、系統(tǒng)、終端,使用開發(fā)的LUA插件包實現(xiàn)協(xié)議的轉(zhuǎn)換,將各類協(xié)議抽象為模板,通過對第三方設(shè)備或系統(tǒng)的協(xié)議解析將控制或播放信息填入模板得到轉(zhuǎn)換后的協(xié)議,然后終端根據(jù)轉(zhuǎn)換后的協(xié)議實現(xiàn)播放,通過插件的形式導(dǎo)入到終端,可以支持多種播放消息協(xié)議的效果。
【專利附圖】
【附圖說明】
[0016]圖1是本發(fā)明一實施方式中一種基于LUA的播放協(xié)議轉(zhuǎn)換方法的執(zhí)行流程圖;
[0017]圖2是本發(fā)明一實施方式中一種LUA的播放消息協(xié)議轉(zhuǎn)換系統(tǒng)的系統(tǒng)框圖。
【具體實施方式】
[0018]為詳細說明本發(fā)明的技術(shù)內(nèi)容、構(gòu)造特征、所實現(xiàn)目的及效果,以下結(jié)合實施方式并配合附圖詳予說明。[0019]LUA是一個小巧的腳本語言,該語言的設(shè)計目的是為了嵌入應(yīng)用程序中,從而為應(yīng)用程序提供靈活的擴展和定制功能。LUA腳本可以很容易的被C/C++代碼調(diào)用,也可以反過來調(diào)用C/C++的函數(shù),這使得LUA在應(yīng)用程序中可以被廣泛應(yīng)用。不僅僅的協(xié)議描述加載素材文件進行相應(yīng)的動作擴展腳本,也可以的協(xié)議描述加載素材文件進行相應(yīng)的動作普通的配置文件,代替XML、Ini等文件格式,并且更容易理解和維護。
[0020]LUA由標(biāo)準(zhǔn)C編寫而成,代碼簡潔優(yōu)美,幾乎在所有操作系統(tǒng)和平臺上都可以編譯、運行。一個完整的LUA解釋器不過200k,在目前所有腳本引擎中,LUA的速度是最快的。這一切都決定了 LUA是的協(xié)議描述加載素材文件進行相應(yīng)的動作嵌入式腳本的最佳選擇。
[0021]本發(fā)明提供一種基于LUA的播放協(xié)議轉(zhuǎn)換方法,該方法主要包括如下步驟:
[0022](I )、導(dǎo)入LUA插件包,并與第三方系統(tǒng)或設(shè)備建立通信連接,插件包中包含播放類模板和控制類模板,播放類模板和控制類模板是通過將播放消息協(xié)議和控制消息協(xié)議中的數(shù)據(jù)抽取出來用對應(yīng)變量名稱替換生成;
[0023](2)、按照解析規(guī)則解析第三方系統(tǒng)或設(shè)備發(fā)送的播放消息協(xié)議或控制消息協(xié)議,從解析出的播放信息和控制信息中抽取數(shù)據(jù);
[0024](3)、將抽取的數(shù)據(jù)填充到模板中對應(yīng)變量名的相應(yīng)位置,生成轉(zhuǎn)換后的播放消息協(xié)議或控制消息協(xié)議并將其發(fā)送至終端應(yīng)用層。
[0025]下面對上述方法的【具體實施方式】通過實例予以詳述。
[0026]一、首先,對本發(fā)明LUA插件包結(jié)構(gòu)與M2M結(jié)構(gòu)、LUA開發(fā)流程以及終端與第三方系統(tǒng)或設(shè)備的對接實例加以說明,
[0027](一)、LUA插件包結(jié)構(gòu)與M2M結(jié)構(gòu):
[0028]終端與第三方系統(tǒng)或其它設(shè)備對接實現(xiàn),是由終端的M2M去裝載終端LUA插件包,對接的業(yè)務(wù)邏輯實現(xiàn)都放入LUA插件包。
[0029]下面對于LUA插件包結(jié)構(gòu)進行說明:
[0030]1、LUA 插件包的格式:DMB_plugin_name_version.plugin
[0031]如:DMB_plugin_his-l.0.plugin
[0032]2、插件包文件目錄結(jié)構(gòu)
[0033]plugin
[0034]Iua存放Iua腳本
[0035]Iib存放引用的庫
[0036]LUA主程序腳本文件名稱:init.1ua
[0037]function start O//m2m調(diào)用LUA腳本,用于啟用LUA插件的入口
[0038]function close O//m2m 用于停止 LUA 腳本的運行
[0039]function realtimeComplete O//m2m通知Iua插件實時表格已下載完成
[0040]3、M2M加載與卸載LUA插件包的方式:
[0041]LUA插件包可以看作是對終端功能的增加,管理平臺下發(fā)LUA插件包給終端是按終端升級協(xié)議,
[0042]在終端升級模塊接收到升級消息時,從FTP下載文件并根據(jù)文件名規(guī)則,例如是否DMB_PLUGIN開頭來判斷是否是LUA插件包,若是則通知M2M模塊進行處理,其中,管理平臺是用于管理與控制終端的軟件系統(tǒng),管理平臺可以是終端所屬系統(tǒng),也可以是第三方系統(tǒng)。M2M處理流程如下:
[0043](I)解壓 LUA 插件包到 /root/dmb/temp/
[0044](2)按照文件名規(guī)則截取壓縮包的文件名稱,如截取DMB_plugin_his_l.0.plugin取出字符前的部份,即取出DMB_plugin_his,根據(jù)截取的字符串,到/tmp/dmb/pIugin目錄尋找是否存在以截取的字符串開頭的文件名,若是,停止結(jié)構(gòu)體的對應(yīng)的插件名線程并刪除舊的LUA插件包,若否,則把LUA插件包拷貝到/tmp/dmb/pIugin/目錄下。
[0045](3) M2M有維護結(jié)構(gòu)體數(shù)組,結(jié)構(gòu)體:
[0046]typedef struct_dmb_lua_config_item_struct{
[0047]char [256] dmb_lua_name// 插件名稱格式:dmb_lua_his_l.0
[0048]pthread_t dmb_m2m_thread;//插件線程
[0049]} dmb_lua_config_item;
[0050]終端在啟動時,開啟M2M掃描線程,M2M掃描線程問隔5秒去掃描/tmp/dmb/plugin目錄,M2M每加載LUA插件包就啟用一個新線程,并更新dmb_lua_conf ig_item ;結(jié)構(gòu)體的值。
[0051]掃描線程遍歷plugin目錄列表名并將列表名與M2M插件包結(jié)構(gòu)體的dmb_lua_name的值進行對比,對插件包進行加載和卸載使結(jié)構(gòu)體dmb_lua_name的值等于plugin目錄列表名;
[0052]例如:
[0053]a) plugin 目錄下有 dmb_lua_A_l.0 與 dmb_lua_B_l.0,結(jié)構(gòu)體數(shù)組只有 dmb_lua_A_l.0,則 M2M 加載 dmb_lua_B_l.0 插件包。
[0054]b) plugin 目錄下有 dmb_lua_A_l.0,結(jié)構(gòu)體數(shù)組有兩個兀素 dmb_lua_A_l.0, dmb_lua_B_l.0 則 M2M 卸載 dmb_lua_B_l.0 插件包
[0055](二)、LUA 開發(fā)流程
[0056]1、把終端涉及到的播放消息協(xié)議與控制消息協(xié)議分別以協(xié)議模板的方式放在LUA插件包的文件夾下;
[0057]2、在LUA插件包的init.1ua腳本入口函數(shù)中開啟監(jiān)聽端口或打開設(shè)備,并開啟一個LUA線程,一直掃描監(jiān)聽端口或設(shè)備;
[0058]3、當(dāng)監(jiān)聽端口或設(shè)備有數(shù)據(jù)傳遞時,接收數(shù)據(jù)并把接收到的數(shù)據(jù)傳遞給LUA消息解析模塊;
[0059]4、LUA消息解析模塊接收到消息時,根據(jù)協(xié)議描述判定消息的類型是播放類型還是控制類型,按事先約定的包含消息格式的含義的解析規(guī)則解析消息協(xié)議,抽取消息中的數(shù)據(jù),如播放時間、播放素材文件名稱等,然后根據(jù)消息類型尋找對應(yīng)的協(xié)議模板,再調(diào)用LUA模板引擎,把抽取的數(shù)據(jù)與對應(yīng)的模板做為參數(shù)傳入到LUA模板引擎的入口函數(shù),入口函數(shù)輸出是具體的播放消息協(xié)議或控制消息協(xié)議,此協(xié)議是XML格式;
[0060]5、調(diào)用M2M的發(fā)送播放或控制消息接口 sendplaylist,把模板引擎生成的消息協(xié)議的協(xié)議描述加載素材文件進行相應(yīng)的動作參數(shù)給sendplaylist,此時終端應(yīng)用層根據(jù)接收到的播放消息協(xié)議或控制消息協(xié)議的協(xié)議描述加載素材文件進行相應(yīng)的動作。
[0061](三)、對接的實例
[0062]下面以對接終端通過與HIS的系統(tǒng)對接實現(xiàn)排隊叫號顯示功能為例說明LUA插件包實現(xiàn)協(xié)議轉(zhuǎn)換的過程:
[0063]LUA插件包實現(xiàn)接口協(xié)議采用http+xml, LUA插件包會啟用httpServer做為服務(wù)端,HIS系統(tǒng)通過HTTP協(xié)議把數(shù)據(jù)發(fā)送到httpServer端。HIS科室叫號協(xié)議:
[0064]LUA插件包接收到HIS系統(tǒng)的排隊叫號協(xié)議時,LUA解析模塊解析消息頭,查詢XML根節(jié)點是否是〈quueu〉元素,根據(jù)雙方約定的根節(jié)點是queue時,則表示是科室排隊號播放消息協(xié)議,則LUA插件包讀取播放消息協(xié)議模板,在〈params〉尋找是否有queue,如果尋找至IJ剛表示是科室排隊叫號的模板。LUA解析模塊解析科室叫號協(xié)議,取出醫(yī)生信息、正在就診患者信息、候診患者信息,調(diào)用LUA模板引擎把播放消息協(xié)議模板與抽取的數(shù)據(jù)與模板中對應(yīng)的屬性變量名進行匹配,然后將抽取的數(shù)據(jù)填充模板中與對應(yīng)變量名相應(yīng)的位置,最后生成包含抽取的數(shù)據(jù)的播放信息協(xié)議。
[0065]二、基于以上原理及實例,下面對本發(fā)明的基于LUA的播放協(xié)議轉(zhuǎn)換方法及系統(tǒng)進行詳細闡述。
[0066]請參閱圖1,是本發(fā)明一實施方式中一種基于LUA的播放協(xié)議轉(zhuǎn)換方法的執(zhí)行流程圖。該基于LUA的播放協(xié)議轉(zhuǎn)換方法包括以下步驟:
[0067]步驟S101、調(diào)用M2M模塊啟用導(dǎo)入的LUA插件包,插件包中包含播放類模板和控制類模板,播放類模板和控制類模板是通過將播放消息協(xié)議和控制消息協(xié)議中的數(shù)據(jù)抽取出來用對應(yīng)變量名稱替換生成的。
[0068]把包含具體播放數(shù)據(jù)的播放消息協(xié)議抽象成播放模板,模板是以XML來描述的,控制類模板用于播放控制,如控制音量大小、工作時間、開關(guān)機等。播放類模板用于控制播放內(nèi)容與播放區(qū)域。比如,播放某張廣告圖片播放時間10分鐘,就把涉及播放時間都抽象成時間變量,在生成播放消息協(xié)議時把時間變量替換成具體的播放時間,即把播放消息協(xié)議中涉及到具體的播放數(shù)據(jù)都抽取出來用對應(yīng)變量名稱替換。
[0069]步驟S102、在LUA插件包中實現(xiàn)與第三方系統(tǒng)或設(shè)備的通信連接。
[0070]步驟S103、當(dāng)LUA插件包接收到第三方系統(tǒng)或設(shè)備發(fā)送的播放消息協(xié)議或控制消息協(xié)議時,根據(jù)協(xié)議描述判定消息類型是播放類型還是控制類型,按照解析規(guī)則解析播放消息協(xié)議或控制消息協(xié)議,并根據(jù)協(xié)議描述到指定的服務(wù)器下載素材文件。
[0071]解析規(guī)則是業(yè)務(wù)邏輯中要包括的數(shù)據(jù),是對接的終端與第三方系統(tǒng)或設(shè)備約定的對第三方播放消息協(xié)議或控制消息協(xié)議的解析規(guī)則,協(xié)議的結(jié)構(gòu)一般都是以XML形式來組織的,描述信息屬于協(xié)議的一部份,描述信息包括要播放的素材(文本、圖片、視頻)、播放時間、播放速度、播放方式、是否播放特效。比如在XML中描述一張圖片播放多長時間、使用什么特效,程序在解析時取出對應(yīng)的數(shù)據(jù)即可。
[0072]步驟S104、從解析出的播放信息和控制信息中抽取數(shù)據(jù),然后根據(jù)消息類型尋找對應(yīng)的協(xié)議模板,再調(diào)用LUA模板引擎把抽取的數(shù)據(jù)與對應(yīng)的模板做為參數(shù)傳入到LUA模板引擎的入口函數(shù),通過入口函數(shù)輸出轉(zhuǎn)換后的播放消息協(xié)議或控制消息協(xié)議,此協(xié)議是XML格式。
[0073]播放信息包括開始播放時間、播放結(jié)束時間、播放時長、播放素材文件的名稱、素材文件的來源(FTP下載或HTTP下載)、播放的模式(循環(huán)播放、插播)、素材文件播放的區(qū)域坐標(biāo)??刂菩畔ㄒ袅看笮 ㈤_始工作時間、開始工作結(jié)束時間、下載時間、開關(guān)機、重啟指令。抽取規(guī)則是第三方廠家與對接方終端預(yù)先協(xié)商的播放信息或控制信息中XML各個節(jié)點所表示的業(yè)務(wù)數(shù)據(jù)含義,對接方終端根據(jù)播放模板中所要求的數(shù)據(jù),從播放信息或控制信息中取得對應(yīng)的數(shù)據(jù)。
[0074]步驟S105、調(diào)用M2M模塊的發(fā)送播放或控制消息接口,把轉(zhuǎn)換后的播放消息協(xié)議控制消息協(xié)議通過發(fā)送播放或控制消息接口發(fā)送至終端。
[0075]步驟S106、終端應(yīng)用層根據(jù)接收到的轉(zhuǎn)換后的播放消息協(xié)議或控制消息協(xié)議的協(xié)議描述加載素材文件進行相應(yīng)的動作。
[0076]在本實施方式中,在LUA插件包中實現(xiàn)與第三方系統(tǒng)的通信連接具體包括步驟:
[0077]步驟S1021、在LUA插件包啟動時,調(diào)用作為HTTP或SOCKET連接器的LUA腳本,根據(jù)配置的IP端口連接至第三方系統(tǒng);
[0078]步驟S1022、每隔一預(yù)設(shè)間隔時長接收第三方系統(tǒng)發(fā)送的心跳包并對心跳包進行解析查看心跳包信息描述是否有播入任務(wù)更新消息;
[0079]步驟S1023、如果查到有任務(wù)更新消息時,終端發(fā)送查詢信息給第三方系統(tǒng),查詢信息用于查詢?nèi)蝿?wù)更新協(xié)議;
[0080]步驟S1024、接收第三方系統(tǒng)發(fā)送的播放任務(wù)更新協(xié)議,所述播放任務(wù)更新協(xié)議為播放消息協(xié)議或控制消息協(xié)議。
[0081]在本實施方式中,所述步驟S107后還包括步驟:
[0082]步驟S108、在播放完成后發(fā)送回復(fù)消息至第三方系統(tǒng)。
[0083]下面通過實施例分別說明如何實現(xiàn)終端與第三方系統(tǒng)的播放消息協(xié)議的對接和終端與第三方設(shè)備的播放消息協(xié)議的對接。
[0084]例如,第三方系統(tǒng)有約定一套自有的播放消息協(xié)議,當(dāng)終端通過HTTP或SOCKET的方式與第三方系統(tǒng)對接時,需要把第三方的播放消息協(xié)議轉(zhuǎn)換成終端的播放消息協(xié)議,轉(zhuǎn)換過程具體為:在第三方系統(tǒng)進行播放任務(wù)的編排并把編排后的任務(wù)下發(fā)給終端,通過在心跳包信息描述有播入任務(wù)更新的消息。終端每接收到心跳包的消息時,都進行心跳包解析,并查看心跳包XML是否有任務(wù)更新消息的描述;如果查到有任務(wù)更新消息描述,終端發(fā)送用于查詢?nèi)蝿?wù)更新的協(xié)議的查詢信息給第三方系統(tǒng);第三方系統(tǒng)把有關(guān)任務(wù)播放XML的描述信息通過HTTP的方式推送給終端。終端通過調(diào)用LUA協(xié)議解析腳本,把接收到任務(wù)播放的XML消息做為參數(shù)傳給LUA解析腳本,解析腳本按雙方約定的規(guī)則進行對任務(wù)播放消息進行解析,抽取播放開始時間,播放結(jié)束時間,播放時長,到指定的服務(wù)器通過HTTP下載播放素材圖片,文本,視頻。然后把抽取的數(shù)據(jù)填充到終端的任務(wù)播放消息協(xié)議模板中,由模板引擎去生具體的對應(yīng)的任務(wù)播放消息協(xié)議,然后LUA調(diào)用M2M的sendPlaylist接口,把生成的任務(wù)播放XML消息做為參數(shù)傳給sendPlaylist接口,從而達到在不用重新開發(fā)一套播放消息協(xié)議,就對實現(xiàn)對第三方系統(tǒng)的播放消息協(xié)議的轉(zhuǎn)換成終端支持的播放消息協(xié)議的效果。
[0085]例如,第三方設(shè)備通過網(wǎng)絡(luò)或串口與終端直接進行數(shù)據(jù)對接時,第三方設(shè)備需要把業(yè)務(wù)數(shù)據(jù)直接顯示在終端的屏幕上,轉(zhuǎn)換過程具體為:終端到素材庫下載素材模板;終立而在啟動的時候,由終纟而的M2M t旲塊負責(zé)啟用LUA插件包;LUA插件包啟動時,開啟串口通信或打開網(wǎng)絡(luò)連接服務(wù);LUA插件包主動通過網(wǎng)絡(luò)或串口獲取數(shù)據(jù)或第三方設(shè)備主動發(fā)送數(shù)據(jù)給LUA插件包;LUA插件包根據(jù)接收到的數(shù)據(jù)內(nèi)容分析此數(shù)據(jù)對應(yīng)要顯示的素材模板類別,取出素材模板;把獲取到的數(shù)據(jù)經(jīng)過處理后填入素材模板,生成要顯示播放的素材內(nèi)容;由LUA腳本調(diào)用M2M的播放控制接口,把素材內(nèi)容發(fā)送給終端,由終端實現(xiàn)播放內(nèi)容。
[0086]本發(fā)明還提供一種基于LUA的播放消息協(xié)議轉(zhuǎn)換系統(tǒng),該基于LUA的播放消息協(xié)議轉(zhuǎn)換系統(tǒng)包括第三方系統(tǒng)以及與第三方系統(tǒng)通信連接的至少一個終端,所述終端是基于LUA的播放消息協(xié)議轉(zhuǎn)換終端,上述LUA的播放消息協(xié)議轉(zhuǎn)換方法應(yīng)用于該系統(tǒng)中。
[0087]請參閱圖2,是本發(fā)明一實施方式中一種LUA的播放消息協(xié)議轉(zhuǎn)換系統(tǒng)的系統(tǒng)框圖。所述基于LUA的播放消息協(xié)議轉(zhuǎn)換終端包括啟用模塊、通信模塊、解析和下載模塊、協(xié)議轉(zhuǎn)換模塊、協(xié)議發(fā)送模塊、播放執(zhí)行模塊。
[0088]啟用模塊用于調(diào)用M2M模塊啟用導(dǎo)入的LUA插件包,插件包中包含播放類模板和控制類模板,播放類模板和控制類模板是通過將播放消息協(xié)議和控制消息協(xié)議中的數(shù)據(jù)抽取出來用對應(yīng)變量名稱替換生成。
[0089]通信模塊用于在LUA插件包中實現(xiàn)與第三方系統(tǒng)或設(shè)備的通信連接。
[0090]解析和下載模塊用于當(dāng)LUA插件包接收到第三方系統(tǒng)或設(shè)備發(fā)送的播放消息協(xié)議或控制消息協(xié)議時,根據(jù)協(xié)議描述判定消息類型是播放類型還是控制類型,按照解析規(guī)則解析播放消息協(xié)議或控制消息協(xié)議,并根據(jù)協(xié)議描述到指定的服務(wù)器下載素材文件。
[0091]協(xié)議轉(zhuǎn)換模塊用于從解析出的播放信息和控制信息中抽取數(shù)據(jù),然后根據(jù)消息類型尋找對應(yīng)的協(xié)議模板,再調(diào)用LUA模板引擎把抽取的數(shù)據(jù)與對應(yīng)的模板做為參數(shù)傳入到LUA模板引擎的入口函數(shù),通過入口函數(shù)輸出轉(zhuǎn)換后的播放消息協(xié)議或控制消息協(xié)議。
[0092]協(xié)議發(fā)送模塊用于調(diào)用M2M模塊的發(fā)送播放或控制消息接口,把轉(zhuǎn)換后的播放消息協(xié)議控制消息協(xié)議通過發(fā)送播放或控制消息接口發(fā)送至終端應(yīng)用層。
[0093]播放執(zhí)行模塊用于控制終端應(yīng)用層根據(jù)接收到的轉(zhuǎn)換后的播放消息協(xié)議或控制消息協(xié)議的協(xié)議描述加載素材文件進行相應(yīng)的動作。
[0094]在本實施方式中,所述播放信息包括開始播放時間、播放結(jié)束時間、播放時長、播放素材文件的名稱、素材文件的來源、播放的模式、素材文件播放的區(qū)域坐標(biāo);所述控制信息包括音量大小、開始工作時間、開始工作結(jié)束時間、下載時間、開關(guān)機、重啟指令。
[0095]在本實施方式中,所述通信模塊具體包括第一連接子模塊、第二連接子模塊、查詢子模塊以及接收子模塊。第一連接子模塊用于在LUA插件包啟動時,調(diào)用作為HTTP或SOCKET連接器的LUA腳本,根據(jù)配置的IP端口連接至第三方系統(tǒng)。第二連接子模塊用于每隔一預(yù)設(shè)間隔時長向第三方系統(tǒng)發(fā)送心跳包,并對心跳包進行解析查看心跳包信息描述是否有播入任務(wù)更新消息;查詢子模塊用于當(dāng)查詢子模塊查到有任務(wù)更新消息時,發(fā)送查詢信息給第三方系統(tǒng),查詢信息用于查詢?nèi)蝿?wù)更新協(xié)議。接收子模塊用于接收第三方系統(tǒng)發(fā)送的播放任務(wù)更新協(xié)議,所述播放任務(wù)更新協(xié)議為播放消息協(xié)議或控制消息協(xié)議。
[0096]在本實施方式中,所述的一種基于LUA的播放消息協(xié)議轉(zhuǎn)換終端還包括回復(fù)模塊,用于當(dāng)所述播放執(zhí)行模塊在播放完成后發(fā)送回復(fù)消息至第三方系統(tǒng)。
[0097]本發(fā)明的有益效果是:區(qū)別于現(xiàn)有技術(shù)中,終端在對接第三方系統(tǒng)或設(shè)備時,用C程序開發(fā)產(chǎn)生的測試不方便,bug排查過程繁瑣、在嵌入式設(shè)備實現(xiàn)對多種API協(xié)議的兼容性開發(fā)效率不高的技術(shù)缺陷,本發(fā)明提供一種基于LUA的播放協(xié)議轉(zhuǎn)換方法、系統(tǒng)、終端,使用開發(fā)的LUA插件包實現(xiàn)協(xié)議的轉(zhuǎn)換,將各類協(xié)議抽象為模板,通過對第三方設(shè)備或系統(tǒng)的協(xié)議解析將控制或播放信息填入模板得到轉(zhuǎn)換后的協(xié)議,然后終端根據(jù)轉(zhuǎn)換后的協(xié)議實現(xiàn)播放,通過插件的形式導(dǎo)入到終端,可以支持多種播放消息協(xié)議的效果。具體地,本發(fā)明的有益效果如下:
[0098]1、首先降低了技術(shù)門檻,不需要懂嵌入式上的各種開發(fā)技術(shù),只需要編寫LUA腳本,接口約定即可。
[0099]2、通過插件的形式導(dǎo)入到終端,業(yè)務(wù)邏輯層次在邏輯上是分開的,對于問題的排查,定位變得容易。通過LUA插件包的方式,從軟件的角度不會破壞應(yīng)用層的邏輯,反而是對應(yīng)用層的很好的擴展與補充,以快速的響應(yīng)市場上多種系統(tǒng)或設(shè)備的對接要求。
[0100]3、實現(xiàn)熱插拔,LUA插件包的導(dǎo)入與刪除無啟重啟終端。
[0101]4、實現(xiàn)終端的開放性,只需要告訴第三方廠家的LUA插件包的接口,可由第三方廠家實現(xiàn)開發(fā)滿足要求的功能插件包,LUA插件包所要求的M2M提供的接口,又能促進嵌入式終端底層的接口的友好性。
[0102]以上所述僅為本發(fā)明的實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運用在其他相關(guān)的【技術(shù)領(lǐng)域】,均同理包括在本發(fā)明的專利保護范圍內(nèi)。
【權(quán)利要求】
1.一種基于LUA的播放協(xié)議轉(zhuǎn)換方法,其特征在于,包括: 導(dǎo)入LUA插件包,并與第三方系統(tǒng)或設(shè)備建立通信連接,插件包中包含播放類模板和控制類模板,播放類模板和控制類模板是通過將播放消息協(xié)議和控制消息協(xié)議中的數(shù)據(jù)抽取出來用對應(yīng)變量名稱替換生成; 按照解析規(guī)則解析第三方系統(tǒng)或設(shè)備發(fā)送的播放消息協(xié)議或控制消息協(xié)議,從解析出的播放信息和控制信息中抽取數(shù)據(jù); 將抽取的數(shù)據(jù)填充到模板中對應(yīng)變量名的相應(yīng)位置,生成轉(zhuǎn)換后的播放消息協(xié)議或控制消息協(xié)議并將其發(fā)送至終端應(yīng)用層。
2.根據(jù)權(quán)利要求1所述的一種基于LUA的播放協(xié)議轉(zhuǎn)換方法,其特征在于,其具體包括: S101、調(diào)用M2M模塊啟用導(dǎo)入的LUA插件包; S102、在LUA插件包中實現(xiàn)與第三方系統(tǒng)或設(shè)備的通信連接; S103、當(dāng)LUA插件包接收到第三方系統(tǒng)或設(shè)備發(fā)送的播放消息協(xié)議或控制消息協(xié)議時,根據(jù)協(xié)議描述判定消息類型是播放類型還是控制類型,按照解析規(guī)則解析播放消息協(xié)議或控制消息協(xié)議,并根據(jù)協(xié)議描述到指定的服務(wù)器下載素材文件; S104、從解析出的播放信息和控制信息中抽取數(shù)據(jù),然后根據(jù)消息類型尋找對應(yīng)的協(xié)議模板,再調(diào)用LUA模板引擎把抽取的數(shù)據(jù)與對應(yīng)的模板做為參數(shù)傳入到LUA模板引擎的入口函數(shù),通過入口函數(shù)輸出轉(zhuǎn)換后的播放消息協(xié)議或控制消息協(xié)議; S105、調(diào)用M2M模塊的發(fā)送播放或控制消息接口,把轉(zhuǎn)換后的播放消息協(xié)議控制消息協(xié)議通過發(fā)送播放或控制消息接口發(fā)送至終端應(yīng)用層; S106、終端應(yīng)用層根據(jù)接收到的轉(zhuǎn)換后的播放消息協(xié)議或控制消息協(xié)議的協(xié)議描述加載素材文件進行相應(yīng)的動作。
3.根據(jù)權(quán)利要求2所述的一種基于LUA的播放協(xié)議轉(zhuǎn)換方法,其特征在于,在LUA插件包中實現(xiàn)與第三方系統(tǒng)的通信連接具體包括步驟: 在LUA插件包啟動時,調(diào)用作為HTTP或SOCKET連接器的LUA腳本,根據(jù)配置的IP端口連接至第三方系統(tǒng); 每隔一預(yù)設(shè)間隔時長接收第三方系統(tǒng)發(fā)送的心跳包,并對心跳包進行解析查看心跳包信息描述是否有播入任務(wù)更新消息; 當(dāng)查到有任務(wù)更新消息時,終端發(fā)送查詢信息給第三方系統(tǒng),查詢信息用于查詢?nèi)蝿?wù)更新協(xié)議; 接收第三方系統(tǒng)發(fā)送的播放任務(wù)更新協(xié)議,所述播放任務(wù)更新協(xié)議為播放消息協(xié)議或控制消息協(xié)議。
4.根據(jù)權(quán)利要求2所述的一種基于LUA的播放協(xié)議轉(zhuǎn)換方法,其特征在于,所述“終端根據(jù)轉(zhuǎn)換后的播放消息協(xié)議使用素材文件實現(xiàn)播放效果”后還包括步驟:在播放完成后發(fā)送回復(fù)消息至第三方系統(tǒng)。
5.根據(jù)權(quán)利要求2所述的一種基于LUA的播放協(xié)議轉(zhuǎn)換方法,其特征在于,所述播放信息包括開始播放時間、播放結(jié)束時間、播放時長、播放素材文件的名稱、素材文件的來源、播放的模式、素材文件播放的區(qū)域坐標(biāo);所述控制信息包括音量大小、開始工作時間、開始工作結(jié)束時間、下載時間、開關(guān)機、重啟指令。
6.一種基于LUA的播放消息協(xié)議轉(zhuǎn)換終端,包括M2M模塊,其特征在于,還包括: 啟用模塊,用于調(diào)用M2M模塊啟用導(dǎo)入的LUA插件包,插件包中包含播放類模板和控制類模板,播放類模板和控制類模板是通過將播放消息協(xié)議和控制消息協(xié)議中的數(shù)據(jù)抽取出來用對應(yīng)變量名稱替換生成; 通信模塊,用于在LUA插件包中實現(xiàn)與第三方系統(tǒng)或設(shè)備的通信連接; 解析和下載模塊,用于當(dāng)LUA插件包接收到第三方系統(tǒng)或設(shè)備發(fā)送的播放消息協(xié)議或控制消息協(xié)議時,根據(jù)協(xié)議描述判定消息類型是播放類型還是控制類型,按照解析規(guī)則解析播放消息協(xié)議或控制消息協(xié)議,并根據(jù)協(xié)議描述到指定的服務(wù)器下載素材文件; 協(xié)議轉(zhuǎn)換模塊,用于從解析出的播放信息和控制信息中抽取數(shù)據(jù),然后根據(jù)消息類型尋找對應(yīng)的協(xié)議模板,再調(diào)用LUA模板引擎把抽取的數(shù)據(jù)與對應(yīng)的模板做為參數(shù)傳入到LUA模板引擎的入口函數(shù),通過入口函數(shù)輸出轉(zhuǎn)換后的播放消息協(xié)議或控制消息協(xié)議;協(xié)議發(fā)送模塊,用于調(diào)用M2M模塊的發(fā)送播放或控制消息接口,把轉(zhuǎn)換后的播放消息協(xié)議控制消息協(xié)議通過發(fā)送播放或控制消息接口發(fā)送至終端應(yīng)用層; 播放執(zhí)行模塊,用于控制終端應(yīng)用層根據(jù)接收到的轉(zhuǎn)換后的播放消息協(xié)議或控制消息協(xié)議的協(xié)議描述加載素材文件進行相應(yīng)的動作。
7.根據(jù)權(quán)利要求6所述的一種基于LUA的播放消息協(xié)議轉(zhuǎn)換終端,其特征在于,所述通信模塊具體包括: 第一連接子模塊,用于在LUA插件包啟動時,調(diào)用作為HTTP或SOCKET連接器的LUA腳本,根據(jù)配置的IP端口連接至第三方系統(tǒng); 第二連接子模塊,用于每隔一預(yù)設(shè)間隔時長接收第三方系統(tǒng)發(fā)送的心跳包,并對心跳包進行解析查看心跳包信息描述是否有播入任務(wù)更新消息; 查詢子模塊,用于當(dāng)查詢子模塊查到有任務(wù)更新消息時,發(fā)送查詢信息給第三方系統(tǒng),查詢信息用于查詢?nèi)蝿?wù)更新協(xié)議; 接收子模塊,用于接收第三方系統(tǒng)發(fā)送的播放任務(wù)更新協(xié)議,所述播放任務(wù)更新協(xié)議為播放消息協(xié)議或控制消息協(xié)議。
8.根據(jù)權(quán)利要求6所述的一種基于LUA的播放消息協(xié)議轉(zhuǎn)換終端,其特征在于,還包括回復(fù)模塊,用于當(dāng)所述播放執(zhí)行模塊在播放完成后發(fā)送回復(fù)消息至第三方系統(tǒng)。
9.根據(jù)權(quán)利要求6所述的一種基于LUA的播放消息協(xié)議轉(zhuǎn)換終端,其特征在于,所述播放信息 包括開始播放時間、播放結(jié)束時間、播放時長、播放素材文件的名稱、素材文件的來源、播放的模式、素材文件播放的區(qū)域坐標(biāo);所述控制信息包括音量大小、開始工作時間、開始工作結(jié)束時間、下載時間、開關(guān)機、重啟指令。
10.一種基于LUA的播放消息協(xié)議轉(zhuǎn)換系統(tǒng),其特征在于,包括第三方系統(tǒng)以及與第三方系統(tǒng)通信連接的至少一個終端,所述終端是權(quán)利要求6-9任意一項所述的基于LUA的播放消息協(xié)議轉(zhuǎn)換終端,所述第三方系統(tǒng)用于發(fā)送播放消息協(xié)議或控制消息協(xié)議至所述終端。
【文檔編號】H04L29/06GK103729189SQ201310754961
【公開日】2014年4月16日 申請日期:2013年12月31日 優(yōu)先權(quán)日:2013年12月31日
【發(fā)明者】王躍宗, 游磊青, 李巖 申請人:福建星網(wǎng)視易信息系統(tǒng)有限公司