一種讀卡器的工作方法
【專利摘要】本發(fā)明公開一種讀卡器的工作方法,涉及通信領(lǐng)域。該方法為,讀卡器上電,根據(jù)與其連接的設(shè)備的類型設(shè)置工作模式;判斷工作模式,如果是音頻模式,則等待接收音頻數(shù)據(jù),將接收到的音頻數(shù)據(jù)轉(zhuǎn)換成數(shù)字信號,將數(shù)字信號組成數(shù)據(jù)包,對數(shù)據(jù)包進行解析得到解析結(jié)果,根據(jù)所述解析結(jié)果判斷指令類型,根據(jù)指令類型執(zhí)行相應(yīng)操作,將得到的操作結(jié)果轉(zhuǎn)換成音頻數(shù)據(jù)包,將音頻數(shù)據(jù)包發(fā)給與其連接的設(shè)備;如果是USB模式,則等待接收USB數(shù)據(jù),判斷接收到的USB數(shù)據(jù)的指令類型,根據(jù)指令類型執(zhí)行相應(yīng)操作,并將操作結(jié)果返回與其連接的設(shè)備。
【專利說明】一種讀卡器的工作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,特別涉及一種讀卡器的工作方法。
【背景技術(shù)】
[0002]目前,智能手機、平板電腦等通信設(shè)備比較流行,這些通信設(shè)備中的大部分都沒有USB主接口,或者具備的USB接口規(guī)格不統(tǒng)一,限制了讀卡器與通信設(shè)備進行數(shù)據(jù)通信。
【發(fā)明內(nèi)容】
[0003]為解決現(xiàn)有技術(shù)的缺陷,本發(fā)明提供一種讀卡器的工作方法,包括,
[0004]步驟S1:讀卡器上電,進行初始化,根據(jù)與其連接的設(shè)備的類型設(shè)置工作模式;
[0005]步驟S2:判斷所述工作模式,如果是音頻模式,則等待接收音頻數(shù)據(jù),當(dāng)接收到音頻數(shù)據(jù)時,執(zhí)行步驟S3 ;如果是USB模式,則等待接收USB數(shù)據(jù),當(dāng)接收到USB數(shù)據(jù)時,執(zhí)行步驟S5 ;
[0006]步驟S3:將所述音頻數(shù)據(jù)轉(zhuǎn)換成數(shù)字信號,將所述數(shù)字信號組成數(shù)據(jù)包,對所述數(shù)據(jù)包進行解析得到解析結(jié)果,根據(jù)所述解析結(jié)果判斷指令類型,如果是操作卡片指令,則將所述操作卡片指令發(fā)送給卡片,等待接收卡片返回的操作結(jié)果,執(zhí)行步驟S4;如果是其他指令,則執(zhí)行相應(yīng)操作得到操作結(jié)果,執(zhí)行步驟S4 ;
[0007]步驟S4:將所述操作結(jié)果轉(zhuǎn)換為音頻數(shù)據(jù)包,將所述音頻數(shù)據(jù)包發(fā)送給與其連接的設(shè)備,返回步驟S2;
[0008]步驟S5:判斷所述接收到的USB數(shù)據(jù)的指令類型,如果是操作卡片指令,則將所述操作卡片指令發(fā)送給卡片,等待接收卡片返回的操作結(jié)果,將所述操作結(jié)果發(fā)送給與其連接的設(shè)備,返回步驟S2 ;如果是其他指令,則執(zhí)行相應(yīng)操作,并將得到的操作結(jié)果返回給與其連接的設(shè)備,返回步驟S2。
[0009]所述步驟SI中,所述根據(jù)與其連接的設(shè)備的類型設(shè)置工作模式,具體為:
[0010]判斷是否存在通過USB模塊與讀卡器連接的設(shè)備,是則將所述工作模式設(shè)置為USB模式;否則將所述工作模式設(shè)置為音頻模式;
[0011]或者,
[0012]步驟al:判斷是否存在通過音頻模塊與讀卡器連接的設(shè)備,是則將所述工作模式設(shè)置為音頻模式;否則執(zhí)行步驟a2 ;
[0013]步驟a2:判斷是否存在通過USB模塊與讀卡器連接的設(shè)備,是則將所述工作模式設(shè)置為USB模式;否則返回步驟al ;
[0014]或者,
[0015]步驟bl:判斷是否存在通過USB模塊與讀卡器連接的設(shè)備,是則將所述工作模式設(shè)置為USB模式;否則執(zhí)行步驟b2 ;
[0016]步驟b2:判斷是否存在通過音頻模塊與讀卡器連接的設(shè)備,是則將所述工作模式設(shè)置為音頻模式;否則返回步驟bl。[0017]所述步驟S5中,返回步驟S2還包括,
[0018]步驟Fl:判斷是否通過USB模塊與電源建立連接,是則執(zhí)行步驟F2 ;否則返回步驟S2 ;
[0019]步驟F2:判斷電池的電量是否達到額定值,是則提示過充電,返回步驟S2 ;否則返回步驟S2。
[0020]所述步驟S2中,所述等待接收音頻數(shù)據(jù),具體為:判斷預(yù)設(shè)時間內(nèi)是否通過音頻模塊接收到音頻數(shù)據(jù),是則執(zhí)行步驟S3 ;否則返回步驟S2 ;
[0021]所述等待接收USB數(shù)據(jù),具體為:判斷預(yù)設(shè)時間內(nèi)是否通過USB模塊接收到USB數(shù)據(jù),是則執(zhí)行步驟S5 ;否則判斷預(yù)設(shè)時間內(nèi)是否通過音頻模塊接收到音頻數(shù)據(jù)。
[0022]所述步驟SI中,所述進行初始化還包括:將USB數(shù)據(jù)傳輸標識復(fù)位;
[0023]所述根據(jù)與其連接的設(shè)備的類型設(shè)置工作模式之后,還包括:根據(jù)所述工作模式打開相應(yīng)的數(shù)據(jù)通訊中斷,所述數(shù)據(jù)通訊中斷包括,USB數(shù)據(jù)通訊中斷和音頻數(shù)據(jù)通訊中斷;當(dāng)發(fā)生數(shù)據(jù)通訊中斷時,執(zhí)行步驟S2 ;
[0024]所述步驟S2中,所述等待接收音頻數(shù)據(jù)之前還包括,關(guān)閉USB數(shù)據(jù)通訊中斷;
[0025]所述步驟S4中,所述返回步驟S2之前,還包括:打開USB數(shù)據(jù)通訊中斷;
[0026]所述等待接收USB數(shù)據(jù)之前還包括,關(guān)閉音頻數(shù)據(jù)通訊中斷,判斷所述USB數(shù)據(jù)傳輸標識是否置位,是則執(zhí)行步驟S5 ;否則使能USB模塊連接,進行USB數(shù)據(jù)枚舉操作,判斷USB枚舉是否完成,是則將所述USB數(shù)據(jù)傳輸標識置位,執(zhí)行步驟S5 ;否則等待數(shù)據(jù)通訊中斷,返回步驟S2;
[0027]所述步驟S5中,所述返回步驟S2之前,還包括:打開音頻數(shù)據(jù)通訊中斷。
[0028]所述步驟S5中,所述打開音頻數(shù)據(jù)通訊中斷,具體為:判斷是否存在通過音頻模塊與讀卡器連接的設(shè)備,是則打開音頻數(shù)據(jù)通訊中斷;否則返回步驟S2。
[0029]所述步驟S5中,所述打開音頻數(shù)據(jù)通訊中斷之后,還包括:判斷是否存在通過USB模塊與讀卡器連接的設(shè)備,是則返回步驟S2 ;否則關(guān)閉USB數(shù)據(jù)通訊中斷,將所述USB數(shù)據(jù)傳輸標識復(fù)位,讀卡器根據(jù)與其連接的設(shè)備的類型設(shè)置工作模式,執(zhí)行步驟S2。
[0030]所述步驟S2中,如果所述工作模式是音頻模式時,還包括:對音頻模塊進行初始化;
[0031 ] 所述對音頻模塊進行初始化具體包括:
[0032]打開低功耗定時中斷,判斷是否接收到音頻數(shù)據(jù),是則接收所述音頻數(shù)據(jù),將低功耗定時標識復(fù)位,關(guān)閉低功耗定時中斷,將所述音頻數(shù)據(jù)發(fā)送給讀卡器,打開低功耗定時中斷;否則,將所述低功耗定時標識置位;
[0033]從打開低功耗定時中斷開始計時,每隔預(yù)設(shè)時間,進入一次低功耗定時中斷,進入低功耗定時中斷操作具體包括:判斷低功耗定時標識是否置位,是則進入低功耗模式;否則退出低功耗定時中斷。
[0034]所述步驟S3中,所述將所述音頻數(shù)據(jù)轉(zhuǎn)換成數(shù)字信號,具體為:
[0035]所述讀卡器對所述音頻數(shù)據(jù)進行濾波處理,得到第一處理數(shù)據(jù),對所述第一處理數(shù)據(jù)進行隔直處理,得到所述第一處理數(shù)據(jù)中的交流成分;從所述交流成分中獲取第二處理數(shù)據(jù),將所述第二處理數(shù)據(jù)進行轉(zhuǎn)換,得到轉(zhuǎn)換后的數(shù)據(jù),并對所述轉(zhuǎn)換后的數(shù)據(jù)進行濾波處理,得到數(shù)字信號。[0036]所述步驟S3中,所述將所述數(shù)字信號組成數(shù)據(jù)包之后,所述對所述數(shù)據(jù)包進行解析之前還包括:判斷所述數(shù)據(jù)包是否合法,是則對所述數(shù)據(jù)包進行解析;否則等待接收音頻數(shù)據(jù),當(dāng)接收到音頻數(shù)據(jù)時,返回步驟S3。
[0037]所述判斷所述數(shù)據(jù)包是否合法,具體為,
[0038]Cl:從所述數(shù)據(jù)包的第一字節(jié)開始獲取四個字節(jié)長度的數(shù)據(jù),將其作為幀頭,判斷所述幀頭是否為第一預(yù)設(shè)值,是則執(zhí)行c2 ;否則所述數(shù)據(jù)包不合法;
[0039]c2:獲取所述數(shù)據(jù)包中第七字節(jié)數(shù)據(jù),將其作為參數(shù)標識,判斷所述參數(shù)標識是否合法,是則執(zhí)行c3 ;否則所述數(shù)據(jù)包不合法;
[0040]c3:從所述數(shù)據(jù)包的第八字節(jié)開始獲取兩個字節(jié)長度的數(shù)據(jù),將其作為數(shù)據(jù)長度值,執(zhí)行c4 ;
[0041]c4:從第十字節(jié)開始獲取長度等于所述數(shù)據(jù)長度值的數(shù)據(jù),將其作為數(shù)據(jù)域,獲取所述數(shù)據(jù)域之后的一個字節(jié)數(shù)據(jù),將其作為校驗字,執(zhí)行c5 ;
[0042]c5:采用預(yù)設(shè)算法對所述數(shù)據(jù)域進行計算,將得到的計算結(jié)果與所述校驗字進行比較,如果相同,則表示所述數(shù)據(jù)包合法;如果不相同,則所述數(shù)據(jù)包不合法。
[0043]所述C2中所述判斷參數(shù)標識是否合法,具體為:判斷所述參數(shù)標識是否為第二預(yù)設(shè)值或第三預(yù)設(shè)值,是則所述參數(shù)標識合法,否則所述參數(shù)標識不合法。
[0044]所述數(shù)據(jù)包合法時還包括,判斷所述參數(shù)標識,如果是第二預(yù)設(shè)值,則對所述數(shù)據(jù)包進行解析;如果是第三預(yù)設(shè)值,則等待接收預(yù)設(shè)長度的數(shù)據(jù),將其添加到所述數(shù)據(jù)包中,對當(dāng)前數(shù)據(jù)包進行解析。
[0045]所述步驟S4中,所述將所述操作結(jié)果轉(zhuǎn)換為音頻數(shù)據(jù)包,具體為,
[0046]將所述操作結(jié)果的數(shù)字信號的幅值電壓進行壓縮,再通過緩慢充放電過程,將所述操作結(jié)果的數(shù)字信號轉(zhuǎn)換為類似正弦波的模擬信號,再將所述模擬信號轉(zhuǎn)為音頻數(shù)據(jù)包。
[0047]所述步驟SI中,初始化還包括,將卡槽狀態(tài)標識置為無卡標識;當(dāng)卡到位引腳為高電平時,將卡槽狀態(tài)標識置為有卡標識,當(dāng)卡到位引腳為低電平時,將卡槽狀態(tài)標識置為無卡標識。
[0048]所述步驟S3中,所述其他指令包括:查詢卡槽狀態(tài)指令,上電指令,下電指令;
[0049]所述步驟S3中,所述根據(jù)所述解析結(jié)果判斷指令類型,如果是查詢卡槽狀態(tài)指令時,則根據(jù)卡槽狀態(tài)標識查詢卡槽狀態(tài),并設(shè)置卡槽狀態(tài)數(shù)據(jù),將卡槽狀態(tài)數(shù)據(jù)作為操作結(jié)果,執(zhí)彳了步驟S4 ;
[0050]如果是上電指令時,則根據(jù)卡槽狀態(tài)標識判斷卡槽中是否有卡片,是則對卡槽上電,并讀取卡槽上電響應(yīng),將卡槽上電響應(yīng)作為操作結(jié)果,執(zhí)行步驟S4;否則生成卡槽中無卡響應(yīng),將卡槽中無卡響應(yīng)作為操作結(jié)果,執(zhí)行步驟S4 ;
[0051]如果是下電指令時,則對卡槽下電,并讀取卡槽下電響應(yīng),將卡槽下電響應(yīng)作為操作結(jié)果,執(zhí)行步驟S4。
[0052]所述步驟S5中,所述其他指令包括:查詢卡槽狀態(tài)指令,上電指令,下電指令;
[0053]所述步驟S5中,所述根據(jù)所述解析結(jié)果判斷指令類型,如果是查詢卡槽狀態(tài)指令,則根據(jù)卡槽狀態(tài)標識查詢卡槽狀態(tài),并設(shè)置卡槽狀態(tài)數(shù)據(jù),并將所述卡槽狀態(tài)數(shù)據(jù)發(fā)送給與其連接的設(shè)備,返回步驟S2 ;[0054]如果是上電指令,則根據(jù)卡槽狀態(tài)標識判斷卡槽中是否有卡片,是則對卡槽上電,并讀取卡槽上電響應(yīng),將所述卡槽上電響應(yīng)發(fā)送給與其連接的設(shè)備,返回步驟S2;否則生成卡槽中無卡響應(yīng),并將所述卡槽中無卡響應(yīng)發(fā)送給與其連接的設(shè)備,返回步驟S2 ;
[0055]如果是下電指令,則對卡槽下電,并讀取卡槽下電響應(yīng),并將所述卡槽下電響應(yīng)發(fā)送給與其連接的設(shè)備,返回步驟S2。
[0056]一種讀卡器的工作方法,包括,
[0057]步驟Wl:讀卡器上電,進行初始化;
[0058]步驟W2:等待接收數(shù)據(jù);
[0059]步驟W3:當(dāng)通過USB通道接收到USB數(shù)據(jù)時,將工作模式置為USB模式,執(zhí)行步驟W4 ;當(dāng)通過音頻通道接收到音頻數(shù)據(jù)時,將工作模式置為音頻模式,執(zhí)行步驟W5 ;
[0060]步驟W4:判斷所述接收到的USB數(shù)據(jù)的指令類型,如果是操作卡片指令,則將所述操作卡片指令發(fā)送給卡片,等待接收卡片返回的操作結(jié)果,執(zhí)行步驟W6;如果是其他指令,則執(zhí)行相應(yīng)操作得到操作結(jié)果,執(zhí)行步驟W6 ;
[0061]步驟W5:將所述音頻數(shù)據(jù)轉(zhuǎn)換成數(shù)字信號,將所述數(shù)字信號組成數(shù)據(jù)包,對所述數(shù)據(jù)包進行解析得到解析結(jié)果,根據(jù)所述解析結(jié)果判斷指令類型,如果是操作卡片指令,則將所述操作卡片指令發(fā)送給卡片,等待接收卡片返回的操作結(jié)果,執(zhí)行步驟W6;如果是其他指令,則執(zhí)行相應(yīng)操作得到操作結(jié)果,執(zhí)行步驟W6 ;
[0062]步驟W6:判斷所述工作模式,如果是USB模式,則將所述操作結(jié)果發(fā)送給與其連接的設(shè)備,返回步驟W2 ;如果是音頻模式,則將所述操作結(jié)果轉(zhuǎn)換為音頻數(shù)據(jù)包,將所述音頻數(shù)據(jù)包發(fā)送給與其連接的設(shè)備,返回步驟W2。
[0063]所述步驟W6中,返回步驟W2之前還包括:
[0064]步驟Gl:判斷USB模塊是否與電源建立連接,是則執(zhí)行步驟G2 ;否則返回步驟W2 ;
[0065]步驟G2:判斷電池的電量是否達到額定值,是則執(zhí)行步驟G3 ;否則返回步驟W2 ;
[0066]步驟G3:提示過充電,返回步驟W2。
[0067]所述步驟W3中,當(dāng)通過USB通道接收到USB數(shù)據(jù)之后,所述將工作模式置為USB模式之前還包括:關(guān)閉音頻數(shù)據(jù)通訊中斷;
[0068]所述步驟W6中,所述工作模式為USB模式時,所述將所述操作結(jié)果通過USB通道發(fā)送給與其連接的設(shè)備之后,返回步驟W2之前,還包括,打開音頻數(shù)據(jù)通訊中斷。
[0069]所述步驟W3中,所述當(dāng)通過音頻通道接收到音頻數(shù)據(jù)之后,所述將工作模式置為音頻模式之前,還包括:關(guān)閉USB數(shù)據(jù)通訊中斷;
[0070]所述步驟W6中,所述工作模式為音頻模式時,將所述操作結(jié)果通過音頻通道發(fā)送給與其連接的設(shè)備之后,返回步驟W2之前,還包括,打開USB數(shù)據(jù)通訊中斷。
[0071]所述步驟W2具體為:判斷是否存在通過USB模塊與其連接的設(shè)備建立連接,是則等待接收USB數(shù)據(jù),執(zhí)行步驟W3 ;否則判斷預(yù)設(shè)時間內(nèi)是否收到音頻數(shù)據(jù),若預(yù)設(shè)時間內(nèi)接收到音頻數(shù)據(jù),則執(zhí)行步驟W3 ;若預(yù)設(shè)時間內(nèi)未接收到音頻數(shù)據(jù),則進入低功耗模式;
[0072]所述步驟W3中,所述當(dāng)通過音頻通道接收到音頻數(shù)據(jù)時,將工作模式置為音頻模式,執(zhí)行步驟W5,具體為:當(dāng)通過音頻通道接收到音頻數(shù)據(jù)時,判斷是否為低功耗模式,是則退出低功耗模式,執(zhí)行步驟W5 ;否則執(zhí)行步驟W5。
[0073]所述步驟W5中,所述將所述音頻數(shù)據(jù)轉(zhuǎn)換成數(shù)字信號,具體為,[0074]所述讀卡器對所述音頻數(shù)據(jù)進行濾波處理,得到第一處理數(shù)據(jù),對所述第一處理數(shù)據(jù)進行隔直處理,得到所述第一處理數(shù)據(jù)中的交流成分;從所述交流成分中獲取第二處理數(shù)據(jù),將所述第二處理數(shù)據(jù)進行轉(zhuǎn)換,得到轉(zhuǎn)換后的數(shù)據(jù),并對所述轉(zhuǎn)換后的數(shù)據(jù)進行濾波處理,得到數(shù)字信號。
[0075]所述步驟W5中,所述將所述數(shù)字信號組成數(shù)據(jù)包之后,所述對所述數(shù)據(jù)包進行解析之前還包括,判斷所述數(shù)據(jù)包是否合法;
[0076]所述判斷所述數(shù)據(jù)包是否合法,具體為,
[0077]L1:從所述數(shù)據(jù)包的第一字節(jié)開始獲取四個字節(jié)長度的數(shù)據(jù),將其作為幀頭,判斷所述幀頭是否為第一預(yù)設(shè)值,是則執(zhí)行L2 ;否則所述數(shù)據(jù)包不合法;
[0078]L2:獲取所述數(shù)據(jù)包中第七字節(jié)數(shù)據(jù),將其作為參數(shù)標識,判斷所述參數(shù)標識是否合法,是則執(zhí)行L3 ;否則所述數(shù)據(jù)包不合法;
[0079]L3:從所述數(shù)據(jù)包的第八字節(jié)開始獲取兩個字節(jié)長度的數(shù)據(jù),將其作為數(shù)據(jù)長度值,執(zhí)行L4 ;
[0080]L4:從第十字節(jié)開始獲取長度等于所述數(shù)據(jù)長度值的數(shù)據(jù),將其作為數(shù)據(jù)域,獲取所述數(shù)據(jù)域之后的一個字節(jié)數(shù)據(jù),將其作為校驗字,執(zhí)行L5 ;
[0081]L5:采用預(yù)設(shè)算法對所述數(shù)據(jù)域進行計算,將得到的計算結(jié)果與所述校驗字進行比較,如果相同,則表示所述數(shù)據(jù)包合法;如果不相同,則所述數(shù)據(jù)包不合法。
[0082]所述判斷參數(shù)標識是否合法,具體為,如果所述參數(shù)標識為第二預(yù)設(shè)值或第三預(yù)設(shè)值,則表示所述參數(shù)標識合法,否則所述參數(shù)標識不合法。
[0083]所述數(shù)據(jù)包合法時還包括,判斷所述參數(shù)標識,如果是第二預(yù)設(shè)值,則對所述數(shù)據(jù)包進行解析;如果是第三預(yù)設(shè)值,則等待接收預(yù)設(shè)長度的數(shù)據(jù),將其追加到所述數(shù)據(jù)包中,對所述數(shù)據(jù)包進行解析。
[0084]所述步驟W6中,所述將所述操作結(jié)果轉(zhuǎn)換為音頻數(shù)據(jù)包,具體為,
[0085]將所述操作結(jié)果的數(shù)字信號的幅值電壓進行壓縮,再通過緩慢充放電過程,將所述操作結(jié)果的數(shù)字信號轉(zhuǎn)換為類似正弦波的模擬信號,再將所述模擬信號轉(zhuǎn)為音頻數(shù)據(jù)包。
[0086]所述步驟Wl中,所述初始化包括,將卡槽狀態(tài)標識置為無卡標識;當(dāng)卡到位引腳為高電平時,將卡槽狀態(tài)標識置為有卡標識,當(dāng)卡到位引腳為低電平時,將卡槽狀態(tài)標識置為無卡標識。
[0087]所述步驟W4中,所述其他指令包括:查詢卡槽狀態(tài)指令,上電指令,下電指令;
[0088]所述步驟W4中,所述判斷所述接收到的USB數(shù)據(jù)的指令類型,如果是查詢卡槽狀態(tài)指令時,則根據(jù)卡槽狀態(tài)標識查詢卡槽狀態(tài),并設(shè)置卡槽狀態(tài)數(shù)據(jù),并將所述卡槽狀態(tài)數(shù)據(jù)作為操作結(jié)果,執(zhí)行步驟W6;
[0089]如果是上電指令時,則根據(jù)卡槽狀態(tài)標識判斷卡槽中是否有卡片,是則對卡槽上電,并讀取卡槽上電響應(yīng),將所述卡槽上電響應(yīng)作為操作結(jié)果,執(zhí)行步驟W6 ;否則生成卡槽中無卡響應(yīng),并將所述卡槽中無卡響應(yīng)作為操作結(jié)果,執(zhí)行步驟W6 ;
[0090]如果是下電指令時,則對卡槽下電,并讀取卡槽下電響應(yīng),并將所述卡槽下電響應(yīng)作為操作結(jié)果,執(zhí)行步驟W6。
[0091]所述步驟W5中,所述其他指令包括:查詢卡槽狀態(tài)指令,上電指令,下電指令;[0092]所述根據(jù)所述解析結(jié)果判斷指令類型,如果是查詢卡槽狀態(tài)指令時,則根據(jù)卡槽狀態(tài)標識查詢卡槽狀態(tài),并設(shè)置卡槽狀態(tài)數(shù)據(jù),將所述卡槽狀態(tài)數(shù)據(jù)作為操作結(jié)果,執(zhí)行步驟W6 ;
[0093]如果是上電指令時,則根據(jù)卡槽狀態(tài)標識判斷卡槽中是否有卡片,是則對卡槽上電,并讀取卡槽上電響應(yīng),將卡槽上電響應(yīng)作為操作結(jié)果,執(zhí)行步驟W6 ;否則生成卡槽中無卡響應(yīng),將卡槽中無卡響應(yīng)作為操作結(jié)果,執(zhí)行步驟W6 ;
[0094]如果是下電指令時,則對卡槽下電,并讀取卡槽下電響應(yīng),將卡槽下電響應(yīng)作為操作結(jié)果,執(zhí)行步驟W6。
[0095]本發(fā)明的有益效果為,讀卡器通過音頻模塊或USB模塊與設(shè)備進行數(shù)據(jù)通信,從而不再依賴現(xiàn)有讀卡器中的USB模塊進行數(shù)據(jù)通信,兼容性比較好,提高了用戶體驗。
【專利附圖】
【附圖說明】
[0096]圖1為實施例1提供的一種讀卡器的工作方法流程圖;
[0097]圖2為實施例1提供的一種插卡中斷處理的方法流程圖;
[0098]圖3為實施例1提供的一種拔卡中斷處理的方法流程圖;
[0099]圖4為實施例1提供的一種音頻模塊初始化的工作方法流程圖;
[0100]圖5為實施例1提供的一種低功耗定時中斷的工作方法流程圖;
[0101]圖6為實施例2提供的一種讀卡器的工作方法流程圖;
[0102]圖7為實施例3提供的一種讀卡器的工作方法流程圖;
[0103]圖8為實施例4提供的一種處理音頻數(shù)據(jù)的方法流程圖;
[0104]圖9為實施例4中步驟407提供的一種判斷數(shù)據(jù)包是否合法的方法流程圖;
[0105]圖10為實施例5提供的一種處理USB數(shù)據(jù)的方法流程圖。
【具體實施方式】
[0106]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0107]實施例1
[0108]本實施例1提供了一種讀卡器的工作方法,如圖1所示,具體操作包括:
[0109]步驟101:讀卡器上電,進行系統(tǒng)初始化;
[0110]本實施例中,讀卡器進行系統(tǒng)初始化具體為,將USB通道連接標識復(fù)位,將卡到位引腳初始化為低電平,將卡槽狀態(tài)標識初始化為無卡標識。讀卡器進行系統(tǒng)初始化之后還包括,打開中斷,中斷包括插卡中斷,拔卡中斷。
[0111]當(dāng)讀卡器的卡到位引腳為高電平時,則進入插卡中斷操作,如圖2所示,具體包括,
[0112]步驟al:關(guān)閉中斷,清除插卡中斷標識,設(shè)置卡槽狀態(tài)標識為有卡標識;
[0113]優(yōu)選的,有卡標識為0X00 ;
[0114]步驟a2:判斷USB通道連接標識是否置位,是則執(zhí)行步驟a3 ;否則執(zhí)行步驟a4 ;[0115]本實施例中,USB通道連接標識用于標記讀卡器是否通過USB模塊與USB設(shè)備連接;當(dāng)讀卡器通過USB模塊與USB設(shè)備連接時,讀卡器將USB通道連接標識置位,USB模塊給讀卡器供電,同時對電池充電;
[0116]當(dāng)讀卡器的USB模塊與USB設(shè)備斷開連接時,讀卡器將USB通道連接標識復(fù)位,USB模塊停止給讀卡器供電;
[0117]步驟a3:向INT端點寫入插卡響應(yīng),執(zhí)行步驟a4 ;
[0118]本實施例中,插卡響應(yīng)為5003 ;
[0119]步驟a4:判斷休眠標識是否置位,是則執(zhí)行步驟a5 ;否則執(zhí)行步驟a6 ;
[0120]步驟a5:將休眠標識復(fù)位,MCU被喚醒,執(zhí)行步驟a6 ;
[0121]步驟a6:打開中斷,退出插卡中斷操作;
[0122]當(dāng)讀卡器的卡到位引腳為低電平時,進入拔卡中斷操作,如圖3所示,具體包括,
[0123]步驟bl:關(guān)閉中斷,清除拔卡中斷標識,設(shè)置卡槽狀態(tài)標識為無卡標識;
[0124]優(yōu)選的,無卡標識為0X02 ;
[0125]步驟b2:判斷USB通道連接標識是否置位,是則執(zhí)行步驟b3 ;否則執(zhí)行步驟b4 ;
[0126]步驟b3:向INT端點寫入拔卡響應(yīng),執(zhí)行步驟b4 ;
[0127]本實施例中,拔卡響應(yīng)為5002 ;
[0128]步驟b4:將休眠標識置位,MCU休眠,打開中斷,退出拔卡中斷;
[0129]步驟102:根據(jù)IO管腳電平狀態(tài)設(shè)置工作模式;
[0130]本實施例中,根據(jù)IO管腳的電平狀態(tài)設(shè)置工作模式,如果IO管腳為低電平,則將工作模式設(shè)置為音頻模式;如果IO管腳為高電平,則將工作模式設(shè)置為USB模式;
[0131]其中,當(dāng)讀卡器通過USB模塊與USB設(shè)備建立連接時,IO管腳為高電平;當(dāng)讀卡器未通過USB模塊與USB設(shè)備建立連接時,IO管腳為低電平。
[0132]當(dāng)IO管腳為低電平時,電池對音頻模塊供電;當(dāng)IO管腳為高電平時,電池停止對音頻模塊供電。
[0133]步驟103:判斷工作模式,如果是音頻模式,則執(zhí)行步驟104 ;如果是USB模式,則執(zhí)行步驟108 ;
[0134]步驟104:對音頻模塊初始化,打開音頻定時器,執(zhí)行步驟105 ;
[0135]本實施例中,音頻模塊初始化時,清除音頻定時標志位;
[0136]音頻模塊初始化時還包括以下操作,如圖4所示,具體為:
[0137]步驟Kl:打開低功耗定時中斷,等待接收音頻數(shù)據(jù);
[0138]優(yōu)選的,每IOs進入一次低功耗定時中斷。
[0139]步驟K2:判斷是否接收到音頻數(shù)據(jù),是則執(zhí)行步驟K3 ;否則執(zhí)行步驟K4 ;
[0140]步驟K3:通過音頻模塊接收音頻數(shù)據(jù),將低功耗定時標識復(fù)位,關(guān)閉低功耗定時中斷,將音頻數(shù)據(jù)發(fā)送給讀卡器,打開低功耗定時中斷,結(jié)束本流程;
[0141]步驟K4:將低功耗定時標識置位,結(jié)束本流程;
[0142]本實施例中,達到IOs時進入一次低功耗定時中斷,將低功耗定時標識置位。
[0143]當(dāng)進入低功耗定時中斷時,如圖5所示,執(zhí)行以下操作,
[0144]步驟Ml:進入低功耗定時中斷;
[0145]步驟M2:判斷低功耗定時標識是否置位,是則執(zhí)行步驟M3 ;否則退出低功耗定時中斷;
[0146]步驟M3:進入低功耗模式。
[0147]本實施例中,當(dāng)音頻模塊接收到音頻數(shù)據(jù)時,退出低功耗模式。
[0148]步驟104還包括:判斷工作電壓是否低于預(yù)設(shè)值,是則提示工作電壓低,預(yù)設(shè)時間后停止給讀卡器供電;否則執(zhí)行步驟105 ;
[0149]其中,可以通過屏幕顯示和/或變換指示燈顏色和/或蜂鳴和/或語音播報的方式提示工作電壓低;優(yōu)選的預(yù)設(shè)時間為30s。
[0150]步驟105:判斷音頻定時標志位是否置位,是則返回步驟103 ;否則執(zhí)行步驟106 ;
[0151]本實施例中,音頻定時標志位用于標記讀卡器是否在預(yù)設(shè)時間內(nèi)通過音頻模塊接收到數(shù)據(jù)。當(dāng)音頻定時器計時達到預(yù)設(shè)時間仍未接收到數(shù)據(jù)時,讀卡器將音頻定時標志位置位。
[0152]步驟106:判斷是否通過音頻模塊接收到音頻數(shù)據(jù),是則執(zhí)行步驟107 ;否則返回步驟105 ;
[0153]步驟107:清除音頻定時標志位,關(guān)閉音頻定時器,對接收到的音頻數(shù)據(jù)進行相應(yīng)處理,并將處理結(jié)果返回給音頻設(shè)備。
[0154]本實施例中,讀卡器對接收到的音頻數(shù)據(jù)的處理過程詳見實施例4,此處不再詳細說明。
[0155]步驟108:對USB模塊初始化,打開USB定時器;
[0156]本實施例中,USB模塊初始化還包括,清除USB定時標志位;
[0157]步驟109:判斷USB定時標志位是否置位,是則執(zhí)行步驟104 ;否則執(zhí)行步驟110 ;
[0158]本實施例中,USB定時標志位用于標記讀卡器是否在預(yù)設(shè)時間內(nèi)通過USB模塊接收到USB數(shù)據(jù)。當(dāng)USB定時器計時達到預(yù)設(shè)時間仍未接收到USB數(shù)據(jù)時,讀卡器將USB定時標志位置位。
[0159]步驟110:判斷是否通過USB模塊接收到USB數(shù)據(jù),是則執(zhí)行步驟111 ;否則返回步驟 109 ;
[0160]步驟111:清除USB定時標志位,關(guān)閉USB定時器,對接收到的USB數(shù)據(jù)進行相應(yīng)處理,并將處理結(jié)果返回給USB設(shè)備。
[0161]本實施例中,讀卡器對USB數(shù)據(jù)進行處理的過程詳見實施例5,此處不再詳細說明。
[0162]實施例2
[0163]本發(fā)明實施例2提供一種讀卡器的工作方法,如圖6所示,包括,
[0164]步驟201:讀卡器上電,進行初始化;
[0165]本步驟的操作方法與步驟101相同,還包括,將USB數(shù)據(jù)傳輸標識復(fù)位。
[0166]當(dāng)讀卡器的卡到位引腳為高電平時,則進入插卡中斷操作,具體操作方法與實施例I中步驟al至步驟a6相同,不再贅述。
[0167]當(dāng)讀卡器的卡到位引腳為低電平時,則進入拔卡中斷操作,具體操作方法與實施例I中步驟bl至步驟b4相同,不再贅述。
[0168]步驟202:判斷是否存在通過音頻模塊與讀卡器連接的音頻設(shè)備,是則執(zhí)行步驟203 ;否則執(zhí)行步驟204 ;[0169]步驟203:將工作模式設(shè)置為音頻模式,打開音頻數(shù)據(jù)通訊中斷,執(zhí)行步驟206 ;
[0170]步驟204:判斷是否存在通過USB模塊與讀卡器連接的USB設(shè)備,是則執(zhí)行步驟
205;否則返回步驟202 ;
[0171]步驟205:將工作模式設(shè)置為USB模式,打開USB數(shù)據(jù)通訊中斷,執(zhí)行步驟206 ;
[0172]本實施例中,步驟202至步驟205還可以為,
[0173]步驟202’:判斷是否存在通過USB模塊與讀卡器連接的USB設(shè)備,是則執(zhí)行步驟203,;否則執(zhí)行步驟204’ ;
[0174]步驟203’:將工作模式設(shè)置為USB模式,打開USB數(shù)據(jù)通訊中斷,執(zhí)行步驟206 ;
[0175]步驟204’:判斷是否存在通過音頻模塊與讀卡器連接的音頻設(shè)備,是則執(zhí)行步驟205,;否則返回步驟202’ ;
[0176]步驟205’:將工作模式設(shè)置為音頻模式,打開音頻數(shù)據(jù)通訊中斷,執(zhí)行步驟206 ;
[0177]步驟206:等待中斷,當(dāng)發(fā)生中斷時,判斷工作模式,如果是音頻模式,則執(zhí)行步驟207 ;如果是USB模式,則執(zhí)行步驟211 ;
[0178]步驟207:關(guān)閉USB數(shù)據(jù)通訊中斷,等待接收音頻數(shù)據(jù),執(zhí)行步驟208 ;
[0179]步驟208:當(dāng)接收到音頻數(shù)據(jù)時,對接收到的音頻數(shù)據(jù)進行相應(yīng)處理,并將處理結(jié)果返回給音頻設(shè)備,打開USB數(shù)據(jù)通訊中斷;
[0180]本實施例中,讀卡器對接收到的音頻數(shù)據(jù)的處理過程詳見實施例4,此處不再詳細說明。
[0181]步驟209:判斷是否存在通過音頻模塊與讀卡器連接的音頻設(shè)備,是則返回步驟
206;否則執(zhí)行步驟210 ;
[0182]步驟210:關(guān)閉音頻數(shù)據(jù)通訊中斷,返回步驟202 ;
[0183]步驟211:關(guān)閉音頻數(shù)據(jù)通訊中斷,判斷USB數(shù)據(jù)傳輸標識是否置位,是則執(zhí)行步驟216;否則執(zhí)行步驟212;
[0184]本實施例中,當(dāng)USB設(shè)備被拔出時,將USB數(shù)據(jù)傳輸標識復(fù)位。
[0185]步驟212:使能USB模塊連接,執(zhí)行步驟213 ;
[0186]步驟213:進行USB枚舉操作;
[0187]步驟214:判斷USB枚舉是否完成,是則執(zhí)行步驟215 ;否則返回步驟206 ;
[0188]步驟215:將USB數(shù)據(jù)傳輸標識置位,執(zhí)行步驟216 ;
[0189]步驟216:等待接收USB設(shè)備發(fā)送的USB數(shù)據(jù),當(dāng)通過USB模塊接收到USB數(shù)據(jù)時,對USB數(shù)據(jù)進行相應(yīng)處理,并將處理結(jié)果返回給USB設(shè)備,執(zhí)行步驟217 ;
[0190]本實施例中,讀卡器對USB數(shù)據(jù)進行處理的過程詳見實施例5,此處不再詳細說明。
[0191]步驟217:判斷是否存在通過音頻模塊與讀卡器連接的音頻設(shè)備,是則執(zhí)行步驟218 ;否則返回步驟206 ;
[0192]步驟218:打開音頻數(shù)據(jù)通訊中斷,返回步驟206。
[0193]實施例3
[0194]本實施例3提供一種讀卡器的工作方法,如圖7所示包括,
[0195]步驟301:讀卡器上電,進行系統(tǒng)初始化;
[0196]本實施例中,讀卡器進行系統(tǒng)初始化具體為,將USB通道連接標識復(fù)位,將卡到位引腳初始化為低電平,將卡槽狀態(tài)標識初始化為無卡標識。讀卡器進行系統(tǒng)初始化之后還包括,打開中斷,中斷包括插卡中斷,拔卡中斷。
[0197]當(dāng)讀卡器的卡到位引腳為高電平時,則進入插卡中斷操作,具體操作方法與實施例I中步驟al至步驟a6相同,不再贅述。
[0198]當(dāng)讀卡器的卡到位引腳為低電平時,則進入拔卡中斷操作,具體操作方法與實施例I中步驟bl至步驟b4相同,不再贅述。
[0199]步驟302:判斷是否存在通過音頻模塊與讀卡器連接的音頻設(shè)備,是則執(zhí)行步驟303 ;否則執(zhí)行步驟304 ;
[0200]步驟303:將工作模式設(shè)置為音頻模式,打開音頻數(shù)據(jù)通訊中斷,執(zhí)行步驟306 ;
[0201]步驟304:判斷是否存在通過USB模塊與讀卡器連接的USB設(shè)備,是則執(zhí)行步驟
305;否則返回步驟302 ;
[0202]步驟305:將工作模式設(shè)置為USB模式,打開USB數(shù)據(jù)通訊中斷,執(zhí)行步驟306 ;
[0203]本實施例中,步驟302至步驟305還可以為,
[0204]步驟302’:判斷是否存在通過USB模塊與讀卡器連接的USB設(shè)備,是則執(zhí)行步驟303,;否則執(zhí)行步驟304’ ;
[0205]步驟303’:將工作模式設(shè)置為USB模式,打開USB數(shù)據(jù)通訊中斷,執(zhí)行步驟306 ;
[0206]步驟304’:判斷是否存在通過音頻模塊與讀卡器連接的音頻設(shè)備,是則執(zhí)行步驟305,;否則返回步驟302’ ;
[0207]步驟305’:將工作模式設(shè)置為音頻模式,打開音頻數(shù)據(jù)通訊中斷,執(zhí)行步驟306 ;
[0208]步驟306:等待中斷,當(dāng)發(fā)生中斷時,判斷工作模式,如果是音頻模式,則執(zhí)行步驟307 ;如果是USB模式,則執(zhí)行步驟312 ;
[0209]步驟307:關(guān)閉USB數(shù)據(jù)通訊中斷,等待接收音頻數(shù)據(jù),執(zhí)行步驟308 ;
[0210]步驟308:當(dāng)接收到音頻數(shù)據(jù)時,對接收到的音頻數(shù)據(jù)進行相應(yīng)處理,并將處理結(jié)果返回給音頻設(shè)備,打開USB數(shù)據(jù)通訊中斷;
[0211]本實施例中,讀卡器對接收到的音頻數(shù)據(jù)的處理過程詳見實施例4,此處不再詳細說明。
[0212]步驟309:判斷是否通過USB模塊與電源建立連接,是則執(zhí)行步驟310 ;否則返回步驟306 ;
[0213]本實施例中,判斷是否通過USB模塊與電源連接具體為,讀卡器判斷IO管腳是否為高電平,并且沒有通信信號,如果是,則表示通過USB模塊與電源連接;否則表示未通過USB模塊與電源連接。
[0214]步驟310:判斷電池的電量是否達到額定值,是則執(zhí)行步驟311 ;否則返回步驟
306;
[0215]步驟311:提示過充電,返回步驟306 ;
[0216]步驟312:關(guān)閉音頻數(shù)據(jù)通訊中斷,判斷USB數(shù)據(jù)傳輸標識是否置位,是則執(zhí)行步驟317 ;否則執(zhí)行步驟313 ;
[0217]步驟313:使能USB模塊連接;
[0218]步驟314:進行USB枚舉操作;
[0219]步驟315:判斷USB枚舉是否完成,是則執(zhí)行步驟316 ;否則返回步驟306 ;[0220]步驟316:將USB數(shù)據(jù)傳輸標識置位,執(zhí)行步驟317 ;
[0221]步驟317:等待接收USB設(shè)備發(fā)送的USB數(shù)據(jù),當(dāng)通過USB模塊接收到USB數(shù)據(jù)時,對USB數(shù)據(jù)進行相應(yīng)處理,并將處理結(jié)果返回給USB設(shè)備,打開音頻數(shù)據(jù)通訊中斷;
[0222]本實施例中,讀卡器對USB數(shù)據(jù)進行處理的過程詳見實施例5,此處不再詳細說明。
[0223]步驟318:判斷是否存在通過USB模塊與讀卡器連接的USB設(shè)備,是則返回步驟
306;否則執(zhí)行步驟319 ;
[0224]步驟319:關(guān)閉USB數(shù)據(jù)通訊中斷,將USB數(shù)據(jù)傳輸標識復(fù)位,返回步驟302。
[0225]實施例4
[0226]本實施例4提供一種處理音頻數(shù)據(jù)的方法,如圖8所示,具體包括,
[0227]步驟401:讀卡器等待接收音頻數(shù)據(jù);
[0228]步驟402:當(dāng)接收到音頻數(shù)據(jù)時對音頻數(shù)據(jù)進行濾波處理,得到第一處理數(shù)據(jù);
[0229]具體地,讀卡器將音頻數(shù)據(jù)中的噪音濾除,將得到的干凈的音頻數(shù)據(jù)作為第一處理數(shù)據(jù);
[0230]步驟403:對第一處理數(shù)據(jù)進行隔直處理,得到第一處理數(shù)據(jù)中的交流成分;
[0231]步驟404:從交流成分中獲取第二處理數(shù)據(jù);
[0232]具體地,讀卡器從交流成分中獲取高于截止頻率的數(shù)據(jù),將其作為第二處理數(shù)據(jù)。
[0233]步驟405:將第二處理數(shù)據(jù)轉(zhuǎn)換成數(shù)字信號;
[0234]步驟406:對數(shù)字信號進行濾波處理,得到處理后的數(shù)字信號;
[0235]步驟407:將處理后的數(shù)字信號組成數(shù)據(jù)包,判斷數(shù)據(jù)包是否合法,是則執(zhí)行步驟408 ;否則返回步驟401 ;
[0236]本實施例中,如圖9所示,判斷數(shù)據(jù)包是否合法的方法包括,
[0237]Cl:從數(shù)據(jù)包的第一字節(jié)開始獲取四個字節(jié)長度的數(shù)據(jù),將其作為幀頭,判斷幀頭是否為第一預(yù)設(shè)值,是則執(zhí)行c2 ;否則返回步驟401 ;
[0238]優(yōu)選的,第一預(yù)設(shè)值為0X0ff055aa ;
[0239]c2:獲取數(shù)據(jù)包中第七字節(jié)數(shù)據(jù)將其作為參數(shù)標識,判斷參數(shù)標識是否合法,是則執(zhí)行c3;否則返回步驟401;
[0240]判斷參數(shù)標識是否合法具體為,如果參數(shù)標識為第二預(yù)設(shè)值或第三預(yù)設(shè)值,則表示參數(shù)標識合法,否則參數(shù)標識不合法;優(yōu)選的,第二預(yù)設(shè)值為0X01,第三預(yù)設(shè)值為0X02 ;
[0241]c3:從數(shù)據(jù)包的第八字節(jié)開始獲取兩個字節(jié)長度的數(shù)據(jù),將其作為數(shù)據(jù)長度值,執(zhí)行。4 ;
[0242]c4:從第十字節(jié)開始獲取長度等于數(shù)據(jù)長度值的數(shù)據(jù),將其作為數(shù)據(jù)域,獲取數(shù)據(jù)域之后的一個字節(jié)數(shù)據(jù),將其作為校驗字,執(zhí)行c5 ;
[0243]c5:采用預(yù)設(shè)算法對數(shù)據(jù)域進行計算,將得到的計算結(jié)果與校驗字進行比較,如果相同,則執(zhí)行c6 ;如果不相同,則返回步驟401 ;
[0244]c6:判斷參數(shù)標識,如果是第二預(yù)設(shè)值,則執(zhí)行步驟408 ;如果是第三預(yù)設(shè)值,則等待接收預(yù)設(shè)長度的數(shù)據(jù),將其追加到數(shù)據(jù)包中,執(zhí)行步驟408。
[0245]優(yōu)選的,預(yù)設(shè)長度為十個字節(jié)。
[0246]步驟408:對數(shù)據(jù)包進行解析,根據(jù)解析結(jié)果判斷指令的類型,如果是查詢卡槽狀態(tài)指令,則執(zhí)行步驟409 ;如果是上電指令,則執(zhí)行步驟413 ;如果是下電指令,則執(zhí)行步驟421 ;如果是操作卡片指令,則執(zhí)行步驟425 ;如果是其他指令,則執(zhí)行相應(yīng)操作,然后返回步驟401 ;
[0247]本實施例中,根據(jù)解析結(jié)果的第一字節(jié)判斷指令類型;
[0248]如果第一字節(jié)為0X65,則表示是查詢卡槽狀態(tài)指令;
[0249]如果第一字節(jié)為0X62,則表示是上電指令;
[0250]如果第一字節(jié)為0X63,則表示是下電指令;
[0251 ] 如果第一字節(jié)為0X6f,則表示是操作卡片指令;
[0252]步驟409:根據(jù)卡槽狀態(tài)標識查詢卡槽狀態(tài),并設(shè)置卡槽狀態(tài)數(shù)據(jù);
[0253]本實施例中,如果卡槽狀態(tài)標識為有卡標識,則表示卡槽中有卡片,將卡槽狀態(tài)數(shù)據(jù)的預(yù)設(shè)字節(jié)設(shè)置為0X00 ;
[0254]如果卡槽狀態(tài)標識為無卡標識,則表示卡槽中沒有卡片,將卡槽狀態(tài)數(shù)據(jù)的預(yù)設(shè)字節(jié)設(shè)置為0X02 ;
[0255]優(yōu)選的,卡槽狀態(tài)數(shù)據(jù)的預(yù)設(shè)字節(jié)為卡槽狀態(tài)數(shù)據(jù)的第八字節(jié)。
[0256]步驟410:處理卡槽狀態(tài)數(shù)據(jù)的數(shù)字信號的幅值電壓,得到處理后的卡槽狀態(tài)數(shù)據(jù);
[0257]步驟411:將處理后的卡槽狀態(tài)數(shù)據(jù)轉(zhuǎn)換成卡槽狀態(tài)音頻數(shù)據(jù)包;
[0258]具體地,通過緩慢充放電過程,將所述處理后的卡槽狀態(tài)數(shù)據(jù)轉(zhuǎn)換為類似正弦波的模擬信號,再將所述模擬信號轉(zhuǎn)為卡槽狀態(tài)音頻數(shù)據(jù)包。
[0259]步驟412:通過音頻模塊將卡槽狀態(tài)音頻數(shù)據(jù)包發(fā)送給音頻設(shè)備,返回步驟401 ;
[0260]步驟413:根據(jù)卡槽狀態(tài)標識判斷卡槽中是否有卡片,是則執(zhí)行步驟414 ;否則執(zhí)行步驟418 ;
[0261]本實施例中,如果卡槽狀態(tài)標識為有卡標識,則表示卡槽中有卡片;如果卡槽狀態(tài)標識為無卡標識,則表示卡槽中沒有卡片;
[0262]步驟414:卡槽上電,并讀取卡槽上電響應(yīng);
[0263]例如,讀取到的卡槽上電響應(yīng)為,
[0264]800c00000000120000003bf095000081blfe9alf0729 ;
[0265]步驟415:處理卡槽上電響應(yīng)的數(shù)字信號的幅值電壓,得到處理后的卡槽上電響應(yīng);
[0266]步驟416:將處理后的卡槽上電響應(yīng)轉(zhuǎn)換成卡槽上電響應(yīng)音頻數(shù)據(jù)包;
[0267]具體地,通過緩慢充放電過程,將所述處理后的卡槽上電響應(yīng)轉(zhuǎn)換為類似正弦波的模擬信號,再將所述模擬信號轉(zhuǎn)為卡槽上電響應(yīng)音頻數(shù)據(jù)包。
[0268]步驟417:通過音頻模塊將卡槽上電響應(yīng)音頻數(shù)據(jù)包發(fā)送給音頻設(shè)備,返回步驟401 ;
[0269]步驟418:生成卡槽中無卡響應(yīng),處理卡槽中無卡響應(yīng)的數(shù)字信號的幅值電壓,得到處理后的卡槽中無卡響應(yīng);
[0270]步驟419:將處理后的卡槽中無卡響應(yīng)轉(zhuǎn)換成卡槽中無卡響應(yīng)音頻數(shù)據(jù)包;
[0271]具體地,通過緩慢充放電過程,將所述處理后的卡槽中無卡響應(yīng)轉(zhuǎn)換為類似正弦波的模擬信號,再將所述模擬信號轉(zhuǎn)為卡槽中無卡響應(yīng)音頻數(shù)據(jù)包。[0272]步驟420:通過音頻模塊將卡槽中無卡響應(yīng)音頻數(shù)據(jù)包發(fā)送給音頻設(shè)備,返回步驟 401 ;
[0273]步驟421:卡槽下電,并讀取卡槽下電響應(yīng);
[0274]本實施例中,讀卡器對卡槽下電,讀取卡槽下電響應(yīng),卡槽下電響應(yīng)的第一個字節(jié)為 0X81,例如,81000000000004010000 ;
[0275]步驟422:處理卡槽下電響應(yīng)的數(shù)字信號的幅值電壓,得到處理后的卡槽下電響應(yīng);
[0276]步驟423:將處理后的卡槽下電響應(yīng)轉(zhuǎn)換成卡槽下電響應(yīng)音頻數(shù)據(jù)包;
[0277]具體地,通過緩慢充放電過程,將所述處理后的卡槽下電響應(yīng)轉(zhuǎn)換為類似正弦波的模擬信號,再將所述模擬信號轉(zhuǎn)為卡槽下電響應(yīng)音頻數(shù)據(jù)包。
[0278]步驟424:通過音頻模塊將卡槽下電響應(yīng)音頻數(shù)據(jù)包發(fā)送給音頻設(shè)備,返回步驟401 ;
[0279]步驟425:將操作卡片指令發(fā)送給卡片,等待接收卡片返回的操作卡片響應(yīng);
[0280]本實施例中,卡片接收到操作卡片指令后,根據(jù)操作卡片指令執(zhí)行相應(yīng)操作,并向讀卡器返回相應(yīng)的操作卡片響應(yīng)。例如:8005000000001800000000el01f010 ;
[0281]步驟426:當(dāng)接收到卡片返回的操作卡片響應(yīng)時,處理操作卡片響應(yīng)的數(shù)字信號的幅值電壓,得到處理后的操作卡片響應(yīng);
[0282]步驟427:將處理后的操作卡片響應(yīng)轉(zhuǎn)換成操作卡片響應(yīng)音頻數(shù)據(jù)包;
[0283]具體地,通過緩慢充放電過程,將所述處理后的操作卡片響應(yīng)轉(zhuǎn)換為類似正弦波的模擬信號,再將所述模擬信號轉(zhuǎn)為操作卡片響應(yīng)音頻數(shù)據(jù)包。
[0284]步驟428:通過音頻模塊將操作卡片響應(yīng)音頻數(shù)據(jù)包發(fā)送給音頻設(shè)備,返回步驟401。
[0285]實施例5
[0286]本實施例提供一種處理USB數(shù)據(jù)的方法,如圖10所示,具體包括,
[0287]步驟501:讀卡器等待接收USB數(shù)據(jù);
[0288]步驟502:判斷接收到的USB數(shù)據(jù)的指令類型,如果是查詢卡槽狀態(tài)指令,則執(zhí)行步驟503 ;如果是上電指令,則執(zhí)行步驟505 ;如果是下電指令,則執(zhí)行步驟509 ;如果是操作卡片指令,則執(zhí)行步驟511 ;如果是其他指令,則執(zhí)行相應(yīng)操作,然后返回步驟501 ;
[0289]本實施例中,讀卡器根據(jù)USB數(shù)據(jù)的第一字節(jié)判斷指令類型;
[0290]具體地,如果第一字節(jié)為0X65,則表示是查詢卡槽狀態(tài)指令;
[0291]如果第一字節(jié)為0X62,則表示是上電指令;
[0292]如果第一字節(jié)為0X63,則表示是下電指令;
[0293]如果第一字節(jié)為OX6f,則表示是操作卡片指令;
[0294]步驟503:根據(jù)卡槽狀態(tài)標識查詢卡槽狀態(tài),并設(shè)置卡槽狀態(tài)數(shù)據(jù);
[0295]本實施例中,如果卡槽狀態(tài)標識為有卡標識,則表示卡槽中有卡片,讀卡器將卡槽狀態(tài)數(shù)據(jù)的預(yù)設(shè)字節(jié)設(shè)置為0X00 ;
[0296]如果卡槽狀態(tài)標識為無卡標識,則表示卡槽中沒有卡片,讀卡器將卡槽狀態(tài)數(shù)據(jù)的預(yù)設(shè)字節(jié)設(shè)置為0X02 ;
[0297]優(yōu)選的,卡槽狀態(tài)數(shù)據(jù)的預(yù)設(shè)字節(jié)為卡槽狀態(tài)數(shù)據(jù)的第八字節(jié)。[0298]步驟504:通過USB模塊將卡槽狀態(tài)數(shù)據(jù)發(fā)送給USB設(shè)備,返回步驟501 ;
[0299]步驟505:根據(jù)卡槽狀態(tài)標識判斷卡槽中是否有卡片,是則執(zhí)行步驟507 ;否則執(zhí)行步驟506 ;
[0300]本實施例中,如果卡槽狀態(tài)標識為有卡標識,則表示卡槽中有卡片;如果卡槽狀態(tài)標識為無卡標識,則表示卡槽中沒有卡片;
[0301]步驟506:通過USB模塊將卡槽中無卡響應(yīng)發(fā)送給USB設(shè)備,返回步驟501 ;
[0302]步驟507:卡槽上電,讀取卡槽上電響應(yīng);
[0303]例如,讀取到的卡槽上電響應(yīng)為,
[0304]800c00000000215000003bf095000081blfe9alf0729 ;
[0305]步驟508:通過USB模塊將卡槽上電響應(yīng)發(fā)送給USB設(shè)備,返回步驟501 ;
[0306]步驟509:卡槽下電,讀取卡槽下電響應(yīng);
[0307]本實施例中,讀卡器對卡槽下電,讀取卡槽下電響應(yīng),卡槽下電響應(yīng)的第一字節(jié)為0X81,例如,81000000000004010000 ;
[0308]步驟510:通過USB模塊將卡槽下電響應(yīng)發(fā)送給USB設(shè)備,返回步驟501 ;
[0309]步驟511:將操作卡片指令發(fā)送給卡片;
[0310]步驟512:等待接收卡片返回的操作卡片響應(yīng);
[0311]本實施例中,卡片接收到操作卡片指令后,根據(jù)操作卡片指令執(zhí)行相應(yīng)操作,并向讀卡器返回相應(yīng)的操作卡片響應(yīng)。例如:8005000000001800000000eAlf010 ;
[0312]步驟513:當(dāng)接收到操作卡片響應(yīng)時,通過USB模塊將操作卡片響應(yīng)發(fā)送給USB設(shè)備,返回步驟501。
[0313]實施例6
[0314]本實施例提供一種讀卡器的工作方法,包括:
[0315]步驟601:讀卡器上電,進行初始化;
[0316]本步驟操作方法與步驟101相同。
[0317]步驟602:等待接收數(shù)據(jù);
[0318]具體地,判斷是否存在通過USB模塊與其連接的設(shè)備建立連接,是則等待接收USB數(shù)據(jù),執(zhí)行步驟603 ;否則判斷預(yù)設(shè)時間內(nèi)是否收到音頻數(shù)據(jù),若預(yù)設(shè)時間內(nèi)接收到音頻數(shù)據(jù),則執(zhí)行步驟603 ;若預(yù)設(shè)時間內(nèi)未接收到音頻數(shù)據(jù),則進入低功耗模式;
[0319]步驟603:當(dāng)通過USB通道接收到USB數(shù)據(jù)時,關(guān)閉音頻數(shù)據(jù)通訊中斷,將工作模式置為USB模式,執(zhí)行步驟604 ;當(dāng)通過音頻通道接收到音頻數(shù)據(jù)時,關(guān)閉USB數(shù)據(jù)通訊中斷,將工作模式置為音頻模式,執(zhí)行步驟605 ;
[0320]具體地,當(dāng)通過音頻通道接收到音頻數(shù)據(jù)時,判斷是否為低功耗模式,是則退出低功耗模式,執(zhí)行步驟605 ;否則執(zhí)行步驟605。
[0321]步驟604:判斷所述接收到的USB數(shù)據(jù)的指令類型,如果是操作卡片指令,則將所述操作卡片指令發(fā)送給卡片,等待接收卡片返回的操作結(jié)果,執(zhí)行步驟606;如果是其他指令,則執(zhí)行相應(yīng)操作得到操作結(jié)果,執(zhí)行步驟606 ;
[0322]步驟605:將所述音頻數(shù)據(jù)轉(zhuǎn)換成數(shù)字信號,將所述數(shù)字信號組成數(shù)據(jù)包,對所述數(shù)據(jù)包進行解析得到解析結(jié)果,根據(jù)所述解析結(jié)果判斷指令類型,如果是操作卡片指令,則將所述操作卡片指令發(fā)送給卡片,等待接收卡片返回的操作結(jié)果,執(zhí)行步驟606;如果是其他指令,則執(zhí)行相應(yīng)操作得到操作結(jié)果,執(zhí)行步驟606 ;
[0323]本步驟的操作方法具體與實施例4相同,此處不再贅述。
[0324]步驟606:判斷所述工作模式,如果是USB模式,則將所述操作結(jié)果發(fā)送給與其連接的設(shè)備,打開音頻數(shù)據(jù)通訊中斷,執(zhí)行步驟607 ;如果是音頻模式,則將所述操作結(jié)果轉(zhuǎn)換為音頻數(shù)據(jù)包,將所述音頻數(shù)據(jù)包發(fā)送給與其連接的設(shè)備,打開USB數(shù)據(jù)通訊中斷,執(zhí)行步驟607 ;
[0325]本步驟的操作方法與實施例5相同,此處不再贅述。
[0326]步驟607:判斷USB模塊是否與電源建立連接,是則執(zhí)行步驟608 ;否則返回步驟602 ;
[0327]步驟608:判斷電池的電量是否達到額定值,是則執(zhí)行步驟609;否則返回步驟602 ;
[0328]步驟609:提示過充電,返回步驟602。
[0329]以上所述,僅為本發(fā)明的【具體實施方式】,但本發(fā)明的保護范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)所述以權(quán)利要求的保護范圍為準。
【權(quán)利要求】
1.一種讀卡器的工作方法,其特征在于,包括, 步驟S1:讀卡器上電,進行初始化,根據(jù)與其連接的設(shè)備的類型設(shè)置工作模式; 步驟S2:判斷所述工作模式,如果是音頻模式,則等待接收音頻數(shù)據(jù),當(dāng)接收到音頻數(shù)據(jù)時,執(zhí)行步驟S3 ;如果是USB模式,則等待接收USB數(shù)據(jù),當(dāng)接收到USB數(shù)據(jù)時,執(zhí)行步驟S5 ; 步驟S3:將所述音頻數(shù)據(jù)轉(zhuǎn)換成數(shù)字信號,將所述數(shù)字信號組成數(shù)據(jù)包,對所述數(shù)據(jù)包進行解析得到解析結(jié)果,根據(jù)所述解析結(jié)果判斷指令類型,如果是操作卡片指令,則將所述操作卡片指令發(fā)送給卡片,等待接收卡片返回的操作結(jié)果,執(zhí)行步驟S4;如果是其他指令,則執(zhí)行相應(yīng)操作得到操作結(jié)果,執(zhí)行步驟S4 ; 步驟S4:將所述操作結(jié)果轉(zhuǎn)換為音頻數(shù)據(jù)包,將所述音頻數(shù)據(jù)包發(fā)送給與其連接的設(shè)備,返回步驟S2 ; 步驟S5:判斷所述接收到的USB數(shù)據(jù)的指令類型,如果是操作卡片指令,則將所述操作卡片指令發(fā)送給卡片,等待接收卡片返回的操作結(jié)果,將所述操作結(jié)果發(fā)送給與其連接的設(shè)備,返回步驟S2 ;如果是其他指令,則執(zhí)行相應(yīng)操作,并將得到的操作結(jié)果返回給與其連接的設(shè)備,返回步驟S2。
2.如權(quán)利要求1所述的方法,其特征在于,所述步驟SI中,所述根據(jù)與其連接的設(shè)備的類型設(shè)置工作模式,具體為: 判斷是否存在通過USB模塊與讀卡器連接的設(shè)備,是則將所述工作模式設(shè)置為USB模式;否則將所述工作模式設(shè)置為音頻模式; 或者, 步驟al:判斷是否存在通過音頻模塊與讀卡器連接的設(shè)備,是則將所述工作模式設(shè)置為音頻模式;否則執(zhí)行步驟a2; 步驟a2:判斷是否存在通過USB模塊與讀卡器連接的設(shè)備,是則將所述工作模式設(shè)置為USB模式;否則返回步驟al; 或者, 步驟bl:判斷是否存在通過USB模塊與讀卡器連接的設(shè)備,是則將所述工作模式設(shè)置為USB模式;否則執(zhí)行步驟b2; 步驟b2:判斷是否存在通過音頻模塊與讀卡器連接的設(shè)備,是則將所述工作模式設(shè)置為音頻模式;否則返回步驟bl。
3.如權(quán)利要求1所述的方法,其特征在于,所述步驟S5中,返回步驟S2還包括, 步驟Fl:判斷是否通過USB模塊與電源建立連接,是則執(zhí)行步驟F2 ;否則返回步驟S2 ; 步驟F2:判斷電池的電量是否達到額定值,是則提示過充電,返回步驟S2 ;否則返回步驟S2。
4.如權(quán)利要求1所述的方法,其特征在于,所述步驟S2中,所述等待接收音頻數(shù)據(jù),具體為:判斷預(yù)設(shè)時間內(nèi)是否通過音頻模塊接收到音頻數(shù)據(jù),是則執(zhí)行步驟S3 ;否則返回步驟S2 ; 所述等待接收USB數(shù)據(jù),具體為:判斷預(yù)設(shè)時間內(nèi)是否通過USB模塊接收到USB數(shù)據(jù),是則執(zhí)行步驟S5 ;否則判斷預(yù)設(shè)時間內(nèi)是否通過音頻模塊接收到音頻數(shù)據(jù)。
5.如權(quán)利要求1所述的方法,其特征在于,所述步驟SI中,所述進行初始化還包括:將USB數(shù)據(jù)傳輸標識復(fù)位; 所述根據(jù)與其連接的設(shè)備的類型設(shè)置工作模式之后,還包括:根據(jù)所述工作模式打開相應(yīng)的數(shù)據(jù)通訊中斷,所述數(shù)據(jù)通訊中斷包括,USB數(shù)據(jù)通訊中斷和音頻數(shù)據(jù)通訊中斷;當(dāng)發(fā)生數(shù)據(jù)通訊中斷時,執(zhí)行步驟S2 ; 所述步驟S2中,所述等待接收音頻數(shù)據(jù)之前還包括,關(guān)閉USB數(shù)據(jù)通訊中斷; 所述步驟S4中,所述返回步驟S2之前,還包括:打開USB數(shù)據(jù)通訊中斷; 所述等待接收USB數(shù)據(jù)之前還包括,關(guān)閉音頻數(shù)據(jù)通訊中斷,判斷所述USB數(shù)據(jù)傳輸標識是否置位,是則執(zhí)行步驟S5 ;否則使能USB模塊連接,進行USB數(shù)據(jù)枚舉操作,判斷USB枚舉是否完成,是則將所述USB數(shù)據(jù)傳輸標識置位,執(zhí)行步驟S5 ;否則等待數(shù)據(jù)通訊中斷,返回步驟S2 ; 所述步驟S5中,所述返回步驟S2之前,還包括:打開音頻數(shù)據(jù)通訊中斷。
6.如權(quán)利要求5所述的方法,其特征在于,所述步驟S5中,所述打開音頻數(shù)據(jù)通訊中斷,具體為:判斷是否存在通過音頻模塊與讀卡器連接的設(shè)備,是則打開音頻數(shù)據(jù)通訊中斷;否則返回步驟S2。
7.如權(quán)利要求5所述的方法,其特征在于,所述步驟S5中,所述打開音頻數(shù)據(jù)通訊中斷之后,還包括:判斷是否存在通過USB模塊與讀卡器連接的設(shè)備,是則返回步驟S2 ;否則關(guān)閉USB數(shù)據(jù)通訊 中斷,將所述USB數(shù)據(jù)傳輸標識復(fù)位,讀卡器根據(jù)與其連接的設(shè)備的類型設(shè)置工作模式,執(zhí)行步驟S2。
8.如權(quán)利要求1所述的方法,其特征在于,所述步驟S2中,如果所述工作模式是音頻模式時,還包括:對音頻模塊進行初始化; 所述對音頻模塊進行初始化具體包括: 打開低功耗定時中斷,判斷是否接收到音頻數(shù)據(jù),是則接收所述音頻數(shù)據(jù),將低功耗定時標識復(fù)位,關(guān)閉低功耗定時中斷,將所述音頻數(shù)據(jù)發(fā)送給讀卡器,打開低功耗定時中斷;否則,將所述低功耗定時標識置位; 從打開低功耗定時中斷開始計時,每隔預(yù)設(shè)時間,進入一次低功耗定時中斷,進入低功耗定時中斷操作具體包括:判斷低功耗定時標識是否置位,是則進入低功耗模式;否則退出低功耗定時中斷。
9.如權(quán)利要求1所述的方法,其特征在于,所述步驟S3中,所述將所述音頻數(shù)據(jù)轉(zhuǎn)換成數(shù)字信號,具體為: 所述讀卡器對所述音頻數(shù)據(jù)進行濾波處理,得到第一處理數(shù)據(jù),對所述第一處理數(shù)據(jù)進行隔直處理,得到所述第一處理數(shù)據(jù)中的交流成分;從所述交流成分中獲取第二處理數(shù)據(jù),將所述第二處理數(shù)據(jù)進行轉(zhuǎn)換,得到轉(zhuǎn)換后的數(shù)據(jù),并對所述轉(zhuǎn)換后的數(shù)據(jù)進行濾波處理,得到數(shù)字信號。
10.如權(quán)利要求1所述的方法,其特征在于,所述步驟S3中,所述將所述數(shù)字信號組成數(shù)據(jù)包之后,所述對所述數(shù)據(jù)包進行解析之前還包括:判斷所述數(shù)據(jù)包是否合法,是則對所述數(shù)據(jù)包進行解析;否則等待接收音頻數(shù)據(jù),當(dāng)接收到音頻數(shù)據(jù)時,返回步驟S3。
11.如權(quán)利要求10所述的方法,其特征在于,所述判斷所述數(shù)據(jù)包是否合法,具體為, Cl:從所述數(shù)據(jù)包的第一字節(jié)開始獲取四個字節(jié)長度的數(shù)據(jù),將其作為幀頭,判斷所述幀頭是否為第一預(yù)設(shè)值,是則執(zhí)行c2 ;否則所述數(shù)據(jù)包不合法;c2:獲取所述數(shù)據(jù)包中第七字節(jié)數(shù)據(jù),將其作為參數(shù)標識,判斷所述參數(shù)標識是否合法,是則執(zhí)行c3 ;否則所述數(shù)據(jù)包不合法; c3:從所述數(shù)據(jù)包的第八字節(jié)開始獲取兩 個字節(jié)長度的數(shù)據(jù),將其作為數(shù)據(jù)長度值,執(zhí)行。4 ; c4:從第十字節(jié)開始獲取長度等于所述數(shù)據(jù)長度值的數(shù)據(jù),將其作為數(shù)據(jù)域,獲取所述數(shù)據(jù)域之后的一個字節(jié)數(shù)據(jù),將其作為校驗字,執(zhí)行c5 ; c5:采用預(yù)設(shè)算法對所述數(shù)據(jù)域進行計算,將得到的計算結(jié)果與所述校驗字進行比較,如果相同,則表示所述數(shù)據(jù)包合法;如果不相同,則所述數(shù)據(jù)包不合法。
12.如權(quán)利要求11所述的方法,其特征在于,所述C2中所述判斷參數(shù)標識是否合法,具體為:判斷所述參數(shù)標識是否為第二預(yù)設(shè)值或第三預(yù)設(shè)值,是則所述參數(shù)標識合法,否則所述參數(shù)標識不合法。
13.如權(quán)利要求12所述的方法,其特征在于,所述數(shù)據(jù)包合法時還包括,判斷所述參數(shù)標識,如果是第二預(yù)設(shè)值,則對所述數(shù)據(jù)包進行解析;如果是第三預(yù)設(shè)值,則等待接收預(yù)設(shè)長度的數(shù)據(jù),將其添加到所述數(shù)據(jù)包中,對當(dāng)前數(shù)據(jù)包進行解析。
14.如權(quán)利要求1所述的方法,其特征在于,所述步驟S4中,所述將所述操作結(jié)果轉(zhuǎn)換為音頻數(shù)據(jù)包,具體為, 將所述操作結(jié)果的數(shù)字信號的幅值電壓進行壓縮,再通過緩慢充放電過程,將所述操作結(jié)果的數(shù)字信號轉(zhuǎn)換為類似正弦波的模擬信號,再將所述模擬信號轉(zhuǎn)為音頻數(shù)據(jù)包。
15.如權(quán)利要求1所述的方法,其特征在于,所述步驟SI中,初始化還包括,將卡槽狀態(tài)標識置為無卡標識;當(dāng)卡到位引腳為高電平時,將卡槽狀態(tài)標識置為有卡標識,當(dāng)卡到位引腳為低電平時,將卡槽狀態(tài)標識置為無卡標識。
16.如權(quán)利要求15所述的方法,其特征在于,所述步驟S3中,所述其他指令包括:查詢卡槽狀態(tài)指令,上電指令,下電指令; 所述步驟S3中,所述根據(jù)所述解析結(jié)果判斷指令類型,如果是查詢卡槽狀態(tài)指令時,則根據(jù)卡槽狀態(tài)標識查詢卡槽狀態(tài),并設(shè)置卡槽狀態(tài)數(shù)據(jù),將卡槽狀態(tài)數(shù)據(jù)作為操作結(jié)果,執(zhí)行步驟S4 ; 如果是上電指令時,則根據(jù)卡槽狀態(tài)標識判斷卡槽中是否有卡片,是則對卡槽上電,并讀取卡槽上電響應(yīng),將卡槽上電響應(yīng)作為操作結(jié)果,執(zhí)行步驟S4 ;否則生成卡槽中無卡響應(yīng),將卡槽中無卡響應(yīng)作為操作結(jié)果,執(zhí)行步驟S4 ; 如果是下電指令時,則對卡槽下電,并讀取卡槽下電響應(yīng),將卡槽下電響應(yīng)作為操作結(jié)果,執(zhí)彳了步驟S4。
17.如權(quán)利要求15所述的方法,其特征在于,所述步驟S5中,所述其他指令包括:查詢卡槽狀態(tài)指令,上電指令,下電指令; 所述步驟S5中,所述根據(jù)所述解析結(jié)果判斷指令類型,如果是查詢卡槽狀態(tài)指令,則根據(jù)卡槽狀態(tài)標識查詢卡槽狀態(tài),并設(shè)置卡槽狀態(tài)數(shù)據(jù),并將所述卡槽狀態(tài)數(shù)據(jù)發(fā)送給與其連接的設(shè)備,返回步驟S2; 如果是上電指令,則根據(jù)卡槽狀態(tài)標識判斷卡槽中是否有卡片,是則對卡槽上電,并讀取卡槽上電響應(yīng),將所述卡槽上電響應(yīng)發(fā)送給與其連接的設(shè)備,返回步驟S2 ;否則生成卡槽中無卡響應(yīng),并將所述卡槽中無卡響應(yīng)發(fā)送給與其連接的設(shè)備,返回步驟S2 ;如果是下電指令,則對卡槽下電,并讀取卡槽下電響應(yīng),并將所述卡槽下電響應(yīng)發(fā)送給與其連接的設(shè)備,返回步驟S2。
18.一種讀卡器的工作方法,其特征在于,包括, 步驟Wl:讀卡器上電,進行初始化; 步驟W2:等待接收數(shù)據(jù); 步驟W3:當(dāng)通過USB通道接收到USB數(shù)據(jù)時,將工作模式置為USB模式,執(zhí)行步驟W4 ;當(dāng)通過音頻通道接收到音頻數(shù)據(jù)時,將工作模式置為音頻模式,執(zhí)行步驟W5 ; 步驟W4:判斷所述接收到的USB數(shù)據(jù)的指令類型,如果是操作卡片指令,則將所述操作卡片指令發(fā)送給卡片,等待接收卡片返回的操作結(jié)果,執(zhí)行步驟W6 ;如果是其他指令,則執(zhí)行相應(yīng)操作得到操作結(jié)果,執(zhí)行步驟W6 ; 步驟W5:將所述音頻數(shù)據(jù)轉(zhuǎn)換成數(shù)字信號,將所述數(shù)字信號組成數(shù)據(jù)包,對所述數(shù)據(jù)包進行解析得到解析結(jié)果,根據(jù)所述解析結(jié)果判斷指令類型,如果是操作卡片指令,則將所述操作卡片指令發(fā)送給卡片,等待接收卡片返回的操作結(jié)果,執(zhí)行步驟W6;如果是其他指令,則執(zhí)行相應(yīng)操作得到操作結(jié)果,執(zhí)行步驟W6 ; 步驟W6:判斷所述工作模式,如果是USB模式,則將所述操作結(jié)果發(fā)送給與其連接的設(shè)備,返回步驟W2 ;如果是音頻模式,則將所述操作結(jié)果轉(zhuǎn)換為音頻數(shù)據(jù)包,將所述音頻數(shù)據(jù)包發(fā)送給與其 連接的設(shè)備,返回步驟W2。
19.如權(quán)利要求18所述的方法,其特征在于,所述步驟W6中,返回步驟W2之前還包括: 步驟Gl:判斷USB模塊是否與電源建立連接,是則執(zhí)行步驟G2 ;否則返回步驟W2 ; 步驟G2:判斷電池的電量是否達到額定值,是則執(zhí)行步驟G3 ;否則返回步驟W2 ; 步驟G3:提示過充電,返回步驟W2。
20.如權(quán)利要求18所述的方法,其特征在于,所述步驟W3中,當(dāng)通過USB通道接收到USB數(shù)據(jù)之后,所述將工作模式置為USB模式之前還包括:關(guān)閉音頻數(shù)據(jù)通訊中斷; 所述步驟W6中,所述工作模式為USB模式時,所述將所述操作結(jié)果通過USB通道發(fā)送給與其連接的設(shè)備之后,返回步驟W2之前,還包括,打開音頻數(shù)據(jù)通訊中斷。
21.如權(quán)利要求18所述的方法,其特征在于,所述步驟W3中,所述當(dāng)通過音頻通道接收到音頻數(shù)據(jù)之后,所述將工作模式置為音頻模式之前,還包括:關(guān)閉USB數(shù)據(jù)通訊中斷; 所述步驟W6中,所述工作模式為音頻模式時,將所述操作結(jié)果通過音頻通道發(fā)送給與其連接的設(shè)備之后,返回步驟W2之前,還包括,打開USB數(shù)據(jù)通訊中斷。
22.如權(quán)利要求18所述的方法,其特征在于,所述步驟W2具體為:判斷是否存在通過USB模塊與其連接的設(shè)備建立連接,是則等待接收USB數(shù)據(jù),執(zhí)行步驟W3 ;否則判斷預(yù)設(shè)時間內(nèi)是否收到音頻數(shù)據(jù),若預(yù)設(shè)時間內(nèi)接收到音頻數(shù)據(jù),則執(zhí)行步驟W3 ;若預(yù)設(shè)時間內(nèi)未接收到音頻數(shù)據(jù),則進入低功耗模式; 所述步驟W3中,所述當(dāng)通過音頻通道接收到音頻數(shù)據(jù)時,將工作模式置為音頻模式,執(zhí)行步驟W5,具體為:當(dāng)通過音頻通道接收到音頻數(shù)據(jù)時,判斷是否為低功耗模式,是則退出低功耗模式,執(zhí)行步驟W5 ;否則執(zhí)行步驟W5。
23.如權(quán)利要求18所述的方法,其特征在于,所述步驟W5中,所述將所述音頻數(shù)據(jù)轉(zhuǎn)換成數(shù)字信號,具體為, 所述讀卡器對所述音頻數(shù)據(jù)進行濾波處理,得到第一處理數(shù)據(jù),對所述第一處理數(shù)據(jù)進行隔直處理,得到所述第一處理數(shù)據(jù)中的交流成分;從所述交流成分中獲取第二處理數(shù)據(jù),將所述第二處理數(shù)據(jù)進行轉(zhuǎn)換,得到轉(zhuǎn)換后的數(shù)據(jù),并對所述轉(zhuǎn)換后的數(shù)據(jù)進行濾波處理,得到數(shù)字信號。
24.如權(quán)利要求18所述的方法,其特征在于,所述步驟W5中,所述將所述數(shù)字信號組成數(shù)據(jù)包之后,所述對所述數(shù)據(jù)包進行解析之前還包括,判斷所述數(shù)據(jù)包是否合法; 所述判斷所述數(shù)據(jù)包是否合法,具體為, L1:從所述數(shù)據(jù)包的第一字節(jié)開始獲取四個字節(jié)長度的數(shù)據(jù),將其作為幀頭,判斷所述幀頭是否為第一預(yù)設(shè)值,是則執(zhí)行L2 ;否則所述數(shù)據(jù)包不合法; L2:獲取所述數(shù)據(jù)包中第七字節(jié)數(shù)據(jù),將其作為參數(shù)標識,判斷所述參數(shù)標識是否合法,是則執(zhí)行L3 ;否則所述數(shù)據(jù)包不合法; L3:從所述數(shù)據(jù)包的第八字節(jié)開始獲取兩個字節(jié)長度的數(shù)據(jù),將其作為數(shù)據(jù)長度值,執(zhí)行L4 ; L4:從第十字節(jié)開始獲取長度等于所述數(shù)據(jù)長度值的數(shù)據(jù),將其作為數(shù)據(jù)域,獲取所述數(shù)據(jù)域之后的一個字節(jié)數(shù)據(jù),將其作為校驗字,執(zhí)行L5 ; L5:采用預(yù)設(shè)算法對所述數(shù)據(jù)域進行計算,將得到的計算結(jié)果與所述校驗字進行比較,如果相同,則表示所述數(shù)據(jù)包合法;如果不相同,則所述數(shù)據(jù)包不合法。
25.如權(quán)利要求24所述的方法,其特征在于,所述判斷參數(shù)標識是否合法,具體為,如果所述參數(shù)標識為第二預(yù)設(shè)值或第三預(yù)設(shè)值,則表示所述參數(shù)標識合法,否則所述參數(shù)標識不合法。
26.如權(quán)利要求25所述的方法,其特征在于,所述數(shù)據(jù)包合法時還包括,判斷所述參數(shù)標識,如果是第二預(yù)設(shè)值,則對所述數(shù)據(jù)包進行解析;如果是第三預(yù)設(shè)值,則等待接收預(yù)設(shè)長度的數(shù)據(jù),將其追加到所述數(shù)據(jù)包中,對所述數(shù)據(jù)包進行解析。
27.如權(quán)利要求18所述的方法,其特征在于,所述步驟W6中,所述將所述操作結(jié)果轉(zhuǎn)換為音頻數(shù)據(jù)包,具體為, 將所述操作結(jié)果的數(shù)字信號的幅值電壓進行壓縮,再通過緩慢充放電過程,將所述操作結(jié)果的數(shù)字信號轉(zhuǎn)換為類似正弦波的模擬信號,再將所述模擬信號轉(zhuǎn)為音頻數(shù)據(jù)包。
28.如權(quán)利要求18所述的方法,其特征在于,所述步驟Wl中,所述初始化包括,將卡槽狀態(tài)標識置為無卡標識;當(dāng)卡到位引腳為高電平時,將卡槽狀態(tài)標識置為有卡標識,當(dāng)卡到位引腳為低電平時,將卡槽狀態(tài)標識置為無卡標識。
29.如權(quán)利要求28所述的方法,其特征在于,所述步驟W4中,所述其他指令包括:查詢卡槽狀態(tài)指令,上電指令,下電指令; 所述步驟W4中,所述判斷所述接收到的USB數(shù)據(jù)的指令類型,如果是查詢卡槽狀態(tài)指令時,則根據(jù)卡槽狀態(tài)標識查詢卡槽狀態(tài),并設(shè)置卡槽狀態(tài)數(shù)據(jù),并將所述卡槽狀態(tài)數(shù)據(jù)作為操作結(jié)果,執(zhí)行步驟W6; 如果是上電指令時,則根據(jù)卡槽狀態(tài)標識判斷卡槽中是否有卡片,是則對卡槽上電,并讀取卡槽上電響應(yīng),將所述卡槽上電響應(yīng)作為操作結(jié)果,執(zhí)行步驟W6 ;否則生成卡槽中無卡響應(yīng),并將所述卡槽中無卡響應(yīng)作為操作結(jié)果,執(zhí)行步驟W6 ; 如果是下電指令時,則對卡槽下電,并讀取卡槽下電響應(yīng),并將所述卡槽下電響應(yīng)作為操作結(jié)果,執(zhí)行步驟W6。
30.如權(quán)利要求28所述的方法,其特征在于,所述步驟W5中,所述其他指令包括:查詢卡槽狀態(tài)指令,上電指令,下電指令; 所述根據(jù)所述解析結(jié)果判斷指令類型,如果是查詢卡槽狀態(tài)指令時,則根據(jù)卡槽狀態(tài)標識查詢卡槽狀態(tài),并設(shè)置卡槽狀態(tài)數(shù)據(jù),將所述卡槽狀態(tài)數(shù)據(jù)作為操作結(jié)果,執(zhí)行步驟W6 ; 如果是上電指令時,則根據(jù)卡槽狀態(tài)標識判斷卡槽中是否有卡片,是則對卡槽上電,并讀取卡槽上電響應(yīng),將卡槽上電響應(yīng)作為操作結(jié)果,執(zhí)行步驟W6 ;否則生成卡槽中無卡響應(yīng),將卡槽中無卡響應(yīng)作為操作結(jié)果,執(zhí)行步驟W6 ; 如果是下電指令時,則對卡槽下電,并讀取卡槽下電響應(yīng),將卡槽下電響應(yīng)作為操作結(jié)果,執(zhí)行步驟W6。
【文檔編號】G06K7/00GK103902492SQ201410160209
【公開日】2014年7月2日 申請日期:2014年4月21日 優(yōu)先權(quán)日:2014年4月21日
【發(fā)明者】陸舟, 于華章 申請人:飛天誠信科技股份有限公司