本發(fā)明涉及藍(lán)牙低能耗技術(shù)應(yīng)用領(lǐng)域,特別涉及一種基于軟件app技術(shù)的藍(lán)牙設(shè)備固件升級方法及系統(tǒng)。
背景技術(shù):
隨著低功耗藍(lán)牙ble技術(shù)的日益成熟,ble在智能設(shè)備以及智能控制中得到了廣泛地應(yīng)用。所述設(shè)備可以是支持有ble協(xié)議的智能盒子、智能藍(lán)牙音箱或者智能燈等。然而,廠家通常因業(yè)務(wù)需要會(huì)針對某款ble設(shè)備的固件進(jìn)行更新,用于修復(fù)缺陷和添加功能,因此ble設(shè)備的固件經(jīng)常需要根據(jù)實(shí)際需求升級。但是,目前由于ble設(shè)備一般不具有互聯(lián)網(wǎng)能力,用戶在為ble設(shè)備升級的時(shí),需要拆機(jī),然后使用專用升級工具燒錄固件,該方法純屬人工操作,不僅操作不方便,還會(huì)導(dǎo)致ble設(shè)備外觀受損,有時(shí)甚至拆壞ble設(shè)備。
中國發(fā)明專利申請公開號為106210102a,該專利公開了基于藍(lán)牙ble的無線升級手柄固件的方法及裝置,獲取手柄的當(dāng)前版本信息,并從固件服務(wù)器獲取最新版本,然后通過ble發(fā)送數(shù)據(jù)包。然而,申請人發(fā)現(xiàn),專利申請公開號為106210102a的方法存在以下不足之處:
1)、上述方法中ble服務(wù)并沒有使用特定的服務(wù),易與手柄的控制指令混淆;升級固件需從服務(wù)器獲取,該方法對app的網(wǎng)絡(luò)功能具有依賴性。
2)、上述方法中只是對每包數(shù)據(jù)進(jìn)行檢驗(yàn),沒有對異常處理,而ble傳輸因設(shè)備的兼容性,及每次傳輸?shù)臄?shù)據(jù)小而需要分很多數(shù)據(jù)包后,會(huì)比較容易出現(xiàn)丟包的情況,經(jīng)常app傳輸完成,但設(shè)備沒升級成功,導(dǎo)致升級成功率低。
3)、上述方法中數(shù)據(jù)傳輸與操作的連接間隔沒有區(qū)分開,考慮功耗的因素,在僅有控制指令存在的情況下,需要使用比較長的連接間隔,而固件升級時(shí),需要設(shè)置比較小的連接間隔,否則會(huì)影響升級效率。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是:提供一種基于軟件app技術(shù)的藍(lán)牙設(shè)備固件升級方法及系統(tǒng),能克服舊式三種方法的弊端,是目前藍(lán)牙設(shè)備固件升級等行業(yè)廣泛應(yīng)用的趨勢。
為解決上述技術(shù)問題,本發(fā)明提供一種基于軟件app技術(shù)的藍(lán)牙設(shè)備固件升級方法及系統(tǒng),包括智能設(shè)備、數(shù)據(jù)分析處理軟件app和藍(lán)牙設(shè)備ble。其中智能設(shè)備為手機(jī)、平板電腦等;藍(lán)牙設(shè)備ble對外進(jìn)行藍(lán)牙通訊;其中智能設(shè)備上安裝數(shù)據(jù)分析處理軟件app;
進(jìn)一步優(yōu)化,智能設(shè)備通過藍(lán)牙通信模塊間的近距離通信;來接收藍(lán)牙設(shè)備ble的通訊;
進(jìn)一步優(yōu)化,數(shù)據(jù)分析處理軟件app與藍(lán)牙設(shè)備ble建立連接后實(shí)現(xiàn)數(shù)據(jù)交換。
進(jìn)一步優(yōu)化,數(shù)據(jù)分析處理軟件app獲取藍(lán)牙設(shè)備ble設(shè)備通訊后分析確定是否具有固件無線升級功能。
數(shù)據(jù)分析處理軟件app檢測藍(lán)牙設(shè)備ble設(shè)備所具備的服務(wù),以具備先約定好的升級服務(wù)為判斷條件,含有該服務(wù),就說明該設(shè)備具有無線升級的功能;若藍(lán)牙設(shè)備ble設(shè)備不具備該服務(wù),則數(shù)據(jù)分析處理軟件app將拒絕給藍(lán)牙設(shè)備ble設(shè)備進(jìn)行固件升級。
進(jìn)一步優(yōu)化,數(shù)據(jù)分析處理軟件app設(shè)置藍(lán)牙設(shè)備ble數(shù)據(jù)傳輸?shù)倪B接間隔,
數(shù)據(jù)分析處理軟件app在連接升級服務(wù)成功后,設(shè)置升級數(shù)據(jù)包傳輸連接間隔,數(shù)據(jù)分析處理軟件app與藍(lán)牙設(shè)備ble在正??刂苹驍?shù)據(jù)交互時(shí),使用連接間隔比較長的參數(shù),這樣可以有效降低藍(lán)牙設(shè)備ble的功耗,但在升級數(shù)據(jù)包傳輸時(shí),啟用連接間隔短的數(shù)據(jù),可以提高數(shù)據(jù)傳輸速率
進(jìn)一步優(yōu)化,數(shù)據(jù)分析處理軟件app每隔20毫秒下發(fā)一包數(shù)據(jù),整個(gè)傳輸最穩(wěn),出現(xiàn)的丟包率小。若是因智能設(shè)備原因引起的數(shù)據(jù)包發(fā)不出去,采用延時(shí)再次發(fā)送的方法,如原本數(shù)據(jù)分析處理軟件app間隔20毫秒發(fā)送一包數(shù)據(jù),當(dāng)數(shù)據(jù)包發(fā)送不出去時(shí),首次延時(shí)100毫秒再次發(fā)送,若還是發(fā)不出去,再次延時(shí)300毫秒發(fā)送數(shù)據(jù),還是發(fā)不出去,則再次延時(shí)1000毫秒發(fā)送數(shù)據(jù)。在啟動(dòng)數(shù)據(jù)下發(fā)時(shí),開啟傳輸異常監(jiān)聽,用于處理異常數(shù)據(jù)的再次發(fā)送。
進(jìn)一步優(yōu)化,藍(lán)牙設(shè)備ble對每個(gè)收到的數(shù)據(jù)包進(jìn)行校驗(yàn),判斷數(shù)據(jù)的有效性和有連續(xù)性,若出現(xiàn)數(shù)據(jù)異常,如收到的數(shù)據(jù)包序號不連續(xù)或數(shù)據(jù)校驗(yàn)與數(shù)據(jù)分析處理軟件app下發(fā)的不一致,則通知數(shù)據(jù)分析處理軟件app數(shù)據(jù)異常,并攜帶異常數(shù)據(jù)包序號。
進(jìn)一步優(yōu)化,藍(lán)牙設(shè)備ble接收完所有數(shù)據(jù),即最后的數(shù)據(jù)包序號與之前發(fā)的長度相同,且所有數(shù)據(jù)檢驗(yàn)也一致,則通知數(shù)據(jù)分析處理軟件app數(shù)據(jù)接收完成,反之,通知app異常。
進(jìn)一步優(yōu)化,數(shù)據(jù)分析處理軟件app接收到藍(lán)牙設(shè)備ble通知數(shù)據(jù)接收完成后的消息,含異常消息,數(shù)據(jù)分析處理軟件app根據(jù)所接收到的消息做下一步指令。
進(jìn)一步優(yōu)化,基于軟件app技術(shù)的藍(lán)牙設(shè)備固件升級方法及系統(tǒng)的工作步驟:
a、智能設(shè)備的數(shù)據(jù)分析處理軟件app與ble設(shè)備建立藍(lán)牙設(shè)備ble連接;
b、智能設(shè)備的數(shù)據(jù)分析處理軟件app獲取藍(lán)牙設(shè)備ble是否具有固件無線升級功能;
c、智能設(shè)備的數(shù)據(jù)分析處理軟件app設(shè)置藍(lán)牙設(shè)備ble數(shù)據(jù)傳輸?shù)倪B接間隔;
d、智能設(shè)備的數(shù)據(jù)分析處理軟件app獲取藍(lán)牙設(shè)備ble當(dāng)前固件信息;
e、智能設(shè)備的數(shù)據(jù)分析處理軟件app根據(jù)當(dāng)前藍(lán)牙設(shè)備ble的固件信息選擇本地或服務(wù)器的新固件文件;
f、智能設(shè)備的數(shù)據(jù)分析處理軟件app下發(fā)新固件版本信息及文件長度;
g、智能設(shè)備的數(shù)據(jù)分析處理軟件app下發(fā)升級數(shù)據(jù)包,開啟異常監(jiān)聽;
h、藍(lán)牙設(shè)備ble檢驗(yàn)接收到的數(shù)據(jù),若有異常,通知智能設(shè)備的數(shù)據(jù)分析處理軟件app;
i、智能設(shè)備的數(shù)據(jù)分析處理軟件app對異常數(shù)據(jù)包的處理;
j、藍(lán)牙設(shè)備ble接收完所有數(shù)據(jù)數(shù)據(jù)并檢驗(yàn),結(jié)果通知智能設(shè)備的數(shù)據(jù)分析處理軟件app;
k、智能設(shè)備的數(shù)據(jù)分析處理軟件app接收數(shù)據(jù)傳輸完成通知,并根據(jù)結(jié)果下發(fā)指令;
l、藍(lán)牙設(shè)備ble接收重啟指令后重啟設(shè)備,升級完成。
采用了上述技術(shù)方案后,本發(fā)明的有益效果是:
相對于現(xiàn)有的技術(shù)方案,提供一種快捷方便的利用常用的移動(dòng)終端進(jìn)行自動(dòng)升級的方法及系統(tǒng),解決現(xiàn)有相關(guān)技術(shù)中的因設(shè)備兼容性問題導(dǎo)致升級失敗,升級過程繁瑣且耗時(shí)的技術(shù)問題,提高傳輸數(shù)據(jù)的可靠性,大大方便用戶使用。
附圖說明
圖1是基于軟件app技術(shù)的藍(lán)牙設(shè)備固件升級方法及系統(tǒng)工作模塊圖
圖2是基于軟件app技術(shù)的藍(lán)牙設(shè)備固件升級方法及系統(tǒng)工作流程圖
具體實(shí)施方式
下面結(jié)合附圖1至附圖2和具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)描述,但不作為對本發(fā)明的限定。
如附圖1至附圖2所示,一種基于軟件app技術(shù)的藍(lán)牙設(shè)備固件升級方法及系統(tǒng),包括智能設(shè)備、數(shù)據(jù)分析處理軟件app和藍(lán)牙設(shè)備ble。其中智能設(shè)備為手機(jī)、平板電腦等;藍(lán)牙設(shè)備ble對外進(jìn)行藍(lán)牙通訊;其中智能設(shè)備上安裝數(shù)據(jù)分析處理軟件app;智能設(shè)備通過藍(lán)牙通信模塊間的近距離通信;來接收藍(lán)牙設(shè)備ble的通訊;數(shù)據(jù)分析處理軟件app與藍(lán)牙設(shè)備ble建立連接后實(shí)現(xiàn)數(shù)據(jù)交換。數(shù)據(jù)分析處理軟件app獲取藍(lán)牙設(shè)備ble設(shè)備通訊后分析確定是否具有固件無線升級功能;
如圖1所示的系統(tǒng),包括智能設(shè)備、數(shù)據(jù)分析處理軟件app和藍(lán)牙設(shè)備ble,以一臺(tái)智能手機(jī)和一臺(tái)智能藍(lán)牙設(shè)備ble音箱為例。
請參閱圖2,為本發(fā)明實(shí)施例提供的一種基于app技術(shù)的ble設(shè)備固件升級方法及系統(tǒng)的實(shí)現(xiàn)流程,其主要包括以下步驟:
s101智能設(shè)備的數(shù)據(jù)分析處理軟件app搜索藍(lán)牙設(shè)備ble的ble模塊,并進(jìn)行連接;
在本發(fā)明實(shí)施例中,所述藍(lán)牙設(shè)備ble可以為智能盒子、智能藍(lán)牙音箱或者智能燈等,通過能設(shè)備的數(shù)據(jù)分析處理軟件app打開藍(lán)牙,搜索藍(lán)牙設(shè)備ble,并建立連接后,可實(shí)現(xiàn)能設(shè)備的數(shù)據(jù)分析處理軟件app與藍(lán)牙設(shè)備ble的數(shù)據(jù)交互。
s102智能設(shè)備的數(shù)據(jù)分析處理軟件app獲取藍(lán)牙設(shè)備ble是否具有固件無線升級功能;
在本發(fā)明實(shí)施例中,能設(shè)備的數(shù)據(jù)分析處理軟件app開始檢測藍(lán)牙設(shè)備ble設(shè)備所具備的服務(wù),以具備先約定好的升級服務(wù)為判斷條件,含有該服務(wù),就說明該設(shè)備具有無線升級的功能;若藍(lán)牙設(shè)備ble不具備該服務(wù),則app將拒絕給藍(lán)牙設(shè)備ble進(jìn)行固件升級。
s103智能設(shè)備的數(shù)據(jù)分析處理軟件app設(shè)置藍(lán)牙設(shè)備ble數(shù)據(jù)傳輸?shù)倪B接間隔;
在本發(fā)明實(shí)施例中,數(shù)據(jù)分析處理軟件app在連接升級服務(wù)成功后,設(shè)置升級數(shù)據(jù)包傳輸連接間隔,數(shù)據(jù)分析處理軟件app與藍(lán)牙設(shè)備ble在正常控制或數(shù)據(jù)交互時(shí),使用連接間隔比較長的參數(shù),這樣可以有效降低藍(lán)牙設(shè)備ble設(shè)備的功耗,但在升級數(shù)據(jù)包傳輸時(shí),啟用連接間隔短的數(shù)據(jù),可以提高數(shù)據(jù)傳輸速率,格式如:0x04,0xa1,0x01,(min_interval),(max_interval)。
s104智能設(shè)備的數(shù)據(jù)分析處理軟件app獲取藍(lán)牙設(shè)備ble當(dāng)前固件信息;
在本發(fā)明實(shí)施例中,數(shù)據(jù)分析處理軟件app根據(jù)約定下發(fā)讀取藍(lán)牙設(shè)備ble當(dāng)前固件信息的指令,藍(lán)牙設(shè)備ble接收到讀取固件信息的指令后,以約定的格式回復(fù)app,信息格式如:uint16ver,uint16len,uint8uid[4],其中ver表示版本,len表示數(shù)據(jù)長度,uid表示版本號信息。
s105智能設(shè)備的數(shù)據(jù)分析處理軟件app根據(jù)當(dāng)前藍(lán)牙設(shè)備ble的固件信息選擇本地或服務(wù)器的新固件文件;
在本發(fā)明實(shí)施例中,智能設(shè)備的數(shù)據(jù)分析處理軟件app根據(jù)藍(lán)牙設(shè)備ble當(dāng)前的固件信息匹配服務(wù)器或本地的新固件,若服務(wù)有新固件,則app先把固件下載到本地;app選擇新固件,同時(shí)記錄當(dāng)前的路徑,下次或給另一個(gè)臺(tái)設(shè)備升級時(shí),直接定位保存的路徑,若沒有找到相應(yīng)的固件,則定位到根目錄,此步驟特意不做版本號比較,避免設(shè)備出現(xiàn)不能回退之前版本的問題。
s106智能設(shè)備的數(shù)據(jù)分析處理軟件app下發(fā)新固件版本信息及文件長度;
在本發(fā)明實(shí)施例中,智能設(shè)備的數(shù)據(jù)分析處理軟件app按約定下發(fā)新固件版本信息及文件長度,用于ble設(shè)備做接收固件完整檢驗(yàn)。
s107智能設(shè)備的數(shù)據(jù)分析處理軟件app下發(fā)升級數(shù)據(jù)包,開啟異常監(jiān)聽;
在本發(fā)明實(shí)施例中,由于藍(lán)牙設(shè)備ble數(shù)據(jù)傳輸每包的大小受限制(一次最多20個(gè)字節(jié)),所以一個(gè)文件要分多包發(fā)送,發(fā)送數(shù)據(jù)格式:2bytes包號+16bytes內(nèi)容+2bytescrc。crc檢驗(yàn)算法如下:
u_int16crc16(u_int8*pd,u_int32len)
{
u_int32i,j;
u_int8ds;
u_int16crc=0xffff;
staticu_int16poly[2]={0,0xa001};
for(j=len;j>0;j--)
{
ds=*pd++;
for(i=0;i<8;i++)
{
crc=(crc>>1)^poly[(crc^ds)&1];
ds=ds>>1;
}
}
returncrc;
}
經(jīng)過大量的手機(jī)測試發(fā)現(xiàn),app每隔20毫秒下發(fā)一包數(shù)據(jù),整個(gè)傳輸最穩(wěn),出現(xiàn)的丟包率小。若是因智能手機(jī)原因引起的數(shù)據(jù)包發(fā)不出去,采用延時(shí)再次發(fā)送的方法,如原本app間隔20毫秒發(fā)送一包數(shù)據(jù),當(dāng)數(shù)據(jù)包發(fā)送不出去時(shí),首次延時(shí)100毫秒再次發(fā)送,若還是發(fā)不出去,再次延時(shí)300毫秒發(fā)送數(shù)據(jù),還是發(fā)不出去,則再次延時(shí)1000毫秒發(fā)送數(shù)據(jù)。在啟動(dòng)數(shù)據(jù)下發(fā)時(shí),開啟傳輸異常監(jiān)聽,用于處理異常數(shù)據(jù)的再次發(fā)送。
s108藍(lán)牙設(shè)備ble檢驗(yàn)接收到的數(shù)據(jù),若有異常,通知智能設(shè)備的數(shù)據(jù)分析處理軟件app;
在本發(fā)明實(shí)施例中,藍(lán)牙設(shè)備ble對每個(gè)收到的數(shù)據(jù)包進(jìn)行校驗(yàn),判斷數(shù)據(jù)的有效性和有連續(xù)性,若出現(xiàn)數(shù)據(jù)異常,如收到的數(shù)據(jù)包序號不連續(xù)或數(shù)據(jù)校驗(yàn)與app下發(fā)的不一致,則通知app數(shù)據(jù)異常,并攜帶異常數(shù)據(jù)包序號。
s109智能設(shè)備的數(shù)據(jù)分析處理軟件app對異常數(shù)據(jù)包的處理;
在本發(fā)明實(shí)施例中,智能設(shè)備的數(shù)據(jù)分析處理軟件app接收到藍(lán)牙設(shè)備ble通知的異常消息后,提取出異常包的序號,根據(jù)序號重新按格式組織數(shù)據(jù),并下發(fā)。
s110藍(lán)牙設(shè)備ble接收完所有數(shù)據(jù)數(shù)據(jù)并檢驗(yàn),結(jié)果通知智能設(shè)備的數(shù)據(jù)分析處理軟件app;
在本發(fā)明實(shí)施例中,藍(lán)牙設(shè)備ble接收完所有數(shù)據(jù),即最后的數(shù)據(jù)包序號與之前發(fā)的長度相同,且所有數(shù)據(jù)檢驗(yàn)也一致,則通知app數(shù)據(jù)接收完成,反之,通知app異常,按約定,整個(gè)升級結(jié)果有:0x00:成功;0x01:校驗(yàn)錯(cuò)誤;0x02:丟包;0x03:數(shù)據(jù)無效;0x04:固件無效。
s111智能設(shè)備的數(shù)據(jù)分析處理軟件app接收數(shù)據(jù)傳輸完成通知,并根據(jù)結(jié)果下發(fā)指令;
在本發(fā)明實(shí)施例中,智能設(shè)備的數(shù)據(jù)分析處理軟件app接收到藍(lán)牙設(shè)備ble通知數(shù)據(jù)接收完成后的消息,含異常消息,數(shù)據(jù)分析處理軟件app根據(jù)所接收到的消息做下一步指令,如:當(dāng)接收到數(shù)據(jù)接收成功的消息,下發(fā)設(shè)備重啟指令,若接收到數(shù)據(jù)異常的消息時(shí),則ui上提示用戶,用戶可自行判斷是否要再次操作升級。
s112藍(lán)牙設(shè)備ble接收重啟指令后重啟設(shè)備,升級完成;
在本發(fā)明實(shí)施例中,若藍(lán)牙設(shè)備ble升級完沒有通知智能設(shè)備的數(shù)據(jù)分析處理軟件app而自動(dòng)重啟,那么可能出現(xiàn)智能設(shè)備的數(shù)據(jù)分析處理軟件app不知道升級成功的消息,則會(huì)讓用戶產(chǎn)生誤解,所以,ble設(shè)備在接收到智能設(shè)備的數(shù)據(jù)分析處理軟件app下發(fā)的重啟指令,重啟設(shè)備,確保讓用戶知道升級結(jié)果。
由技術(shù)常識(shí)可知,本技術(shù)方案可以通過其它的不脫離其精神實(shí)質(zhì)或必要特征的實(shí)施方案來實(shí)現(xiàn)。因此,上述公開的實(shí)施方案,就各方面而言,都只是舉例說明,并不是僅有的。所有在本發(fā)明范圍內(nèi)或在等同于本發(fā)明的范圍內(nèi)的改變均被本發(fā)明包含。