作為當(dāng)前顯示數(shù)據(jù)并進(jìn)行顯示,如果是第二顯示方向,則將顯示數(shù)據(jù)中當(dāng)前顯示數(shù)據(jù)之后的數(shù)據(jù)作為當(dāng)前顯示數(shù)據(jù)并進(jìn)行顯示;
[0120]當(dāng)檢測到第二翻頁鍵按下時,判斷當(dāng)前顯示方向,如果是第一顯示方向,則將顯示數(shù)據(jù)中當(dāng)前顯示數(shù)據(jù)之后的數(shù)據(jù)作為當(dāng)前顯示數(shù)據(jù)并進(jìn)行顯示,如果是第二顯示方向,則將顯示數(shù)據(jù)中當(dāng)前顯示數(shù)據(jù)之前的數(shù)據(jù)作為當(dāng)前顯示數(shù)據(jù)并進(jìn)行顯示;
[0121]當(dāng)檢測到確認(rèn)鍵按下時,執(zhí)行簽名操作,向上位機(jī)返回成功響應(yīng);
[0122]如果簽名指令為一條指令,則執(zhí)行簽名操作具體為從簽名指令中獲取待簽名數(shù)據(jù),對待簽名數(shù)據(jù)進(jìn)行簽名操作,得到簽名結(jié)果,向上位機(jī)返回包含簽名結(jié)果的成功響應(yīng);
[0123]如果簽名指令包括報文解析指令和報文簽名指令,則執(zhí)行簽名操作具體為獲取保存的哈希結(jié)果,應(yīng)用預(yù)設(shè)簽名算法對哈希結(jié)果進(jìn)行簽名,得到簽名結(jié)果,向上位機(jī)返回包含簽名結(jié)果的成功響應(yīng);
[0124]進(jìn)一步的,當(dāng)檢測到確認(rèn)鍵按下時,還包括:提示是否需要執(zhí)行簽名操作,并等待接收按鍵操作,當(dāng)檢測到確認(rèn)鍵再次按下時,執(zhí)行簽名操作,向上位機(jī)返回確認(rèn)響應(yīng);
[0125]當(dāng)檢測到取消鍵按下時,向上位機(jī)返回失敗響應(yīng);
[0126]如果簽名指令為一條指令,則當(dāng)檢測到取消鍵按下時,刪除簽名指令中的待簽名數(shù)據(jù),并向上位機(jī)返回失敗響應(yīng);
[0127]如果簽名指令包括報文解析指令和報文簽名指令,則當(dāng)檢測到取消鍵按下時,將保存的哈希結(jié)果刪除,并向上位機(jī)返回失敗響應(yīng);
[0128]進(jìn)一步的,當(dāng)檢測到取消鍵按下時,刪除顯示數(shù)據(jù),顯示取消簽名信息,并向上位機(jī)返回失敗響應(yīng)。
[0129]實施例2
[0130]本發(fā)明實施例2提供了一種重力感應(yīng)智能密鑰裝置的工作方法,如圖1所示,包括:智能密鑰裝置執(zhí)行以下操作:
[0131]步驟101:智能密鑰裝置上電初始化,將初始顯示方向設(shè)置為第一顯示方向,將重力感應(yīng)裝置的信號數(shù)據(jù)設(shè)置為初始信號數(shù)據(jù);
[0132]例如,智能密鑰裝置設(shè)置重力感應(yīng)裝置的信號數(shù)據(jù)X、y、z的取值為初始信號數(shù)據(jù),即(0、10、0)。
[0133]步驟102:智能密鑰裝置獲取重力感應(yīng)模塊中的信號數(shù)據(jù),根據(jù)信號數(shù)據(jù)設(shè)置當(dāng)前顯示方向,顯示開機(jī)信息;
[0134]其中,開機(jī)信息包括logo信息等;
[0135]本實施例中,根據(jù)信號數(shù)據(jù)設(shè)置當(dāng)前顯示方向,具體為:判斷重力感應(yīng)裝置信號是否發(fā)生變化,即對重力感應(yīng)裝置信號數(shù)據(jù)與上電時記錄的初始信號數(shù)據(jù)進(jìn)行比較,判斷是否超過預(yù)設(shè)變化范圍,如果是,則重力感應(yīng)裝置信號發(fā)生變化,根據(jù)信號數(shù)據(jù)更新當(dāng)前顯示方向,否則重力感應(yīng)裝置信號未發(fā)生變化,繼續(xù)為初始顯示方向;
[0136]進(jìn)一步的,根據(jù)信號數(shù)據(jù)設(shè)置當(dāng)前顯示方向,具體包括:
[0137]步驟102-1:智能密鑰裝置從信號數(shù)據(jù)中獲取第一坐標(biāo)軸上的值和第二坐標(biāo)軸上的值;
[0138]本實施例中,顯示方向是由第一坐標(biāo)軸(X軸)上的值和第二坐標(biāo)軸(y軸)上的值決定,第三坐標(biāo)軸(z軸)上的值只決定智能密鑰裝置與水平面的傾斜程度,并不影響顯示的方向,故無需判定Z軸的取值;
[0139]步驟102-2:智能密鑰裝置判斷第一坐標(biāo)軸上的值,如果大于或等于第一預(yù)設(shè)值,則將當(dāng)前顯示方向設(shè)置為第三顯示方向,如果小于或等于第二預(yù)設(shè)值,則將當(dāng)前顯示方向設(shè)置為第二顯示方向,如果大于第二預(yù)設(shè)值且小于第一預(yù)設(shè)值,則執(zhí)行步驟102-3 ;
[0140]本實施例中,優(yōu)選的,第一預(yù)設(shè)值為2,第二預(yù)設(shè)值為-2 ;
[0141]步驟102-3:智能密鑰裝置判斷第二坐標(biāo)軸的值,如果大于或等于第一預(yù)設(shè)值,則將當(dāng)前顯示方向設(shè)置為第一顯示方向,如果小于或等于第二預(yù)設(shè)值,則將當(dāng)前顯示方向設(shè)置為第四顯示方向,如果大于第二預(yù)設(shè)值且小于第一預(yù)設(shè)值,則將當(dāng)前顯示方向設(shè)置為第二顯示方向;
[0142]其中,將當(dāng)前顯示方向設(shè)置為第一顯示方向之前,還包括:判斷當(dāng)前顯示方向是否為第一顯示方向,如果是,則顯示方向不變,否則向顯示屏發(fā)送第一預(yù)設(shè)顯示指令,將當(dāng)前顯示方向設(shè)置為第一顯示方向;
[0143]例如,智能密鑰裝置根據(jù)重力感應(yīng)模塊的信號數(shù)據(jù)判定為第一顯示方向時,向顯不屏發(fā)送第一預(yù)設(shè)顯不指令 0x2f 0x22 0x81 0x3f 0xa2 OxaO OxcO 0x10 0x00 OxbOOxaf 0xa6 ;
[0144]將當(dāng)前顯示方向設(shè)置為第二顯示方向之前,還包括:判斷當(dāng)前顯示方向是否為第二顯示方向,如果是,則顯示方向不變,否則向顯示屏發(fā)送第二預(yù)設(shè)顯示指令,將當(dāng)前顯示方向設(shè)置為第二顯示方向;
[0145]將當(dāng)前顯示方向設(shè)置為第三顯示方向之前,還包括:判斷當(dāng)前顯示方向是否為第三顯示方向,如果是,則顯示方向不變,否則向顯示屏發(fā)送第三預(yù)設(shè)顯示指令,將當(dāng)前顯示方向設(shè)置為第三顯示方向;
[0146]將當(dāng)前顯示方向設(shè)置為第四顯示方向之前,還包括:判斷當(dāng)前顯示方向是否為第四顯示方向,如果是,則顯示方向不變,否則向顯示屏發(fā)送第四預(yù)設(shè)顯示指令,將當(dāng)前顯示方向設(shè)置為第四顯示方向;
[0147]例如,參見圖2,為第一顯示方向、第二顯示方向、第三顯示方向和第四顯示方向,以智能密鑰裝置左下角為坐標(biāo)原點,以智能密鑰裝置顯示屏的長邊為X軸,寬邊為y軸,高邊為Z軸;
[0148]圖2中,2-1為第一顯示方向,其中,X軸和z軸在水平面上,取值為0,y軸的取值為10 ;
[0149]2-2為第二顯示方向,其中,y軸和z軸在水平面上,取值為0,X軸的取值為-10 ;
[0150]2-3為第三顯示方向,其中,y軸和z軸在水平面上,取值為0,x軸的取值為10 ;
[0151]2-4為第四顯示方向,其中,X軸和z軸在水平面上,取值為0,y軸的取值為-10 ;
[0152]如圖3、圖4、圖5和圖6所示,為顯示方向發(fā)生變化的臨界狀態(tài);
[0153]其中,圖3為第一顯示方向和第三顯示方向發(fā)生變化的臨界狀態(tài),其中,3-1的z軸在水平面上,取值為0,X軸的取值為2,y軸的取值6,當(dāng)X軸的取值達(dá)到2或大于2時,顯示方向由3-1變化為3-2 ;
[0154]圖4為第三顯示方向和第四顯示方向發(fā)生變化的臨界狀態(tài),其中,4-1的X軸為1,y軸的取值為_2,當(dāng)y軸的取值為_2或小于-2時,顯示方向由4-1變化為4-2 ;
[0155]圖5為第四顯示方向和第二顯示方向發(fā)生變化的臨界狀態(tài),其中,5-1的X軸的取值為_2,y軸的取值為-1,當(dāng)X軸的取值為_2或小于-2時,顯示方向由5-1變化為5_2 ;
[0156]圖6為第二顯示方向和第一顯示方向發(fā)生變化的臨界狀態(tài),其中,6-1的X軸的取值為-1,y軸的取值為2,當(dāng)y軸的取值為2或大于2時,顯示方向由6-1變化為6_2。
[0157]步驟103:智能密鑰裝置等待接收上位機(jī)發(fā)送的指令,判斷是否接收到指令,如果是,則執(zhí)行步驟104,否則返回步驟102 ;
[0158]本步驟還包括:當(dāng)智能密鑰裝置檢測到在預(yù)設(shè)時間內(nèi)未接收到指令,則進(jìn)入省電模式(包括關(guān)閉顯示屏或關(guān)機(jī)等)。
[0159]步驟104:智能密鑰裝置判斷接收到的指令的類型,如果是報文解析指令,則執(zhí)行步驟105,如果是報文簽名指令,則執(zhí)行步驟108 ;
[0160]優(yōu)選的,智能密鑰裝置判斷接收到的指令的第一、二字節(jié),如果是0x002a,則為報文解析指令,如果是0x002b,則為報文簽名指令。
[0161]步驟105:智能密鑰裝置判斷報文解析指令的參數(shù)是否正確,如果是,則執(zhí)行步驟106,否則向上位機(jī)返回錯誤響應(yīng),返回步驟103 ;
[0162]優(yōu)選的,智能密鑰裝置判斷接收到的指令的第三、四字節(jié),如果為預(yù)設(shè)值0x0010,則表示參數(shù)正確,否則參數(shù)不正確。
[0163]步驟106:智能密鑰裝置獲取報文解析指令中的報文,應(yīng)用預(yù)設(shè)哈希算法對指令中的報文進(jìn)行哈希計算,將哈希結(jié)果保存在預(yù)設(shè)存儲區(qū)中;
[0164]優(yōu)選的,哈希算法為SM3算法,除此之外,還包括MD5算法等;
[0165]例如,報文解析指令中的報文為:
[0166]< ? xml vers1n = "1.0,'encoding = "utf-8" ? >
[0167]〈SignData〉
[0168]〈Fields〉
[0169]<PayerAccountNoName =收款賬號,,:>6221286897001736〈PayerAccountNo>
[0170]<PayerAccountName name = “收款戶名:”〉李四〈PayerAccountName〉
[0171]〈TrsAmount name = “交易金額:” >100〈/TrsAmount>
[0172]〈/Fields〉
[0173]〈/SignData〉
[0174]步驟107:智能密鑰裝置對報文解析指令中的報文進(jìn)行解析,得到顯示數(shù)據(jù),將顯示數(shù)據(jù)保存在顯示緩存區(qū)中,向上位機(jī)返回成功響應(yīng),返回步驟103 ;
[0175]例如,對步驟106中的報文進(jìn)行解析后,得到的顯示數(shù)據(jù)為:
[0176]收款賬號:6221286897001736
[0177]收款戶名:李四
[0178]交易金額:100
[0179]步驟108:智能密鑰裝置判斷報文簽名指令的參數(shù)是否正確,如果是,則執(zhí)行步驟109,否則向上位機(jī)返回錯誤響應(yīng),返回步驟103 ;
[0180]步驟109:智能密鑰裝置從顯示緩存區(qū)的顯示數(shù)據(jù)中獲取當(dāng)前顯示數(shù)據(jù);
[0181]步驟110:智能密鑰裝置對當(dāng)前顯示數(shù)據(jù)進(jìn)行編碼轉(zhuǎn)換,根據(jù)轉(zhuǎn)換后的編碼獲取對應(yīng)的字模數(shù)據(jù);
[0182]步驟111:智能密鑰裝置讀取重力感應(yīng)模塊中的信號數(shù)據(jù),根據(jù)信號數(shù)據(jù)設(shè)置當(dāng)前顯示方向,根據(jù)當(dāng)前顯示方向顯示當(dāng)前顯示數(shù)據(jù)對應(yīng)的字模數(shù)據(jù),并等待按鍵確認(rèn);
[0183]本步驟還包括:當(dāng)智能密鑰裝置顯示完成后,啟動定時器,將定時器的值設(shè)為初值。
[0184]步驟112:智能密鑰裝置檢測按鍵觸發(fā),判斷是否檢測到按鍵觸發(fā),如果是,則執(zhí)行步驟114