專利名稱:一種讀卡器與上位機(jī)通信的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,特別是涉及一種讀卡器及其與上位機(jī)通信的方法。
背景技術(shù):
隨著科技的發(fā)展,移動設(shè)備的應(yīng)用越來越廣泛。由于移動設(shè)備的特殊性,各個廠家移動設(shè)備的硬件接口各不相同,目前不存在統(tǒng)一的USB接口,無法通過USB端口與不同型號的移動設(shè)備進(jìn)行通信。
發(fā)明內(nèi)容
為解決現(xiàn)有技術(shù)存在的缺陷,本發(fā)明提供了一種讀卡器與上位機(jī)通信的方法。一種讀卡器與上位機(jī)通信的方法,包括,步驟A:讀卡器系統(tǒng)初始化,打開插卡中斷和/或拔卡中斷和/或插USB中斷和/或拔USB中斷和/或藍(lán)牙連接中斷和/或藍(lán)牙斷開中斷和/或USB通信中斷和/或藍(lán)牙通
中斷;步驟B:判斷工作電壓是否低于預(yù)設(shè)值,是,提示低電壓狀態(tài),若所述低電壓狀態(tài)超過第一預(yù)設(shè)時間,則關(guān)閉所述讀卡器;否,返回步驟B ;在以上過程中還包括,當(dāng)所述讀卡器收到USB通信中斷信號時,進(jìn)入所述USB通信中斷,通過USB通道接收指令,根據(jù)收到的所述指令執(zhí)行相應(yīng)操作,并將操作結(jié)果通過所述USB通道返回給上位機(jī);和/或當(dāng)所述讀卡器收到藍(lán)牙通信中斷信號時,進(jìn)入所述藍(lán)牙通信中斷,通過藍(lán)牙通道接收指令,根據(jù)收到的所述指令執(zhí)行相應(yīng)操作,并將操作結(jié)果通過所述藍(lán)牙通道返回給所述上位機(jī);和/或當(dāng)所述讀卡器收到插USB中斷信號時,進(jìn)入所述插USB中斷,將USB通道連接標(biāo)識置位;和/或當(dāng)所述讀卡器收到拔USB中斷信號時,進(jìn)入所述拔USB中斷,將所述USB通道連接標(biāo)識復(fù)位;和/或當(dāng)所述讀卡器收到藍(lán)牙連接中斷信號時,進(jìn)入所述藍(lán)牙連接中斷,將藍(lán)牙通道連接標(biāo)識置位;和/或當(dāng)所述讀卡器收到藍(lán)牙斷開中斷信號時,進(jìn)入所述藍(lán)牙斷開中斷,將所述藍(lán)牙通道連接標(biāo)識復(fù)位;和/或當(dāng)所述讀卡器收到插卡中斷信號時,進(jìn)入所述插卡中斷,設(shè)置卡槽狀態(tài)標(biāo)識為有卡標(biāo)識;和/或當(dāng)所述讀卡器收到拔卡中斷信號時,進(jìn)入所述拔卡中斷,設(shè)置所述卡槽狀態(tài)標(biāo)識為無卡標(biāo)識。所述步驟A與步驟B之間包括:
步驟B1:讀取藍(lán)牙模塊的參數(shù),判斷是否讀取成功,是,將所述藍(lán)牙模塊切換至連接狀態(tài),執(zhí)行步驟B ;否,將USB通道標(biāo)識置位,執(zhí)行步驟B ;或者,步驟B2:讀取藍(lán)牙模塊的參數(shù),判斷是否讀取成功,是,將所述藍(lán)牙模塊切換至連接狀態(tài),執(zhí)行步驟B ;否,返回步驟B2。所述進(jìn)入所述插USB中斷,將USB通道連接標(biāo)識置位,具體包括:進(jìn)入所述插USB中斷,判斷休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,MCU被喚醒,打開USB通道使能,將所述USB通道連接標(biāo)識置位,退出所述插USB中斷;否,打開所述USB通道使能,將所述USB通道連接標(biāo)識置位,退出所述插USB中斷;所述進(jìn)入所述拔USB中斷,將所述USB通道連接標(biāo)識復(fù)位,具體包括:進(jìn)入拔USB中斷,判斷藍(lán)牙通道連接標(biāo)識是否置位,是,關(guān)閉所述USB通道使能,將所述USB通道連接標(biāo)識復(fù)位,退出所述拔USB中斷;否,關(guān)閉所述USB通道使能,將所述USB通道連接標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠,退出所述拔USB中斷;所述進(jìn)入藍(lán)牙連接中斷,將藍(lán)牙通道連接標(biāo)識置位,具體包括:進(jìn)入所述藍(lán)牙連接中斷,判斷所述休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,所述MCU被喚醒,打開藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識置位,退出所述藍(lán)牙連接中斷;否,打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,退出所述藍(lán)牙連接中斷;所述進(jìn)入所述藍(lán)牙斷開中斷,將藍(lán)牙通道連接標(biāo)識復(fù)位,具體包括:進(jìn)入所述藍(lán)牙斷開中斷,判斷所述USB通道連接標(biāo)識是否置位,是,關(guān)閉所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,退出所述藍(lán)牙斷開中斷;否,關(guān)閉所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠,退出所述藍(lán)牙斷開中斷。所述步驟B中判斷為否時返回步驟B之前,還包括步驟C,步驟C:檢測所述讀卡器與所述上位機(jī)的連接方式;如果所述讀卡器是通過USB端口與所述上位機(jī)連接,則所述讀卡器將所述USB通道連接標(biāo)識置位,返回步驟B ;如果所述讀卡器是通過藍(lán)牙模塊與上位機(jī)連接,將所述藍(lán)牙通道連接標(biāo)識置位,返回步驟B ;所述進(jìn)入所述插USB中斷,將USB通道連接標(biāo)識置位,具體包括:進(jìn)入所述插USB中斷,判斷所述休眠標(biāo)識是否置位,若所述休眠標(biāo)識置位,將所述休眠標(biāo)識復(fù)位,MCU被喚醒,打開USB通道使能,將所述USB通道連接標(biāo)識置位,關(guān)閉藍(lán)牙連接中斷使能,判斷所述藍(lán)牙通道連接標(biāo)識是否置位,若所述藍(lán)牙通道連接標(biāo)識置位,則將所述藍(lán)牙通道連接標(biāo)識復(fù)位,退出所述插USB中斷;若所述藍(lán)牙通道連接標(biāo)識未置位,則退出所述插USB中斷;若所述休眠標(biāo)識未置位,則判斷所述藍(lán)牙通道連接標(biāo)識是否置位,是,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,關(guān)閉藍(lán)牙連接中斷使能,打開所述USB通道使能,將所述USB通道連接標(biāo)識置位,退出插USB中斷;否,關(guān)閉所述藍(lán)牙連接中斷使能,所述打開USB通道使能,將所述USB通道連接標(biāo)識置位,退出所述插USB中斷;所述進(jìn)入所述拔USB中斷,將所述USB通道連接標(biāo)識復(fù)位,具體包括:進(jìn)入所述拔USB中斷,關(guān)閉所述USB通道使能,將所述USB通道連接標(biāo)識復(fù)位,打開所述藍(lán)牙連接中斷使能,將所述休眠標(biāo)識置位,所述MCU休眠,退出所述拔USB中斷;
所述進(jìn)入所述藍(lán)牙連接中斷,將藍(lán)牙通道連接標(biāo)識置位,具體包括:進(jìn)入所述藍(lán)牙連接中斷,判斷所述休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,所述MCU被喚醒,打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,退出藍(lán)牙連接中斷;否,打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,退出所述藍(lán)牙連接中斷;所述進(jìn)入所述藍(lán)牙斷開中斷,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,具體包括:進(jìn)入所述藍(lán)牙斷開中斷,關(guān)閉所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠,退出所述藍(lán)牙斷開中斷。所述步驟B中判斷為否時返回步驟B之前,還包括步驟C’,步驟C’:檢測所述讀卡器與所述上位機(jī)的連接方式;如果所述讀卡器是通過所述藍(lán)牙模塊與所述上位機(jī)連接,則所述讀卡器將所述藍(lán)牙通道連接標(biāo)識置位,返回步驟B ;如果所述讀卡器是通過所述USB端口與所述上位機(jī)連接,將所述USB通道連接標(biāo)識置位,返回步驟B ;所述進(jìn)入所述插USB中斷,將USB通道連接標(biāo)識置位,具體包括:進(jìn)入所述插USB中斷,判斷所述休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,MCU被喚醒,打開USB通道使能,將所述USB通道連接標(biāo)識置位,退出所述插USB中斷;否,打開所述USB通道使能,將所述USB通道連接標(biāo)識置位,退出所述插USB中斷;所述進(jìn)入所述拔USB中斷,將所述USB通道連接標(biāo)識復(fù)位,具體包括:進(jìn)入所述拔USB中斷,所述關(guān)閉USB通道使能,將所述USB通道連接標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠,退出所述拔USB中斷處理;所述進(jìn)入藍(lán)牙連接中斷,將藍(lán)牙通道連接標(biāo)識置位,具體包括:進(jìn)入所述藍(lán)牙連接中斷,判斷所述休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,MCU被喚醒,打開藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,關(guān)閉插USB中斷使能,退出所述藍(lán)牙連接中斷;否,判斷所述USB通道連接標(biāo)識是否置位,若所述USB通道連接標(biāo)識置位,則將所述USB通道連接標(biāo)識復(fù)位,打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,關(guān)閉所述插USB中斷使能,退出所述藍(lán)牙連接中斷;若所述USB通道連接標(biāo)識未置位,則打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,關(guān)閉所述插USB中斷使能,退出所述藍(lán)牙連接中斷;所述進(jìn)入所述藍(lán)牙斷開中斷,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,具體包括:進(jìn)入所述藍(lán)牙斷開中斷,關(guān)閉所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,打開所述插USB中斷使能,將所述休眠標(biāo)識置位,所述MCU休眠,退出所述藍(lán)牙斷開中斷。所述進(jìn)入所述插USB中斷,將USB通道連接標(biāo)識置位,具體包括:進(jìn)入所述插USB中斷,判斷所述休眠標(biāo)識是否置位,若所述休眠標(biāo)識置位,將所述休眠標(biāo)識復(fù)位,MCU被喚醒,打開USB通道使能,將所述USB通道連接標(biāo)識置位,關(guān)閉藍(lán)牙連接中斷使能,退出所述插USB中斷;若所述休眠標(biāo)識未置位,則打開所述USB通道使能,將所述USB通道連接標(biāo)識置位,關(guān)閉所述藍(lán)牙連接中斷使能,退出所述插USB中斷;所述進(jìn)入所述拔USB中斷,將所述USB通道連接標(biāo)識復(fù)位,具體包括:進(jìn)入所述拔USB中斷,關(guān)閉所述USB通道使能,將所述USB通道連接標(biāo)識復(fù)位,打開所述藍(lán)牙連接中斷使能,將所述休眠標(biāo)識置位,所述MCU休眠,退出所述拔USB中斷;所述進(jìn)入所述藍(lán)牙連接中斷,將藍(lán)牙通道連接標(biāo)識置位,具體包括,
進(jìn)入所述藍(lán)牙連接中斷,判斷所述休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,所述MCU被喚醒,打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,關(guān)閉所述插USB中斷使能,退出所述藍(lán)牙連接中斷;否,則打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,關(guān)閉所述插USB中斷使能,退出所述藍(lán)牙連接中斷;所述進(jìn)入所述藍(lán)牙斷開中斷,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,具體包括:進(jìn)入所述藍(lán)牙斷開中斷,關(guān)閉所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,打開所述插USB中斷使能,將所述休眠標(biāo)識置位,所述MCU休眠,退出所述藍(lán)牙斷開中斷。所述進(jìn)入所述插卡中斷,設(shè)置卡槽狀態(tài)標(biāo)識為有卡標(biāo)識,具體包括,進(jìn)入所述插卡中斷,判斷所述休眠標(biāo)識是否置位,若所述休眠標(biāo)識置位,則將所述休眠標(biāo)識復(fù)位,所述MCU被喚醒,設(shè)置所述卡槽狀態(tài)標(biāo)識為有卡標(biāo)識,判斷所述USB通道連接標(biāo)識是否置位,是,向INT端點(diǎn)寫入插卡響應(yīng),退出所述插卡中斷;否,退出所述插卡中斷;若所述休眠標(biāo)識未置位,設(shè)置所述卡槽狀態(tài)標(biāo)識為有卡標(biāo)識,判斷所述USB通道連接標(biāo)識是否置位,是,向所述INT端點(diǎn)寫入插卡響應(yīng),退出所述插卡中斷;否,退出所述插卡中斷;所述進(jìn)入所述拔卡中斷,設(shè)置所述卡槽狀態(tài)標(biāo)識為無卡標(biāo)識,具體包括,進(jìn)入所述拔卡中斷,設(shè)置所述卡槽狀態(tài)標(biāo)識為無卡標(biāo)識,判斷所述USB通道連接標(biāo)識是否置位,是,向所述INT端點(diǎn)寫入拔卡響應(yīng),將所述休眠標(biāo)識置位,所述MCU休眠,退出所述拔卡中斷;否,將所述休眠標(biāo)識置位,所述MCU休眠,退出所述拔卡中斷;所述步驟A還包括打開定時器中斷,當(dāng)所述讀卡器收到定時器中斷信號時,進(jìn)入所述定時器中斷,將計數(shù)清零,將所述休眠標(biāo)識置位,所述MCU休眠,退出所述定時器中斷。所述進(jìn)入所述USB通信中斷,通過所述USB通道接收指令,根據(jù)收到的所述指令執(zhí)行相應(yīng)操作,并將操作結(jié)果通過所述USB通道返回給上位機(jī),具體包括:進(jìn)入所述USB通信中斷,通過所述USB通道接收指令,解析收到的所述指令,判斷指令類型,如是查詢卡槽狀態(tài)指令,則所述讀卡器查詢卡槽狀態(tài),并設(shè)置卡槽狀態(tài)數(shù)據(jù)的預(yù)設(shè)字節(jié),將設(shè)置完的所述卡槽狀態(tài)數(shù)據(jù)通過所述USB通道返回給所述上位機(jī);如是上電指令,則所述讀卡器對所述卡槽上電,讀取上電響應(yīng),將所述上電響應(yīng)通過所述USB通道返回給所述上位機(jī);如是下電指令,則所述讀卡器對所述卡槽下電,讀取下電響應(yīng),將所述下電響應(yīng)通過所述USB通道返回給所述上位機(jī);如是操作卡片指令,則所述讀卡器將所述操作卡片指令發(fā)送給卡片,接收所述卡片返回的操作卡片響應(yīng),將所述操作卡片響應(yīng)通過所述USB通道返回給上位機(jī),如是其他命令,則執(zhí)行相應(yīng)操作;所述進(jìn)入所述藍(lán)牙通信中斷,通過藍(lán)牙通道接收指令,根據(jù)收到的所述指令執(zhí)行相應(yīng)操作,并將操作結(jié)果通過所述藍(lán)牙通道返回給所述上位機(jī),具體包括:進(jìn)入所述藍(lán)牙通信中斷,通過所述藍(lán)牙通道接收指令,解析收到的所述指令,判斷指令類型,如是查詢卡槽狀態(tài)指令,則所述讀卡器查詢卡槽狀態(tài),并設(shè)置卡槽狀態(tài)數(shù)據(jù)的預(yù)設(shè)字節(jié),將設(shè)置完的所述卡槽狀態(tài)數(shù)據(jù)通過所述藍(lán)牙通道返回給所述上位機(jī);如是上電指令,則所述讀卡器對所述卡槽上電,讀取上電響應(yīng),將所述上電響應(yīng)通過所述藍(lán)牙通道返回給所述上位機(jī);如是下電指令,則所述讀卡器對所述卡槽下電,讀取下電響應(yīng),將所述下電響應(yīng)通過所述藍(lán)牙通道返回給上位機(jī);如是操作卡片指令,則所述讀卡器將所述操作卡片指令發(fā)送給卡片,接收所述卡片返回的操作卡片響應(yīng),將所述操作卡片響應(yīng)通過所述藍(lán)牙通道返回給所述上位機(jī);如是查詢藍(lán)牙模塊參數(shù)信息指令,則所述讀卡器通過所述藍(lán)牙通道向上位機(jī)發(fā)送所述藍(lán)牙模塊的參數(shù),等待接收所述上位機(jī)下發(fā)的所述藍(lán)牙模塊的新的參數(shù),當(dāng)接收到所述新的參數(shù)后,斷開所述藍(lán)牙模塊連接,寫入所述新的參數(shù),然后將所述藍(lán)牙模塊切換為連接狀態(tài);如是其他命令,則執(zhí)行相應(yīng)操作。所述進(jìn)入所述USB通信中斷,通過USB通道接收指令,根據(jù)收到的所述指令執(zhí)行相應(yīng)操作,并將操作結(jié)果通過所述USB通道返回給上位機(jī),具體包括:進(jìn)入所述USB通信中斷,通過所述USB通道接收指令,解析收到的所述指令,判斷指令類型,如是切換通道命令,打開所述藍(lán)牙連接中斷使能;所述進(jìn)入藍(lán)牙通信中斷,進(jìn)入所述藍(lán)牙通信中斷,通過藍(lán)牙通道接收指令,根據(jù)收到的所述指令執(zhí)行相應(yīng)操作,并將操作結(jié)果通過所述藍(lán)牙通道返回給所述上位機(jī),具體包括,進(jìn)入所述藍(lán)牙通信中斷,通過所述藍(lán)牙通道接收指令,解析收到的所述指令,判斷指令類型,如是切換通道命令,打開所述插USB中斷使能;如是其他命令,則執(zhí)行相應(yīng)操作。所述藍(lán)牙模塊的參數(shù),具體包括,MAC的內(nèi)容、PIN碼和讀卡器設(shè)備名稱;所述判斷是否讀取成功,具體包括:所述讀卡器根據(jù)所述藍(lán)牙模塊的參數(shù)中的指定字節(jié)判斷是否讀取成功;如果所述藍(lán)牙模塊的參數(shù)中的指定字節(jié)的取值等于預(yù)設(shè)字節(jié),則表示讀取成功;否則,表示讀取不成功;當(dāng)所述讀卡器通過USB端口與上位機(jī)建立連接時,所述讀卡器通過所述USB端口充電。所述MCU休眠,具體包括:增加分頻數(shù)值,降低總線時鐘的頻率,MCU內(nèi)核電壓等級切換至電壓范圍為I的狀態(tài),失能第一串行通信接口、第二串行通信接口外設(shè)后,MCU休眠。步驟S1:讀卡器系統(tǒng)初始化,打開插卡中斷和/或拔卡中斷和/或插USB中斷和/或拔USB中斷和/或藍(lán)牙連接中斷和/或藍(lán)牙斷開中斷和/或定時器中斷和/或USB通信中斷和/或藍(lán)牙通信中斷;步驟S2:判斷工作電壓是否低于預(yù)設(shè)值,是,提示低電量狀態(tài),當(dāng)?shù)碗娏繝顟B(tài)超過第一預(yù)設(shè)時間時關(guān)閉所述讀卡器;否,執(zhí)行步驟S3 ;步驟S3:判斷是否存在置位的中斷標(biāo)識,如果存在置位的中斷標(biāo)識,則執(zhí)行步驟S4 ;否則,返回步驟S2 ;所述中斷標(biāo)識包括:插卡中斷標(biāo)識、拔卡中斷標(biāo)識、插USB中斷標(biāo)識、拔USB中斷標(biāo)識、藍(lán)牙連接中斷標(biāo)識、藍(lán)牙斷開中斷標(biāo)識、藍(lán)牙通信中斷標(biāo)識、USB通信中斷標(biāo)識、定時器中斷標(biāo)識;步驟S4:檢測所述置位的中斷標(biāo)識的類型;如置位的中斷標(biāo)識為所述藍(lán)牙通信中斷標(biāo)識或所述USB通信中斷標(biāo)識,則執(zhí)行步驟S5 ;如為其他中斷標(biāo)識,則根據(jù)所述置位的中斷標(biāo)識的類型執(zhí)行相應(yīng)操作,返回步驟S2 ;步驟S5:接收指令并保存所述指令對應(yīng)的通道標(biāo)識,根據(jù)所述指令的類型執(zhí)行相應(yīng)操作,向所述上位機(jī)發(fā)送相應(yīng)的響應(yīng),清除相應(yīng)的中斷標(biāo)識,返回步驟S2。當(dāng)所述讀卡器收到插卡中斷信號時,將所述插卡中斷標(biāo)識置位;
當(dāng)所述讀卡器收到拔卡中斷信號時,將所述拔卡中斷標(biāo)識置位;當(dāng)所述讀卡器收到插USB中斷信號時,將所述插USB中斷標(biāo)識置位;當(dāng)所述讀卡器收到拔USB中斷信號時,將所述拔USB中斷標(biāo)識置位;當(dāng)所述讀卡器收到藍(lán)牙連接中斷信號時,將所述藍(lán)牙連接中斷標(biāo)識置位;當(dāng)所述讀卡器收到藍(lán)牙斷開中斷信號時,將所述藍(lán)牙斷開中斷標(biāo)識置位;當(dāng)所述讀卡器收到藍(lán)牙通信中斷信號時,將所述藍(lán)牙通信中斷標(biāo)識置位;當(dāng)所述讀卡器收到USB通信中斷信號時,將所述USB通信中斷標(biāo)識置位。所述步驟S2與步驟S3之間包括,步驟S2’:讀取藍(lán)牙模塊的參數(shù),判斷是否讀取成功,是,將所述藍(lán)牙模塊切換至連接狀態(tài),執(zhí)行步驟S3 ;否,將USB通道標(biāo)識置位,執(zhí)行步驟S2 ;或者,步驟S2’’:讀取藍(lán)牙模塊的參數(shù),判斷是否讀取成功,是,將所述藍(lán)牙模塊切換至連接狀態(tài),執(zhí)行步驟S3 ;否,返回步驟32’’。所述如為其他中斷標(biāo)識,則根據(jù)所述置位的中斷標(biāo)識的類型執(zhí)行相應(yīng)操作,返回步驟S2,具體包括,如所述置位的中斷標(biāo)識為插USB中斷標(biāo)識置位,則判斷休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,MCU被喚醒,打開USB通道使能,將所述USB通道連接標(biāo)識置位,將所述插USB中斷標(biāo)識復(fù)位,返回步驟S2 ;否,打開所述USB通道使能,將是USB通道連接標(biāo)識置位,將所述插USB中斷標(biāo)識復(fù)位,返回步驟S2 ;如所述置位的中斷標(biāo)識為拔USB中斷標(biāo)識置位,則判斷所述藍(lán)牙通道連接標(biāo)識是否置位,是,關(guān)閉所述USB通道使能,將所述USB通道連接標(biāo)識復(fù)位,將所述拔USB中斷標(biāo)識復(fù)位,返回步驟S2 ;否,關(guān)閉所述USB通道使能,將所述USB通道連接標(biāo)識復(fù)位,將所述拔USB中斷標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,MCU休眠;如所述置位的中斷標(biāo)識為藍(lán)牙連接中斷標(biāo)識置位,則判斷所述休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,所述MCU被喚醒,打開藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識置位,將所述藍(lán)牙連接中斷標(biāo)識復(fù)位,返回步驟S2 ;否,打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,將所述藍(lán)牙連接中斷標(biāo)識復(fù)位,返回步驟S2 ;如所述置位的中斷標(biāo)識為藍(lán)牙斷開中斷標(biāo)識置位,則判斷所述USB通道連接標(biāo)識是否置位,是,關(guān)閉所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,將所述藍(lán)牙斷開中斷標(biāo)識復(fù)位,返回步驟S2 ;否,關(guān)閉所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,將藍(lán)牙斷開中斷標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠。所述步驟S2’與步驟S3之間或步驟S2’ ’與步驟S3之間包括步驟S3’,步驟S3’:檢測所述讀卡器與所述上位機(jī)的連接方式;如果所述讀卡器是通過所述USB端口與所述上位機(jī)連接,則所述讀卡器將USB通道連接標(biāo)識置位,執(zhí)行步驟S3 ;如果所述讀卡器是通過所述藍(lán)牙模塊與上位機(jī)連接,將所述藍(lán)牙通道連接標(biāo)識置位,執(zhí)行步驟S3 ;所述如為其他中斷標(biāo)識,則根據(jù)所述置位的中斷標(biāo)識的類型執(zhí)行相應(yīng)操作,返回步驟S2,包括,如所述置位的中斷標(biāo)識為插USB中斷標(biāo)識,則判斷休眠標(biāo)識是否置位,若所述休眠標(biāo)識置位,將所述休眠標(biāo)識復(fù)位,MCU被喚醒,打開USB通道使能,將USB通道連接標(biāo)識置位,關(guān)閉藍(lán)牙連接中斷使能,判斷藍(lán)牙通道連接標(biāo)識是否置位,若所述藍(lán)牙通道連接標(biāo)識置位,則將所述藍(lán)牙通道連接標(biāo)識復(fù)位,將所述插USB中斷標(biāo)識復(fù)位,返回步驟S2 ;若所述藍(lán)牙通道連接標(biāo)識未置位,則將所述插USB中斷標(biāo)識復(fù)位,返回步驟S2 ;若所述休眠標(biāo)識未置位,則判斷所述藍(lán)牙通道連接標(biāo)識是否置位,是,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,關(guān)閉所述藍(lán)牙連接中斷使能,打開所述USB通道使能,將所述USB通道連接標(biāo)識置位,將所述插USB中斷標(biāo)識復(fù)位,返回步驟S2 ;否,關(guān)閉所述藍(lán)牙連接中斷使能,打開所述USB通道使能,將所述USB通道連接標(biāo)識置位,將所述插USB中斷標(biāo)識復(fù)位,返回步驟S2 ;如所述置位的中斷標(biāo)識為拔USB中斷標(biāo)識,則關(guān)閉所述USB通道使能,將所述USB通道連接標(biāo)識復(fù)位,打開所述藍(lán)牙連接中斷使能,將所述拔USB中斷標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠;如所述置位的中斷標(biāo)識為藍(lán)牙連接中斷標(biāo)識,則判斷所述休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,所述MCU被喚醒,打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,將所述藍(lán)牙連接中斷標(biāo)識復(fù)位,返回步驟S2 ;否,打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,將所述藍(lán)牙連接中斷標(biāo)識復(fù)位,返回步驟S2 ;如所述置位的中斷標(biāo)識為藍(lán)牙斷開中斷標(biāo)識,則關(guān)閉所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,將所述藍(lán)牙斷開中斷標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠。所述步驟S2’與步驟S3之間或步驟S2’ ’與步驟S3之間,包括步驟S3’ ’,步驟S3’ ’:檢測所述讀卡器與所述上位機(jī)的連接方式;如果所述讀卡器是通過所述藍(lán)牙模塊與所述上位機(jī)連接,則所述讀卡器將藍(lán)牙通道連接標(biāo)識置位,執(zhí)行步驟S3 ;如果所述讀卡器是通過所述USB端口與所述上位機(jī)連接,將所述USB通道連接標(biāo)識置位,執(zhí)行步驟S3 ;所述如為其他中斷標(biāo)識,則根據(jù)所述置位的中斷標(biāo)識的類型執(zhí)行相應(yīng)操作,返回步驟S2,包括,如所述置位的中斷標(biāo)識為插USB中斷標(biāo)識置位,則判斷休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,MCU被喚醒,打開USB通道使能,將USB通道連接標(biāo)識置位,將插USB中斷標(biāo)識復(fù)位,返回步驟S2 ;否,打開所述USB通道使能,將所述USB通道連接標(biāo)識置位,將所述插USB中斷標(biāo)識復(fù)位,返回步驟S2 ;如所述置位的中斷標(biāo)識為拔USB中斷標(biāo)識,則將所述USB通道連接標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,將所述拔USB中斷標(biāo)識復(fù)位,所述MCU休眠;如所述置位的中斷標(biāo)識為藍(lán)牙連接中斷標(biāo)識,則判斷所述休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,所述MCU被喚醒,打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,關(guān)閉所述插USB中斷使能,將所述藍(lán)牙連接中斷標(biāo)識復(fù)位,返回步驟S2 ;否,判斷所述USB通道連接標(biāo)識是否置位,若所述USB通道連接標(biāo)識置位,則所述將USB通道連接標(biāo)識復(fù)位,打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,關(guān)閉所述插USB中斷使能,將所述藍(lán)牙連接中斷標(biāo)識復(fù)位,返回步驟S2 ;若所述USB通道連接標(biāo)識未置位,則打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,關(guān)閉所述插USB中斷使能,將所述藍(lán)牙連接中斷標(biāo)識復(fù)位,返回步驟S2 ;
如所述置位的中斷標(biāo)識為藍(lán)牙斷開中斷標(biāo)識,則關(guān)閉所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,打開所述插USB中斷使能,將所述藍(lán)牙斷開中斷標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠。所述如為其他中斷標(biāo)識,則根據(jù)所述置位的中斷標(biāo)識的類型執(zhí)行相應(yīng)操作,返回步驟S2,包括,如所述置位的中斷標(biāo)識為插USB中斷標(biāo)識,則判斷休眠標(biāo)識是否置位,若所述休眠標(biāo)識置位,將所述休眠標(biāo)識復(fù)位,MCU被喚醒,打開USB通道使能,將USB通道連接標(biāo)識置位,關(guān)閉藍(lán)牙連接中斷使能,將插USB中斷標(biāo)識復(fù)位,返回步驟S2 ;若所述休眠標(biāo)識未置位,則打開所述USB通道使能,將所述USB通道連接標(biāo)識置位,關(guān)閉所述藍(lán)牙連接中斷使能,將所述插USB中斷標(biāo)識復(fù)位,返回步驟S2 ;如所述置位的中斷標(biāo)識為拔USB中斷標(biāo)識,則關(guān)閉所述USB通道使能,將所述USB通道連接標(biāo)識復(fù)位,打開所述藍(lán)牙連接中斷使能,將所述拔USB中斷標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠;如所述置位的中斷標(biāo)識為藍(lán)牙連接中斷標(biāo)識,則判斷所述休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,所述MCU被喚醒,打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,關(guān)閉所述插USB中斷使能,將所述藍(lán)牙連接中斷標(biāo)識復(fù)位,返回步驟S2 ;否則打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,關(guān)閉所述插USB中斷使能,將所述藍(lán)牙連接中斷標(biāo)識復(fù)位,返回步驟S2 ;如所述置位的中斷標(biāo)識為藍(lán)牙斷開中斷標(biāo)識,則關(guān)閉所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,打開所述插USB中斷使能,將所述藍(lán)牙斷開中斷標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠。所述如為其他中斷標(biāo)識,則根據(jù)所述置位的中斷標(biāo)識的類型執(zhí)行相應(yīng)操作,返回步驟S2,還包括,如所述置位的中斷標(biāo)識為插卡中斷標(biāo)識,則判斷所述休眠標(biāo)識是否置位,若所述休眠標(biāo)識置位,則將所述休眠標(biāo)識復(fù)位,所述MCU被喚醒,設(shè)置卡槽狀態(tài)標(biāo)識為有卡標(biāo)識,判斷所述USB通道連接標(biāo)識是否置位,是,向INT端點(diǎn)寫入插卡響應(yīng),將所述插卡中斷標(biāo)識復(fù)位,返回步驟S2 ;否,將所述插卡中斷標(biāo)識復(fù)位,返回步驟S2 ;若所述休眠標(biāo)識未置位,判斷所述USB通道連接標(biāo)識是否置位,是,向所述INT端點(diǎn)寫入插卡響應(yīng),將所述插卡中斷標(biāo)識復(fù)位,返回步驟S2 ;否,將所述插卡中斷標(biāo)識復(fù)位,返回步驟S2 ;如所述置位的中斷標(biāo)識為拔卡中斷標(biāo)識,則設(shè)置所述卡槽狀態(tài)標(biāo)識為無卡標(biāo)識,判斷所述USB通道連接標(biāo)識是否置位,是,向所述INT端點(diǎn)寫入拔卡響應(yīng),將所述拔卡中斷標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠;否,將所述拔卡中斷標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠;如所述置位的中斷標(biāo)識為定時器中斷標(biāo)識,則將計數(shù)清零,將所述定時器中斷標(biāo)識復(fù)位,將休眠標(biāo)識置位,MCU休眠。所述步驟S5,具體包括,a:當(dāng)通過USB通道收到指令時,將USB通道標(biāo)識置位;當(dāng)通過藍(lán)牙通道收到指令時,將藍(lán)牙通道標(biāo)識置位;b:根據(jù)所述指令的類型執(zhí)行相應(yīng)操作,向上位機(jī)發(fā)送相應(yīng)的響應(yīng),清除相應(yīng)的中斷標(biāo)識,包括:如接收指令是查詢卡槽狀態(tài)指令,則查詢卡槽狀態(tài),并設(shè)置卡槽狀態(tài)數(shù)據(jù)的預(yù)設(shè)字節(jié),檢測當(dāng)前置位的通道標(biāo)識的類型,如是所述藍(lán)牙通道標(biāo)識,則通過所述藍(lán)牙通道向所述上位機(jī)發(fā)送所述卡槽狀態(tài)數(shù)據(jù),將所述藍(lán)牙通道標(biāo)識復(fù)位,將所述藍(lán)牙通信中斷標(biāo)識復(fù)位;如是所述USB通道標(biāo)識,則通過所述USB通道向所述上位機(jī)發(fā)送所述卡槽狀態(tài)數(shù)據(jù),將所述USB通道標(biāo)識復(fù)位,將所述USB通信中斷標(biāo)識復(fù)位;如接收指令是上電指令,則對卡槽上電,讀取上電響應(yīng),檢測當(dāng)前置位的通道標(biāo)識的類型,如是所述藍(lán)牙通道標(biāo)識,則通過所述藍(lán)牙通道向所述上位機(jī)發(fā)送所述上電響應(yīng),將所述藍(lán)牙通道標(biāo)識復(fù)位,將所述藍(lán)牙通信中斷標(biāo)識復(fù)位;如是所述USB通道標(biāo)識,則通過所述USB通道向所述上位機(jī)發(fā)送所述上電響應(yīng),將所述USB通道標(biāo)識復(fù)位,將所述USB通信中斷標(biāo)識復(fù)位;如接收指令是下電指令,則對卡槽下電,讀取下電響應(yīng),檢測當(dāng)前置位的通道標(biāo)識的類型,如是所述藍(lán)牙通道標(biāo)識,則通過所述藍(lán)牙通道向所述上位機(jī)發(fā)送所述下電響應(yīng),將所述藍(lán)牙通道標(biāo)識復(fù)位,將所述藍(lán)牙通信中斷標(biāo)識復(fù)位;如是所述USB通道標(biāo)識,則通過所述USB通道向所述上位機(jī)發(fā)送所述下電響應(yīng),將所述USB通道標(biāo)識復(fù)位,將所述USB通信中斷標(biāo)識復(fù)位;如接收指令是操作卡片指令,則將所述操作卡片指令發(fā)送給卡片,接收所述卡片返回的操作卡片響應(yīng),檢測當(dāng)前置位的通道標(biāo)識的類型,如是藍(lán)牙通道標(biāo)識,則通過所述藍(lán)牙通道向所述上位機(jī)發(fā)送所述操作卡片響應(yīng),將所述藍(lán)牙通道標(biāo)識復(fù)位,將所述藍(lán)牙通信中斷標(biāo)識復(fù)位;如是所述USB通道標(biāo)識,則通過所述USB通道向所述上位機(jī)發(fā)送所述操作卡片響應(yīng),將所述USB通道標(biāo)識復(fù)位,將所述USB通信中斷標(biāo)識復(fù)位;如接收指令是查詢藍(lán)牙模塊參數(shù)信息指令,則判斷藍(lán)牙通道標(biāo)識是否置位,是,則通過所述藍(lán)牙通道向所述上位機(jī)發(fā)送藍(lán)牙模塊的參數(shù),等待接收所述上位機(jī)下發(fā)的藍(lán)牙模塊的新的參數(shù),然后斷開所述藍(lán)牙模塊連接,并寫入新的參數(shù),將所述藍(lán)牙模塊切換為連接狀態(tài),將所述藍(lán)牙通道標(biāo)識復(fù)位,將所述藍(lán)牙通信中斷標(biāo)識復(fù)位;否,則報錯。所述步驟S5還包括,a’:當(dāng)通過USB通道收到指令時,將USB通道標(biāo)識置位;當(dāng)通過藍(lán)牙通道收到指令時,將藍(lán)牙通道標(biāo)識置位;b’:根據(jù)所述指令的類型執(zhí)行相應(yīng)操作,向得到上位機(jī)發(fā)送相應(yīng)的響應(yīng),清除相應(yīng)的中斷標(biāo)識,包括:如接收指令是切換通道指令,則檢測當(dāng)前置位的通道標(biāo)識是否為所述藍(lán)牙通道標(biāo)識,是,則關(guān)閉所述藍(lán)牙通道使能,將所述藍(lán)牙通道標(biāo)識復(fù)位,打開所述USB通道使能,并將所述USB通道標(biāo)識置位,將U所述SB通信中斷標(biāo)識復(fù)位;否,則關(guān)閉所述USB通道使能,將所述USB通道標(biāo)識復(fù)位,打開所述藍(lán)牙通道使能,并將所述藍(lán)牙通道標(biāo)識復(fù)位。所述藍(lán)牙模塊的參數(shù),具體包括,MAC的內(nèi)容、PIN碼和讀卡器設(shè)備名稱;所述判斷是否讀取成功,具體包括:所述讀卡器根據(jù)所述藍(lán)牙模塊的參數(shù)中的指定字節(jié)判斷是否讀取成功;如果所述藍(lán)牙模塊的參數(shù)中的指定字節(jié)的取值等于預(yù)設(shè)字節(jié),則表示讀取成功;否則,表示讀取不成功;當(dāng)所述讀卡器通過USB端口與上位機(jī)建立連接時,所述讀卡器通過所述USB端口充電。所述MCU休眠,具體包括:增加分頻數(shù)值,降低總線時鐘的頻率,MCU內(nèi)核電壓等級切換至電壓范圍為I的狀態(tài),失能第一串行通信接口、第二串行通信接口外設(shè)后,MCU休眠。本發(fā)明達(dá)到的有益效果:一個讀卡器,可以利用USB接口或藍(lán)牙模塊實現(xiàn)與上位機(jī)通信,并且在藍(lán)牙模塊與上位機(jī)通信過程中,可以設(shè)置藍(lán)牙模塊的參數(shù)。
圖1-1至圖1-10為本發(fā)明實施例一提供的一種讀卡器與上位機(jī)通信的方法流程圖;圖2-1至圖2-10為本發(fā)明實施例二提供的一種讀卡器與上位機(jī)通信的方法流程圖。
具體實施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式做進(jìn)一步的詳細(xì)描述。本發(fā)明所述的讀卡器可以是接觸式讀卡器也可以是非接觸式讀卡器,本發(fā)明實施方式以接觸式讀卡器為例。實施例一如圖1-1所示,本發(fā)明提供了一種讀卡器與上位機(jī)通信的方法,包括:步驟101:讀卡器系統(tǒng)初始化;本實施例中,系統(tǒng)配置處理器時鐘、定時器時鐘、IO接口、串口、USB接口 ;步驟102:打開中斷;本實施例中,讀卡器打開插卡中斷和/或拔卡中斷和/或插USB中斷和/或拔USB中斷和/或藍(lán)牙斷開中斷和/或定時器中斷和/或USB通信中斷和/或藍(lán)牙通信中斷。步驟103:判斷工作電壓是否低于預(yù)設(shè)值;是,提示低電壓狀態(tài),如低電壓狀態(tài)超過第一預(yù)設(shè)時間則關(guān)閉讀卡器;否,執(zhí)行步驟 104。本實施例中,可以通過屏幕顯示工作電壓低和/或通過變換指示燈顏色提示工作電壓低和/或通過蜂鳴提示工作電壓低和/或通過語音提示工作電壓低。第一預(yù)設(shè)時間可以為30s。步驟104:讀取藍(lán)牙模塊的參數(shù);本實施例中,讀取MAC的內(nèi)容、PIN碼和讀卡器設(shè)備名稱。步驟105:判斷是否讀取成功;是,執(zhí)行步驟106 ;否,返回步驟104。本實施例中,讀卡器從藍(lán)牙模塊中讀取藍(lán)牙模塊的參數(shù),并根據(jù)藍(lán)牙模塊的參數(shù)的最后一個字節(jié)判斷是否讀取成功。如果藍(lán)牙模塊的參數(shù)的最后一個字節(jié)是0X00,則表示讀卡器讀取藍(lán)牙模塊的參數(shù)成功;否則,讀卡器讀取藍(lán)牙模塊的參數(shù)不成功。本步驟還可以為,讀取藍(lán)牙模塊參數(shù),判斷是否讀取成功,是,執(zhí)行步驟106 ;否,位,將USB通道標(biāo)識置位,然后執(zhí)行步驟107。步驟106:把藍(lán)牙模塊切換為連接狀態(tài);本實施例中,將藍(lán)牙模塊狀態(tài)輸出引腳閉合。步驟107:判斷工作電壓是否低于預(yù)設(shè)值;是,提示低電壓狀態(tài),若低電壓狀態(tài)超過第一預(yù)設(shè)時間,則關(guān)閉讀卡器;否,等待接收中斷信號,進(jìn)入中斷執(zhí)行相應(yīng)操作,返回步驟107。本實施例中,等待接收中斷信號,進(jìn)入中斷執(zhí)行相應(yīng)操作,具體包括:如圖1-2所示,當(dāng)讀卡器的卡到位引腳為高電平時,則進(jìn)入插卡中斷,關(guān)閉中斷,清除插卡中斷標(biāo)識,判斷休眠標(biāo)識是否置位,若休眠標(biāo)識置位,則將休眠標(biāo)識復(fù)位,MCU被喚醒,設(shè)置卡槽狀態(tài)標(biāo)識為有卡標(biāo)識,判斷USB通道連接標(biāo)識是否置位,是,向INT端點(diǎn)寫入插卡響應(yīng),打開中斷,退出插卡中斷;否,打開中斷,退出插卡中斷;若休眠標(biāo)識未置位,則設(shè)置卡槽狀態(tài)標(biāo)識為有卡標(biāo)識,判斷USB通道連接標(biāo)識是否置位,是,向INT端點(diǎn)寫入插卡響應(yīng),打開中斷,退出插卡中斷;否,打開中斷,退出插卡中斷;如圖1-3所示,當(dāng)讀卡器的卡到位引腳為低電平時,進(jìn)入拔卡中斷,關(guān)閉中斷,清除拔卡中斷標(biāo)識,設(shè)置卡槽狀態(tài)標(biāo)識為無卡標(biāo)識,判斷USB通道連接標(biāo)識是否置位,是,向INT端點(diǎn)寫入拔卡響應(yīng),將休眠標(biāo)識置位,MCU休眠,打開中斷,退出拔卡中斷;否,將休眠標(biāo)識置位,MCU休眠,打開中斷,退出拔卡中斷;本實施例中,切換至休眠狀態(tài)操作具體包括:增加分頻數(shù)值,降低總線時鐘的頻率,MCU (微控制單元)內(nèi)核電壓等級切換至電壓范圍為I的狀態(tài),失能第一串行通信接口、第二串行通信接口外設(shè)后,MCU切換至休眠狀態(tài)。對于藍(lán)牙模塊,如果藍(lán)牙模塊為已連接狀態(tài),則藍(lán)牙模塊切換至定時監(jiān)聽模式;如果藍(lán)牙模塊為未連接狀態(tài)則待機(jī)。如圖1-4所示,當(dāng)讀卡器的USB供電引腳為高電平時,進(jìn)入插USB中斷處理,關(guān)閉中斷,清除插USB中斷標(biāo)識,判斷休眠標(biāo)識是否置位,是,將休眠標(biāo)識復(fù)位,MCU被喚醒,打開USB通道使能,將USB通道連接標(biāo)識置位,打開中斷,退出插USB中斷;否,打開USB通道使能,將USB通道連接標(biāo)識置位,打開中斷,退出插USB中斷;如圖1-5所示,當(dāng)讀卡器的USB供電引腳為低電平時,進(jìn)入拔USB中斷,關(guān)閉中斷,清除拔USB中斷標(biāo)識,判斷藍(lán)牙通道連接標(biāo)識是否置位,是,關(guān)閉USB通道使能,將USB通道連接標(biāo)識復(fù)位,打開中斷,退出拔USB中斷;否,關(guān)閉USB通道使能,將USB通道連接標(biāo)識復(fù)位,將休眠標(biāo)識置位,MCU休眠,打開中斷,退出拔USB中斷;如圖1-6所示,當(dāng)藍(lán)牙模塊狀態(tài)輸出引腳電平變?yōu)楦唠娖綍r,進(jìn)入藍(lán)牙連接中斷,關(guān)閉中斷,清除藍(lán)牙連接中斷標(biāo)識,判斷休眠標(biāo)識是否置位,是,將休眠標(biāo)識復(fù)位,MCU被喚醒,打開藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識置位,打開中斷,退出藍(lán)牙連接中斷;否,打開藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識置位,打開中斷,退出藍(lán)牙連接中斷;如圖1-7所示,當(dāng)藍(lán)牙模塊狀態(tài)輸出引腳電平變?yōu)榈碗娖綍r,進(jìn)入藍(lán)牙斷開中斷,關(guān)閉中斷,清除藍(lán)牙斷開中斷標(biāo)識,判斷USB通道連接標(biāo)識是否置位,是,關(guān)閉藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識復(fù)位,打開中斷,退出藍(lán)牙斷開中斷;否,關(guān)閉藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識復(fù)位,將休眠標(biāo)識置位,MCU休眠,打開中斷,退出藍(lán)牙斷開中斷;
如圖1-8所示,當(dāng)讀卡器收到定時器觸發(fā)時,進(jìn)入定時器中斷,關(guān)閉中斷,清除定時器中斷標(biāo)識,計數(shù)清零,休眠標(biāo)識置位,打開中斷,退出定時器中斷;如圖1-9所示,當(dāng)讀卡器通過USB通道接收到指令時,進(jìn)入USB通信中斷,具體操作如下:步驟108-1:關(guān)閉中斷;步驟109-1:清除中斷;本實施例中,具體的清除USB通信中斷標(biāo)識;步驟110-1:解析收到的指令,判斷指令類型;本實施例中,根據(jù)指令的第一字節(jié)的值判斷指令類型。如果指令的第一字節(jié)為0X65,則該指令為查詢卡槽狀態(tài)指令,執(zhí)行步驟111-1 ;如果指令的弟一子節(jié)為0X62,則該指令為上電指令,執(zhí)彳丁步驟113-1 ;如果指令的第一字節(jié)為0X63,則該指令為下電指令,執(zhí)行步驟116-1 ;如果指令的第一字節(jié)為0X6f,則該指令為操作卡片指令,執(zhí)行步驟119-1 ;如果接收到其他指令,則執(zhí)行相應(yīng)操作,然后打開中斷,退出USB通信中斷;步驟111-1:查詢卡槽狀態(tài),并設(shè)置卡槽狀態(tài)數(shù)據(jù)的預(yù)設(shè)字節(jié);本實施例中,根據(jù)IO接口的狀態(tài)判斷卡槽狀態(tài)。如果IO接口為高電平,則表示是無卡狀態(tài),將卡槽狀態(tài)數(shù)據(jù)的預(yù)設(shè)字節(jié)設(shè)置為0X02 ;如果IO接口為低電平且指定的標(biāo)識位為0,則表示是有卡已激活狀態(tài),將卡槽狀態(tài)數(shù)據(jù)的預(yù)設(shè)字節(jié)設(shè)置為0X00 ;如果IO接口為低電平且指定的標(biāo)識位為1,則表示是有卡未激活狀態(tài),將卡槽狀態(tài)數(shù)據(jù)的預(yù)設(shè)字節(jié)設(shè)置為0X01??ú蹱顟B(tài)數(shù)據(jù)的預(yù)設(shè)字節(jié)可以為第八字節(jié)。步驟112-1:通過USB通道向上位機(jī)發(fā)送卡槽狀態(tài)數(shù)據(jù),然后打開中斷,退出USB通信中斷;步驟113-1:判斷是否有卡片,是,對卡槽上電,然后執(zhí)行步驟114-1 ;否,向上位機(jī)發(fā)送無卡響應(yīng),然后打開中斷,退出USB通信中斷;本實施例中,查詢卡槽狀態(tài)標(biāo)識,如是有卡標(biāo)識則表示有卡片;否則表示無卡片。步驟114-1:讀取上電響應(yīng);本實施例中,讀取包含卡片信息的上電響應(yīng),例如:800c00000000120000003bf095000081blfe9alf0729 ;步驟115-1:通過USB通道向上位機(jī)發(fā)送上電響應(yīng),然后打開中斷,退出USB通信中斷;步驟116-1:對卡槽下電;步驟117-1:讀取下電響應(yīng);本實施例中,下電響應(yīng)的第一字節(jié)為0X81,例如:81000000000004010000。步驟118-1:通過USB通道向上位機(jī)發(fā)送下電響應(yīng),然后打開中斷,退出USB通信中斷;步驟119-1:將操作卡片指令發(fā)送給卡片;
本實施例中,讀卡器將接收到的操作卡片指令不做任何處理直接發(fā)送給卡片。步驟120-1:接收卡片返回的操作卡片響應(yīng);本實施例中,接收卡片返回第一字節(jié)為0X80的操作卡片響應(yīng)。例如:8005000000001800000000el01f010 ;步驟121-1:通過USB通道向上位機(jī)發(fā)送操作卡片響應(yīng),然后打開中斷,退出USB通信中斷。如圖1-10所示,當(dāng)讀卡器通過藍(lán)牙通道收到指令時,進(jìn)入藍(lán)牙通信中斷,具體操作如下:步驟108-2:關(guān)閉中斷;步驟109-2:清除中斷;本實施例中,具體清除藍(lán)牙通信中斷標(biāo)識。步驟110-2:解析收到的指令,判斷指令類型;本實施例中,具體判斷方法與步驟110-1相同,如果該指令為查詢卡槽狀態(tài)指令,執(zhí)行步驟111-2 ;如果該指令為上電指令,執(zhí)行步驟113-2 ;如果該指令為下電指令,執(zhí)行步驟116-2 ;如果該指令為操作卡片指令,執(zhí)行步驟119-2 ;如果接收到第一字節(jié)為0X5A、第四字節(jié)為0X61,則該指令為查詢藍(lán)牙模塊的參數(shù)信息指令,執(zhí)行步驟122-2 ;如果該指令為其他指令,則執(zhí)行相應(yīng)操作,打開中斷,退出藍(lán)牙通信中斷。步驟111-2:查詢卡槽狀態(tài),并設(shè)置卡槽狀態(tài)數(shù)據(jù)的預(yù)設(shè)字節(jié);本實施例中,具體操作與步驟111-1相同。步驟112-2:通過藍(lán)牙通道向上位機(jī)發(fā)送卡槽狀態(tài)數(shù)據(jù),然后打開中斷,退出藍(lán)牙通信中斷;步驟113-2:判斷是否有卡片,是,對卡槽上電,然后執(zhí)行步驟114-2 ;否,向上位機(jī)發(fā)送無卡響應(yīng),然后打開中斷,退出藍(lán)牙通信中斷;本實施例中,查詢卡槽狀態(tài)標(biāo)識,如是有卡標(biāo)識則表示有卡片;否則表示無卡片;步驟114-2:讀取上電響應(yīng);本實施例中,具體操作與步驟114-1相同。步驟115-2:通過藍(lán)牙通道向上位機(jī)發(fā)送上電響應(yīng),然后打開中斷,退出藍(lán)牙通信中斷;步驟116-2:對卡槽下電;步驟117-2:讀取下電響應(yīng);本實施例中,具體操作與步驟117-1相同。步驟118-2:通過藍(lán)牙通道向上位機(jī)發(fā)送下電響應(yīng),然后打開中斷,退出藍(lán)牙通信中斷;步驟119-2:將操作卡片指令發(fā)送給卡片;本實施例中,讀卡器將接收到的操作卡片指令不做任何處理直接發(fā)送給卡片。步驟120-2:接收卡片返回的操作卡片響應(yīng);
本實施例中,具體操作與步驟120-1相同;步驟121-2:通過藍(lán)牙通道向上位機(jī)發(fā)送操作卡片響應(yīng),然后打開中斷,退出藍(lán)牙通信中斷;步驟122-2:通過藍(lán)牙通道向上位機(jī)發(fā)送藍(lán)牙模塊的參數(shù); 本實施例中,具體的向上位機(jī)發(fā)送第一字節(jié)為0XA5、第四字節(jié)為0X62、包含MAC內(nèi)容、讀卡器設(shè)備名稱以及PIN碼的藍(lán)牙模塊的參數(shù)。步驟123-2:接收藍(lán)牙模塊的新的參數(shù);步驟124-2:斷開藍(lán)牙模塊連接,并寫入新的參數(shù),然后將藍(lán)牙模塊切換為連接狀態(tài),然后打開中斷,退出藍(lán)牙通信中斷。需要說明的是,在本發(fā)明實施方式的步驟107中,返回步驟107之前還包括步驟107,,步驟107’:檢測讀卡器與上位機(jī)的連接方式;如果是通過所述USB端口與所述上位機(jī)連接,則所述讀卡器將USB通道連接標(biāo)識置位,返回步驟107 ;如果是通過所述藍(lán)牙模塊與上位機(jī)連接,將藍(lán)牙通道連接標(biāo)識置位,返回步驟107 ;相應(yīng)的,將當(dāng)讀卡器的USB供電引腳為高電平時,進(jìn)入插USB中斷,還包括,當(dāng)所述讀卡器的USB供電引腳變?yōu)楦唠娖綍r,進(jìn)入插USB中斷,關(guān)閉中斷,清除插USB中斷標(biāo)識,判斷休眠標(biāo)識是否置位,若休眠標(biāo)識置位,將休眠標(biāo)識復(fù)位,MCU被喚醒,打開USB通道使能,將USB通道連接標(biāo)識置位,判斷藍(lán)牙通道連接標(biāo)識是否置位,若藍(lán)牙通道連接標(biāo)識置位,則將藍(lán)牙通道連接標(biāo)識復(fù)位,退出插USB中斷處理,打開中斷,關(guān)閉藍(lán)牙連接中斷使能,退出插USB中斷處理;若藍(lán)牙通道連接標(biāo)識未置位,則打開中斷,關(guān)閉藍(lán)牙連接中斷使能,退出插USB中斷;若休眠標(biāo)識未置位,則判斷藍(lán)牙通道連接標(biāo)識是否置位,是,將藍(lán)牙通道連接標(biāo)識復(fù)位,打開USB通道使能,將USB通道連接標(biāo)識置位,打開中斷,關(guān)閉藍(lán)牙連接中斷使能,退出插USB中斷;否,將USB通道連接標(biāo)識置位,打開中斷,關(guān)閉藍(lán)牙連接中斷使能,退出插USB中斷;當(dāng)讀卡器的USB供電引腳為低電平時,進(jìn)入拔USB中斷,還包括,進(jìn)入拔USB中斷,關(guān)閉中斷,清除拔USB中斷標(biāo)識,關(guān)閉USB通道使能,將USB通道連接標(biāo)識復(fù)位,將休眠標(biāo)識置位,MCU休眠,打開中斷,所述打開中斷須確保打開藍(lán)牙連接中斷使能,退出拔USB中斷;當(dāng)藍(lán)牙模塊狀態(tài)輸出引腳電平變?yōu)楦唠娖綍r,進(jìn)入藍(lán)牙連接中斷,還包括,進(jìn)入藍(lán)牙連接中斷,關(guān)閉中斷,清除藍(lán)牙連接中斷標(biāo)識,判斷休眠標(biāo)識是否置位,是,將休眠標(biāo)識復(fù)位,MCU被喚醒,打開藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識置位,打開中斷,退出藍(lán)牙連接中斷;否,打開藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識置位,打開中斷,退出藍(lán)牙連接中斷;當(dāng)藍(lán)牙模塊狀態(tài)輸出引腳電平變?yōu)榈碗娖綍r,進(jìn)入藍(lán)牙斷開中斷,還包括,進(jìn)入藍(lán)牙斷開中斷,關(guān)閉中斷,清除藍(lán)牙斷開中斷標(biāo)識,關(guān)閉藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識復(fù)位,將休眠標(biāo)識置位,MCU休眠,打開中斷,退出藍(lán)牙斷開中斷。上述實施方式同樣可以實現(xiàn)本發(fā)明目的。需要說明的是,在本發(fā)明實施方式的所述步驟107中返回步驟107之前還包括步驟 107,,,步驟107’ ’:檢測讀卡器與上位機(jī)的連接方式,如果是通過所述藍(lán)牙模塊與所述上位機(jī)連接,則所述讀卡器將藍(lán)牙通道連接標(biāo)識置位,返回步驟107 ;如果通過是所述USB端口與上位機(jī)連接,將USB通道連接標(biāo)識置位,返回步驟107 ;相應(yīng)的,將當(dāng)讀卡器的USB供電引腳為低電平時,進(jìn)入拔USB中斷處理,具體包括,當(dāng)所述讀卡器的USB供電引腳變?yōu)榈碗娖綍r,進(jìn)入拔USB中斷,關(guān)閉中斷,清除拔USB中斷標(biāo)識,關(guān)閉USB通道使能,將USB通道連接標(biāo)識復(fù)位,將休眠標(biāo)識置位,MCU休眠,打開中斷,退出拔USB中斷;當(dāng)藍(lán)牙模塊狀態(tài)輸出引腳電平變?yōu)楦唠娖綍r,進(jìn)入藍(lán)牙連接中斷,具體包括,當(dāng)藍(lán)牙模塊狀態(tài)輸出引腳電平變?yōu)楦唠娖綍r,進(jìn)入藍(lán)牙連接中斷,關(guān)閉中斷,清除藍(lán)牙連接中斷標(biāo)識,判斷休眠標(biāo)識是否置位,是,將休眠標(biāo)識復(fù)位,MCU被喚醒,打開藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識置位,打開中斷,關(guān)閉插USB中斷使能,退出藍(lán)牙連接中斷;否,判斷USB通道連接標(biāo)識是否置位,若USB通道連接標(biāo)識置位,則將USB通道連接標(biāo)識復(fù)位,打開藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識置位,打開中斷,關(guān)閉插USB中斷使能,退出藍(lán)牙連接中斷;若USB通道連接標(biāo)識未置位,則打開藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識置位,打開中斷,關(guān)閉插USB中斷使能,退出藍(lán)牙連接中斷;當(dāng)藍(lán)牙模塊狀態(tài)輸出引腳電平變?yōu)榈碗娖綍r,進(jìn)入藍(lán)牙斷開中斷,還包括,當(dāng)藍(lán)牙模塊狀態(tài)輸出引腳變?yōu)榈碗娖綍r,進(jìn)入藍(lán)牙斷開中斷,關(guān)閉中斷,清除藍(lán)牙斷開中斷標(biāo)識,關(guān)閉藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識復(fù)位,打開中斷,所述打開中斷須確保打開插USB中斷使能,將休眠標(biāo)識置位,MCU休眠,退出藍(lán)牙斷開中斷;上述實施方式同樣可以實現(xiàn)本發(fā)明目的。需要說明的是,在本發(fā)明的實施方式中,步驟110-1中還包括切換通道指令,如是切換通道指令,則關(guān)閉USB通道使能,打開藍(lán)牙連接中斷使能。步驟110-2中還包括切換通道指令,如是切換通道指令,則關(guān)閉藍(lán)牙通道使能,打開插USB中斷使能。當(dāng)所述讀卡器的USB供電引腳變?yōu)楦唠娖綍r,進(jìn)入插USB中斷,具體包括,當(dāng)所述讀卡器的USB供電引腳變?yōu)楦唠娖綍r,進(jìn)入插USB中斷,關(guān)閉中斷,清除插USB中斷標(biāo)識,判斷休眠標(biāo)識是否置位,若休眠標(biāo)識置位,將休眠標(biāo)識復(fù)位,MCU被喚醒,打開USB通道使能,將USB通道連接標(biāo)識置位,打開中斷,關(guān)閉藍(lán)牙連接中斷使能,退出插USB中斷;若休眠標(biāo)識未置位,則打開USB通道使能,將USB通道連接標(biāo)識置位,打開中斷,關(guān)閉藍(lán)牙連接中斷使能,退出插USB中斷;當(dāng)所述讀卡器的USB供電引腳變?yōu)榈碗娖綍r,進(jìn)入拔USB中斷,具體包括,當(dāng)所述讀卡器的USB供電引腳變?yōu)榈碗娖綍r,進(jìn)入拔USB中斷,關(guān)閉中斷,清除拔USB中斷標(biāo)識,關(guān)閉USB通道使能,將USB通道連接標(biāo)識復(fù)位,將休眠標(biāo)識置位,MCU休眠,打開中斷,所述打開中斷須確保打開藍(lán)牙連接中斷使能,退出拔USB中斷;當(dāng)藍(lán)牙模塊狀態(tài)輸出引腳變?yōu)楦唠娖綍r,進(jìn)入藍(lán)牙連接中斷,具體包括,當(dāng)藍(lán)牙模塊狀態(tài)輸出引腳變?yōu)楦唠娖綍r,進(jìn)入藍(lán)牙連接中斷,關(guān)閉中斷,清除藍(lán)牙連接中斷標(biāo)識,判斷休眠標(biāo)識是否置位,是,將休眠標(biāo)識復(fù)位,MCU被喚醒,打開藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識置位,打開中斷,關(guān)閉插USB中斷使能,退出藍(lán)牙連接中斷;否,則打開藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識置位,打開中斷,關(guān)閉插USB中斷使能,退出藍(lán)牙連接中斷;當(dāng)藍(lán)牙模塊狀態(tài)輸出引腳變?yōu)榈碗娖綍r,進(jìn)入藍(lán)牙斷開中斷,具體包括,當(dāng)藍(lán)牙模塊狀態(tài)輸出引腳變?yōu)榈碗娖綍r,進(jìn)入藍(lán)牙斷開中斷,關(guān)閉中斷,清除藍(lán)牙斷開中斷標(biāo)識,關(guān)閉藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識復(fù)位,將休眠標(biāo)識置位,MCU休眠,打開中斷,所述打開中斷須確保,打開插USB中斷使能,退出藍(lán)牙斷開中斷。上述實施方式同樣可以實現(xiàn)本發(fā)明目的。在本發(fā)明的實施方式中,判斷工作電壓是否低于預(yù)設(shè)值的操作可以在系統(tǒng)初始化之后接收指令之前執(zhí)行,還可以定時執(zhí)行。需要說明的是,本方案仍適用于非接觸式讀卡器,當(dāng)非接觸式讀卡器切換至休眠狀態(tài),當(dāng)有卡片時,調(diào)整非接觸控制芯片的輸出阻抗至閾值。當(dāng)沒有卡片時,則調(diào)整非接觸控制芯片的開關(guān)場寄存器,關(guān)閉非接觸場。相應(yīng)的,當(dāng)非接觸式讀卡器芯片確定特定引腳上的電容值大于芯片中的電感應(yīng)閾值時,向MCU的特定中斷引腳輸出高電平,觸發(fā)外部中斷,MCU被喚醒。當(dāng)非接觸式讀卡器接收到第一字節(jié)的值為0X62的指令時,執(zhí)行開場操作;當(dāng)非接觸式讀卡器收到第一字節(jié)的值為0X63的指令時,執(zhí)行關(guān)場操作。實施例二如圖2-1所示,本發(fā)明提供了一種讀卡器與上位機(jī)通信的方法,包括:步驟201:讀卡器系統(tǒng)初始化,打開中斷;本實施例中,系統(tǒng)配置處理器時鐘、定時器時鐘、IO接口、串口、USB接口 ;讀卡器打開插卡中斷和/或拔卡中斷和/或插USB中斷和/或拔USB中斷和/或藍(lán)牙連接中斷和/或藍(lán)牙斷開中斷和/或定時器中斷和/或USB通信中斷和/或藍(lán)牙通信中斷;如圖2-2所示,當(dāng)卡到位檢測引腳閉合時,進(jìn)入插卡中斷,關(guān)閉中斷,清除中斷,將插卡中斷標(biāo)識置位,然后打開中斷,退出;如圖2-3所示,當(dāng)卡到位檢測引腳斷開時,進(jìn)入拔卡中斷,關(guān)閉中斷,清除中斷,將拔卡中斷標(biāo)識置位,然后打開中斷,退出;如圖2-4所示,當(dāng)USB供電引腳閉合時,進(jìn)入插USB中斷,關(guān)閉中斷,清除中斷,將插USB中斷標(biāo)識置位,打開中斷,退出;如圖2-5所示,當(dāng)USB供電引腳斷開時,進(jìn)入拔USB中斷,關(guān)閉中斷,清除中斷,將拔USB中斷標(biāo)識置位,打開中斷,退出;如圖2-6所示,當(dāng)藍(lán)牙模塊狀態(tài)輸出引腳閉合時,進(jìn)入藍(lán)牙連接中斷,關(guān)閉中斷,清除中斷,將藍(lán)牙連接中斷標(biāo)識置位,打開中斷,退出;如圖2-7所示,當(dāng)藍(lán)牙模塊狀態(tài)輸出引腳斷開時,進(jìn)入藍(lán)牙斷開中斷,關(guān)閉中斷,清除中斷,將藍(lán)牙斷開中斷標(biāo)識置位,打開中斷,退出;如圖2-8所示,當(dāng)超過預(yù)設(shè)計數(shù)時,進(jìn)入定時器中斷,關(guān)閉中斷,清除中斷,計數(shù)清零,將定時器中斷標(biāo)識置位,打開中斷,退出;如圖2-9所示,當(dāng)通過藍(lán)牙接收到指令時,進(jìn)入藍(lán)牙通信中斷,關(guān)閉中斷,清除中斷,將藍(lán)牙通信中斷標(biāo)識置位,打開中斷,退出;如圖2-10所示,當(dāng)通過USB通道接收到指令時,進(jìn)入USB通信中斷,關(guān)閉中斷,清除中斷,將USB通信中斷標(biāo)識置位,打開中斷,退出。步驟202:判斷工作電壓是否低于預(yù)設(shè)值;是,提示低電壓狀態(tài),若低電壓狀態(tài)超過第一預(yù)設(shè)時間,則關(guān)閉讀卡器;否,執(zhí)行步驟 203。本實施例中,可以通過屏幕顯示或者通過變換指示燈顏色或者通過蜂鳴或者語音播報提示低電壓狀態(tài)。第一預(yù)設(shè)時間可以為30s。步驟203:讀取藍(lán)牙模塊的參數(shù);本實施例中,讀取MAC的內(nèi)容、PIN碼和讀卡器設(shè)備名稱。步驟204:判斷是否讀取成功;是,執(zhí)行步驟205 ;否,返回步驟203。本實施例中,讀卡器從藍(lán)牙模塊中讀取藍(lán)牙模塊的參數(shù),并根據(jù)藍(lán)牙模塊的參數(shù)的最后一個字節(jié)判斷是否讀取成功。如果藍(lán)牙模塊的參數(shù)的最后一個字節(jié)是0X00,則表示讀卡器讀取成功;否則,表示讀卡器讀取不成功。步驟205:把藍(lán)牙模塊切換為連接狀態(tài);步驟206:判斷工作電壓是否低于預(yù)設(shè)值;是,提示低電壓狀態(tài),若低電壓狀態(tài)超過第一預(yù)設(shè)時間,則關(guān)閉讀卡器;否,執(zhí)行步驟 207。步驟207:判斷是否存在置位的中斷標(biāo)識;是,執(zhí)行步驟208 ;否,返回步驟206。步驟208:判斷置位的中斷標(biāo)識類型,如是藍(lán)牙通信中斷標(biāo)識或USB通信中斷標(biāo)識,則執(zhí)行步驟209 ;如是其他中斷標(biāo)識,則執(zhí)行相應(yīng)操作,清除中斷標(biāo)識。其他中斷標(biāo)識包括,插卡中斷標(biāo)識,拔卡中斷標(biāo)識,定時器中斷標(biāo)識、插USB中斷標(biāo)識、藍(lán)牙連接中斷標(biāo)識、藍(lán)牙斷開中斷標(biāo)識、拔USB中斷標(biāo)識;如是插卡中斷標(biāo)識,則判斷休眠標(biāo)識是否置位,若休眠標(biāo)識置位,則將休眠標(biāo)識復(fù)位,MCU被喚醒,設(shè)置卡槽狀態(tài)標(biāo)識為有卡標(biāo)識,判斷USB通道連接標(biāo)識是否置位,是,向INT端點(diǎn)寫入插卡響應(yīng),清除中斷標(biāo)識,返回步驟206 ;否,清除中斷標(biāo)識,返回步驟206 ;若休眠標(biāo)識未置位,判斷USB通道連接標(biāo)識是否置位,是,向INT端點(diǎn)寫入插卡響應(yīng),清除中斷標(biāo)識,返回步驟206 ;否,清除中斷標(biāo)識,返回步驟206 ;其中,清除中斷標(biāo)識,具體為將插卡中斷標(biāo)識復(fù)位;如是拔卡中斷標(biāo)識,則設(shè)置卡槽狀態(tài)標(biāo)識為無卡標(biāo)識,判斷USB通道連接標(biāo)識是否置位,是,向INT端點(diǎn)寫入拔卡響應(yīng),將休眠標(biāo)識置位,MCU休眠,清除中斷標(biāo)識,等待喚醒;否,將休眠標(biāo)識置位,MCU休眠,清除中斷標(biāo)識,等待喚醒;其中,清除中斷標(biāo)識具體為,將拔卡中斷標(biāo)識復(fù)位。如是定時器中斷標(biāo)識,則將計數(shù)清零,將休眠標(biāo)識置位,MCU休眠,清除中斷標(biāo)識,等待喚醒;其中,清除中斷標(biāo)識具體為,將定時器中斷標(biāo)識復(fù)位。如是插USB中斷標(biāo)識,則執(zhí)行步驟A ;如是藍(lán)牙連接中斷標(biāo)識,則執(zhí)行步驟B ;如是藍(lán)牙斷開中斷標(biāo)識,則執(zhí)行步驟C ;如是拔USB中斷標(biāo)識,則執(zhí)行步驟D ;
步驟A:判斷休眠標(biāo)識是否置位,是,將休眠標(biāo)識復(fù)位,MCU被喚醒,打開USB通道使能,將USB通道連接標(biāo)識置位,清除中斷標(biāo)識,返回步驟206 ;否,打開USB通道使能,將USB通道連接標(biāo)識置位,清除中斷標(biāo)識,返回步驟206 ;其中,清除中斷標(biāo)識具體為,將插USB中斷標(biāo)識復(fù)位;步驟B:判斷休眠標(biāo)識是否置位,是,將休眠標(biāo)識復(fù)位,MCU被喚醒,打開藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識置位,清除中斷標(biāo)識,返回步驟206 ;否,打開藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識置位,清除中斷標(biāo)識,返回步驟206 ;其中,清除中斷標(biāo)識具體為,將藍(lán)牙連接中斷標(biāo)識復(fù)位;步驟C:判斷USB通道連接標(biāo)識是否置位,是,關(guān)閉藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識復(fù)位,清除中斷標(biāo)識,返回步驟206 ;否,關(guān)閉藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識復(fù)位,將休眠標(biāo)識置位,MCU休眠,清除中斷標(biāo)識,等待喚醒,其中,清除中斷標(biāo)識具體為,將藍(lán)牙斷開中斷標(biāo)識復(fù)位。步驟D:判斷藍(lán)牙通道連接標(biāo)識是否置位,是,關(guān)閉USB通道使能,將USB通道連接標(biāo)識復(fù)位,清除中斷標(biāo)識,返回步驟206 ;否,關(guān)閉USB通道使能,將USB通道連接標(biāo)識復(fù)位,將休眠標(biāo)識置位,MCU休眠,清除中斷標(biāo)識,等待喚醒,其中,清除中斷標(biāo)識具體為,將拔USB中斷標(biāo)識復(fù)位;本實施例中,MCU被喚醒,具體包括:降低分頻數(shù)值,升高總線時鐘的頻率,MCU內(nèi)核電壓等級恢復(fù)至正常工作的狀態(tài),使能第一串行通信接口、第二串行通信接口外設(shè)后,MCU被喚醒。切換至休眠狀態(tài)操作具體包括:增加分頻數(shù)值,降低總線時鐘的頻率,MCU內(nèi)核電壓等級切換至電壓范圍為I的狀態(tài),失能第一串行通信接口、第二串行通信接口外設(shè)后,MCU切換至休眠狀態(tài)。步驟209:接收指令并保存通道標(biāo)識;本實施例中,當(dāng)讀卡器收到指令完成標(biāo)識符時,完成接收指令;如果通過USB通道接收指令,則通道標(biāo)識保存為I;如果通過藍(lán)牙通道接收指令,則通道標(biāo)識保存為O。步驟210:判斷指令類型;根據(jù)指令的第一字節(jié)的值判斷指令類型。如果指令的第一字節(jié)為0X65,則該指令為查詢卡槽狀態(tài)指令,執(zhí)行步驟211 ;如果指令的第一字節(jié)為0X62,則該指令為上電指令,執(zhí)行步驟215 ;如果指令的第一字節(jié)為0X63,則該指令為下電指令,執(zhí)行步驟220 ;如果指令的第一字節(jié)為0X6f,則該指令為操作卡片指令,執(zhí)行步驟225 ;如果接收到第一字節(jié)為0X5A、第四字節(jié)為0X61,則該指令為查詢藍(lán)牙模塊的參數(shù)信息指令,執(zhí)行步驟230 ;步驟211:查詢卡槽狀態(tài),并設(shè)置卡槽狀態(tài)數(shù)據(jù)的預(yù)設(shè)字節(jié);本實施例中,根據(jù)IO接口的狀態(tài)判斷卡槽狀態(tài)。如果IO接口為高電平,則表示是無卡狀態(tài),將卡槽狀態(tài)數(shù)據(jù)的預(yù)設(shè)字節(jié)設(shè)置為0X02 ; 如果IO接口為低電平且指定的標(biāo)識位為0,則表示是有卡已激活狀態(tài),將卡槽狀態(tài)數(shù)據(jù)的預(yù)設(shè)字節(jié)設(shè)置為0X00 ;
如果IO接口為低電平且指定的標(biāo)識位為1,則表示是有卡未激活狀態(tài),將卡槽狀態(tài)數(shù)據(jù)的預(yù)設(shè)字節(jié)設(shè)置為0X01??ú蹱顟B(tài)數(shù)據(jù)的預(yù)設(shè)字節(jié)可以為第八字節(jié)。步驟212:判斷通道標(biāo)識是否為I ;是,執(zhí)行步驟214 ;否,執(zhí)行步驟213。步驟213:通過藍(lán)牙通道向上位機(jī)發(fā)送卡槽狀態(tài)數(shù)據(jù),然后清除中斷標(biāo)識,然后返回步驟206 ;本實施例中,清除中斷標(biāo)識具體為,將藍(lán)牙通信中斷標(biāo)識復(fù)位。步驟214:通過USB通道向上位機(jī)發(fā)送卡槽狀態(tài)數(shù)據(jù),然后清除中斷標(biāo)識,然后返回步驟206 ;本實施例中,清除中斷標(biāo)識具體為,將USB通信中斷標(biāo)識復(fù)位。步驟215:判斷是否有卡片,是,對卡槽上電,然后執(zhí)行步驟216;否,向上位機(jī)發(fā)送無卡響應(yīng),然后清除中斷標(biāo)識,返回步驟206 ;本實施例中,查詢卡槽狀態(tài)標(biāo)識,如是有卡標(biāo)識則表示有卡片;否則表示無卡片;步驟216:讀取上電響應(yīng);本實施例中,讀取包含卡片信息的上電響應(yīng),例如:800c00000000120000003bf095000081blfe9alf0729 ;步驟217:判斷通道標(biāo)識是否為I ;是,執(zhí)行步驟219 ;否,執(zhí)行步驟218。步驟218:通過藍(lán)牙通道向上位機(jī)發(fā)送上電響應(yīng),然后清除中斷標(biāo)識,然后返回步驟 206 ;本實施例中,清除中斷標(biāo)識具體為,將藍(lán)牙通信中斷標(biāo)識復(fù)位。步驟219:通過USB通道向上位機(jī)發(fā)送上電響應(yīng),然后清除中斷標(biāo)識,然后返回步驟 206 ;本實施例中,清除中斷標(biāo)識具體為,將USB通信中斷標(biāo)識復(fù)位。步驟220:對卡槽下電;步驟221:讀取下電響應(yīng);本實施例中,下電響應(yīng)的第一字節(jié)為0X81,例如:81000000000004010000。步驟222:判斷通道標(biāo)識是否為I ;是,執(zhí)行步驟224 ;否,執(zhí)行步驟223。步驟223:通過藍(lán)牙通道向上位機(jī)發(fā)送下電響應(yīng),然后清除中斷標(biāo)識,然后返回步驟 206 ;本實施例中,清除中斷標(biāo)識具體為,將藍(lán)牙通信中斷標(biāo)識復(fù)位。步驟224:通過USB通道向上位機(jī)發(fā)送下電響應(yīng),然后清除中斷標(biāo)識,然后返回步驟 206 ;本實施例中,清除中斷標(biāo)識具體為,將USB通信中斷標(biāo)識復(fù)位。步驟225:將操作卡片指令發(fā)送給卡片;本實施例中,讀卡器將接收到的操作卡片指令不做任何處理直接發(fā)送給卡片。步驟226:接收卡片返回的操作卡片響應(yīng);
本實施例中,接收卡片返回第一字節(jié)為0X80的操作卡片響應(yīng)。例如:8005000000001800000000el01f010 ;步驟227:判斷通道標(biāo)識是否為I ;是,執(zhí)行步驟228 ;否,執(zhí)行步驟225。步驟228:通過藍(lán)牙通道向上位機(jī)發(fā)送操作卡片響應(yīng),然后清除中斷標(biāo)識,然后返回步驟206 ;本實施例中,清除中斷標(biāo)識具體為,將藍(lán)牙通信中斷標(biāo)識復(fù)位。步驟229:通過USB通道向上位機(jī)發(fā)送操作卡片響應(yīng),然后清除中斷標(biāo)識,然后返回步驟206 ;本實施例中,清除中斷標(biāo)識具體為,將USB通信中斷標(biāo)識復(fù)位。步驟230:判斷通道標(biāo)識是否為I ;是,報錯,然后清除中斷標(biāo)識;否,執(zhí)行步驟234。本實施例中,清除中斷標(biāo)識具體為,將USB通信中斷標(biāo)識復(fù)位。步驟231:通過藍(lán)牙通道向上位機(jī)發(fā)送藍(lán)牙模塊的參數(shù);本實施例中,具體的向上位機(jī)發(fā)送第一字節(jié)為0XA5、第四字節(jié)為0X62、包含MAC內(nèi)容、讀卡器設(shè)備名稱以及PIN碼的藍(lán)牙模塊的參數(shù)。步驟232:接收上位機(jī)下發(fā)的藍(lán)牙模塊的新的參數(shù);步驟233:斷開藍(lán)牙模塊連接,并寫入新的參數(shù),然后將藍(lán)牙模塊切換為連接狀態(tài),然后清除中斷標(biāo)識,然后返回步驟206 ;本實施例中,清除中斷標(biāo)識具體為,將藍(lán)牙通信中斷標(biāo)識復(fù)位。需要說明的是,在本發(fā)明實施方式中,步驟206與步驟207之間還包括,檢測讀卡器與上位機(jī)的連接方式;如果是通過USB端口與上位機(jī)連接,讀卡器將USB通道連接標(biāo)識置位,關(guān)閉藍(lán)牙通道使能,執(zhí)行步驟207 ;如果是通過所述藍(lán)牙模塊與上位機(jī)連接,將藍(lán)牙通道連接標(biāo)識置位,關(guān)閉USB通道使能,執(zhí)行步驟207 ;相應(yīng)的,在步驟208中的步驟A至D還可以為步驟A-1至D-1,步驟A-1:如是插USB中斷標(biāo)識,則判斷休眠標(biāo)識是否置位,若休眠標(biāo)識置位,將休眠標(biāo)識復(fù)位,MCU被喚醒,打開USB通道使能,將USB通道連接標(biāo)識置位,關(guān)閉藍(lán)牙連接中斷使能,判斷藍(lán)牙通道連接標(biāo)識是否置位,若藍(lán)牙通道連接標(biāo)識置位,則將藍(lán)牙通道連接標(biāo)識復(fù)位,清除中斷標(biāo)識,返回步驟206 ;若藍(lán)牙通道連接標(biāo)識未置位,則清除中斷標(biāo)識,返回步驟 206 ;若休眠標(biāo)識未置位,則判斷藍(lán)牙通道連接標(biāo)識是否置位,是,將藍(lán)牙通道連接標(biāo)識復(fù)位,關(guān)閉藍(lán)牙連接中斷使能,打開USB通道使能,將USB通道連接標(biāo)識置位,清除中斷標(biāo)識,返回步驟206 ;否,關(guān)閉藍(lán)牙連接中斷使能,打開USB通道使能,將USB通道連接標(biāo)識置位,清除中斷標(biāo)識,返回步驟206,其中,清除中斷標(biāo)識為,將插USB中斷標(biāo)識復(fù)位;步驟B-1:判斷休眠標(biāo)識是否置位,是,將休眠標(biāo)識復(fù)位,MCU被喚醒,打開藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識置位,將藍(lán)牙連接中斷標(biāo)識復(fù)位,返回步驟206 ;否,打開藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識置位,將藍(lán)牙連接中斷標(biāo)識復(fù)位,返回步驟206 ;步驟C-1:關(guān)閉藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識復(fù)位,將休眠標(biāo)識置位,MCU休目民,清除中斷標(biāo)識,其中,清除中斷標(biāo)識具體為,將藍(lán)牙斷開中斷標(biāo)識復(fù)位。步驟D-1:關(guān)閉USB通道使能,將USB通道連接標(biāo)識復(fù)位,打開藍(lán)牙連接中斷使能,清除中斷標(biāo)識,將休眠標(biāo)識置位,MCU休眠。需要說明的是,在本發(fā)明實施方式中,步驟206與步驟207之間還包括,檢測讀卡器與上位機(jī)的連接方式;如果是通過所述藍(lán)牙模塊與所述上位機(jī)連接,則所述讀卡器將藍(lán)牙通道連接標(biāo)識置位,關(guān)閉USB通道使能,執(zhí)行步驟207 ;如果是通過所述USB端口與上位機(jī)連接,將USB通道連接標(biāo)識置位,關(guān)閉藍(lán)牙通道使能,執(zhí)行步驟207。相應(yīng)的,將步驟208中步驟A至D還可以為步驟A-2至D-2,步驟A-2:判斷休眠標(biāo)識是否置位,是,將休眠標(biāo)識復(fù)位,MCU被喚醒,打開USB通道使能,將USB通道連接標(biāo)識置位,清除中斷標(biāo)識,返回步驟206 ;否,打開USB通道使能,將USB通道連接標(biāo)識置位,清除中斷標(biāo)識,返回步驟206 ;其中,清除中斷標(biāo)識具體為,將插USB中斷標(biāo)識復(fù)位。步驟B-2:判斷休眠標(biāo)識是否置位,是,將休眠標(biāo)識復(fù)位,MCU被喚醒,打開藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識置位,關(guān)閉插USB中斷使能,清除中斷標(biāo)識,返回步驟206 ;否,判斷USB通道連接標(biāo)識是否置位,若USB通道連接標(biāo)識置位,則將USB通道連接標(biāo)識復(fù)位,打開藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識置位,關(guān)閉插USB中斷使能,清除中斷標(biāo)識,返回步驟206 ;若USB通道連接標(biāo)識未置位,則打開藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識置位,關(guān)閉插USB中斷使能,清除中斷標(biāo)識,返回步驟206,其中,清除中斷標(biāo)識具體為,將藍(lán)牙連接中斷標(biāo)識復(fù)位;步驟C-2:關(guān)閉藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識復(fù)位,打開插USB中斷使能,清除中斷標(biāo)識,將休眠標(biāo)識置位,MCU休眠,其中,清除中斷標(biāo)識具體為,將藍(lán)牙斷開中斷標(biāo)識復(fù)位。步驟D-2:將USB通道連接標(biāo)識復(fù)位,將休眠標(biāo)識置位,清除中斷標(biāo)識,MCU休眠,其中,清除中斷標(biāo)識具體為,將拔USB中斷標(biāo)識復(fù)位。需要說明的是,本實施發(fā)明方式中,步驟208中的步驟A至D還可以為A_3至D_3,步驟A-3:判斷休眠標(biāo)識是否置位,若休眠標(biāo)識置位,將休眠標(biāo)識復(fù)位,MCU被喚醒,打開USB通道使能,將USB通道連接標(biāo)識置位,關(guān)閉藍(lán)牙連接中斷使能,清除中斷標(biāo)識,返回步驟206 ;若休眠標(biāo)識未置位,則打開USB通道使能,將USB通道連接標(biāo)識置位,關(guān)閉藍(lán)牙連接中斷使能,清除中斷標(biāo)識,返回步驟206,其中,清除中斷標(biāo)識具體為,將插USB中斷標(biāo)識復(fù)位;步驟B-3:判斷休眠標(biāo)識是否置位,是,將休眠標(biāo)識復(fù)位,MCU被喚醒,打開藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識置位,關(guān)閉插USB中斷使能,清除中斷標(biāo)識,返回步驟206 ;否,則打開藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識置位,關(guān)閉插USB中斷使能,清除中斷標(biāo)識,返回步驟206,其中,清除中斷標(biāo)識具體為,將藍(lán)牙連接中斷標(biāo)識復(fù)位;步驟C-3:關(guān)閉藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識復(fù)位,打開插USB中斷使能,清除中斷標(biāo)識,將休眠標(biāo)識置位,MCU休眠,其中,清除中斷標(biāo)識具體為,將藍(lán)牙斷開中斷標(biāo)識復(fù)位;步驟D-3:關(guān)閉USB通道使能,將USB通道連接標(biāo)識復(fù)位,打開藍(lán)牙連接中斷使能,清除中斷標(biāo)識,將休眠標(biāo)識置位,MCU休眠,其中,清除中斷標(biāo)識具體為,將拔USB中斷標(biāo)識復(fù)位。以上所述,僅為本發(fā)明的具體實施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種讀卡器與上位機(jī)通信的方法,其特征在于,包括: 步驟A:讀卡器系統(tǒng)初始化,打開插卡中斷和/或拔卡中斷和/或插USB中斷和/或拔USB中斷和/或藍(lán)牙連接中斷和/或藍(lán)牙斷開中斷和/或USB通信中斷和/或藍(lán)牙通信中斷; 步驟B:判斷工作電壓是否低于預(yù)設(shè)值,是,提示低電壓狀態(tài),若所述低電壓狀態(tài)超過第一預(yù)設(shè)時間,則關(guān)閉所述讀卡器;否,返回步驟B ; 在以上過程中還包括, 當(dāng)所述讀卡器收到USB通信中斷信號時,進(jìn)入所述USB通信中斷,通過USB通道接收指令,根據(jù)收到的所述指令執(zhí)行相應(yīng)操作,并將操作結(jié)果通過所述USB通道返回給上位機(jī);和/或 當(dāng)所述讀卡器收到藍(lán)牙通信中斷信號時,進(jìn)入所述藍(lán)牙通信中斷,通過藍(lán)牙通道接收指令,根據(jù)收到的所述指令執(zhí)行相應(yīng)操作,并將操作結(jié)果通過所述藍(lán)牙通道返回給所述上位機(jī);和/或 當(dāng)所述讀卡器收到插USB中斷信號時,進(jìn)入所述插USB中斷,將USB通道連接標(biāo)識置位;和/或 當(dāng)所述讀卡器收到拔USB中斷信號時,進(jìn)入所述拔USB中斷,將所述USB通道連接標(biāo)識復(fù)位;和/或 當(dāng)所述讀卡器收到藍(lán)牙連接中斷信號時,進(jìn)入所述藍(lán)牙連接中斷,將藍(lán)牙通道連接標(biāo)識置位;和/或 當(dāng)所述讀卡器收到藍(lán)牙 斷開中斷信號時,進(jìn)入所述藍(lán)牙斷開中斷,將所述藍(lán)牙通道連接標(biāo)識復(fù)位;和/或 當(dāng)所述讀卡器收到插卡中斷信號時,進(jìn)入所述插卡中斷,設(shè)置卡槽狀態(tài)標(biāo)識為有卡標(biāo)識;和/或 當(dāng)所述讀卡器收到拔卡中斷信號時,進(jìn)入所述拔卡中斷,設(shè)置所述卡槽狀態(tài)標(biāo)識為無卡標(biāo)識。
2.按權(quán)利要求1所述的方法,其特征在于,所述步驟A與步驟B之間包括: 步驟B1:讀取藍(lán)牙模塊的參數(shù),判斷是否讀取成功,是,將所述藍(lán)牙模塊切換至連接狀態(tài),執(zhí)行步驟B ;否,將USB通道標(biāo)識置位,執(zhí)行步驟B ;或者, 步驟B2:讀取藍(lán)牙模塊的參數(shù),判斷是否讀取成功,是,將所述藍(lán)牙模塊切換至連接狀態(tài),執(zhí)行步驟B ;否,返回步驟B2。
3.按權(quán)利要求2所述的方法,其特征在于, 所述進(jìn)入所述插USB中斷,將USB通道連接標(biāo)識置位,具體包括: 進(jìn)入所述插USB中斷,判斷休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,MCU被喚醒,打開USB通道使能,將所述USB通道連接標(biāo)識置位,退出所述插USB中斷;否,打開所述USB通道使能,將所述USB通道連接標(biāo)識置位,退出所述插USB中斷; 所述進(jìn)入所述拔USB中斷,將所述USB通道連接標(biāo)識復(fù)位,具體包括: 進(jìn)入拔USB中斷,判斷藍(lán)牙通道連接標(biāo)識是否置位,是,關(guān)閉所述USB通道使能,將所述USB通道連接標(biāo)識復(fù)位,退出所述拔USB中斷;否,關(guān)閉所述USB通道使能,將所述USB通道連接標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠,退出所述拔USB中斷;所述進(jìn)入藍(lán)牙連接中斷,將藍(lán)牙通道連接標(biāo)識置位,具體包括: 進(jìn)入所述藍(lán)牙連接中斷,判斷所述休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,所述MCU被喚醒,打開藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識置位,退出所述藍(lán)牙連接中斷;否,打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,退出所述藍(lán)牙連接中斷; 所述進(jìn)入所述藍(lán)牙斷開中斷,將藍(lán)牙通道連接標(biāo)識復(fù)位,具體包括: 進(jìn)入所述藍(lán)牙斷開中斷,判斷所述USB通道連接標(biāo)識是否置位,是,關(guān)閉所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,退出所述藍(lán)牙斷開中斷;否,關(guān)閉所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠,退出所述藍(lán)牙斷開中斷。
4.按權(quán)利要求2所述的方法,其特征在于,所述步驟B中判斷為否時返回步驟B之前,還包括步驟C, 步驟C:檢測所述讀卡器與所述上位機(jī)的連接方式; 如果所述讀卡器是通過USB端口與所述上位機(jī)連接,則所述讀卡器將所述USB通道連接標(biāo)識置位,返回步驟B ;如果所述讀卡器是通過藍(lán)牙模塊與上位機(jī)連接,將所述藍(lán)牙通道連接標(biāo)識置位,返回步驟B; 所述進(jìn)入所述插USB中斷,將USB通道連接標(biāo)識置位,具體包括: 進(jìn)入所述插USB中斷,判斷所述休眠標(biāo)識是否置位,若所述休眠標(biāo)識置位,將所述休眠標(biāo)識復(fù)位,MCU被喚醒,打開USB通道使能,將所述USB通道連接標(biāo)識置位,關(guān)閉藍(lán)牙連接中斷使能,判斷所述藍(lán)牙通道連接標(biāo)識是否置位,若所述藍(lán)牙通道連接標(biāo)識置位,則將所述藍(lán)牙通道連接標(biāo)識復(fù)位,退出所述插USB中斷;若所述藍(lán)牙通道連接標(biāo)識未置位,則退出所述插USB中斷; 若所述休眠標(biāo)識未置位,則判斷所述藍(lán)牙通道連接標(biāo)識是否置位,是,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,關(guān)閉藍(lán)牙連接中斷使能,打開所述USB通道使能,將所述USB通道連接標(biāo)識置位,退出插USB中斷;否,關(guān)閉所述藍(lán)牙連接中斷使能,所述打開USB通道使能,將所述USB通道連接標(biāo)識置位,退出所述插USB中斷; 所述進(jìn)入所述拔USB中斷,將所述USB通道連接標(biāo)識復(fù)位,具體包括: 進(jìn)入所述拔USB中斷,關(guān)閉所述USB通道使能,將所述USB通道連接標(biāo)識復(fù)位,打開所述藍(lán)牙連接中斷使能,將所述休眠標(biāo)識置位,所述MCU休眠,退出所述拔USB中斷; 所述進(jìn)入所述藍(lán)牙連接中斷,將藍(lán)牙通道連接標(biāo)識置位,具體包括: 進(jìn)入所述藍(lán)牙連接中斷,判斷所述休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,所述MCU被喚醒,打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,退出藍(lán)牙連接中斷;否,打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,退出所述藍(lán)牙連接中斷;所述進(jìn)入所述藍(lán)牙斷開中斷,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,具體包括: 進(jìn)入所述藍(lán)牙斷開中斷,關(guān)閉所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠,退出所述藍(lán)牙斷開中斷。
5.按權(quán)利要求2所述的方法,其特征在于,所述步驟B中判斷為否時返回步驟B之前,還包括步驟C’, 步驟C’:檢測所述讀卡器與所述上位機(jī)的連接方式; 如果所述讀卡器是通過所述藍(lán)牙模塊與所述上位機(jī)連接,則所述讀卡器將所述藍(lán)牙通道連接標(biāo)識置位,返回步驟B ;如果所述讀卡器是通過所述USB端口與所述上位機(jī)連接,將所述USB通道連接標(biāo)識置位,返回步驟B ; 所述進(jìn)入所述插USB中斷,將USB通道連接標(biāo)識置位,具體包括: 進(jìn)入所述插USB中斷,判斷所述休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,MCU被喚醒,打開USB通道使能,將所述USB通道連接標(biāo)識置位,退出所述插USB中斷;否,打開所述USB通道使能,將所述USB通道連接標(biāo)識置位,退出所述插USB中斷; 所述進(jìn)入所述拔USB中斷,將所述USB通道連接標(biāo)識復(fù)位,具體包括: 進(jìn)入所述拔USB中斷,所述關(guān)閉USB通道使能,將所述USB通道連接標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠,退出所述拔USB中斷處理; 所述進(jìn)入藍(lán)牙連接中斷,將藍(lán)牙通道連接標(biāo)識置位,具體包括: 進(jìn)入所述藍(lán)牙連接中斷,判斷所述休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,MCU被喚醒,打開藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,關(guān)閉插USB中斷使能,退出所述藍(lán)牙連接中斷;否,判斷所述USB通道連接標(biāo)識是否置位,若所述USB通道連接標(biāo)識置位,則將所述USB通道連接標(biāo)識復(fù)位,打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,關(guān)閉所述插USB中斷使能,退出所述藍(lán)牙連接中斷;若所述USB通道連接標(biāo)識未置位,則打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,關(guān)閉所述插USB中斷使能,退出所述藍(lán)牙連接中斷; 所述進(jìn)入所述藍(lán)牙斷開中斷,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,具體包括: 進(jìn)入所述藍(lán)牙斷開中斷,關(guān)閉所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,打開所述插USB中斷使能,將所述休眠標(biāo)識置位,所述MCU休眠,退出所述藍(lán)牙斷開中斷。
6.按權(quán)利要求2所述的方法,其特征在于, 所述進(jìn)入所述插USB中斷,將USB通道連接標(biāo)識置位,具體包括: 進(jìn)入所述插USB中斷,判斷所述休眠標(biāo)識是否置位,若所述休眠標(biāo)識置位,將所述休眠標(biāo)識復(fù)位,MCU被喚醒,打開USB通道使能,將所述USB通道連接標(biāo)識置位,關(guān)閉藍(lán)牙連接中斷使能,退出所述插USB中斷;若所述休眠標(biāo)識未置位,則打開所述USB通道使能,將所述USB通道連接標(biāo)識置位,關(guān)閉所述藍(lán)牙連接中斷使能,退出所述插USB中斷; 所述進(jìn)入所述拔USB中斷,將所述USB通道連接標(biāo)識復(fù)位,具體包括: 進(jìn)入所述拔USB中斷,關(guān)閉所述USB通道使能,將所述USB通道連接標(biāo)識復(fù)位,打開所述藍(lán)牙連接中斷使能,將所述休眠標(biāo)識置位,所述MCU休眠,退出所述拔USB中斷; 所述進(jìn)入所述藍(lán)牙連接中斷,將藍(lán)牙通道連接標(biāo)識置位,具體包括, 進(jìn)入所述藍(lán)牙連接中斷,判斷所述休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,所述MCU被喚醒,打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,關(guān)閉所述插USB中斷使能,退出所述藍(lán)牙連接中斷;否,則打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,關(guān)閉所述插USB中斷使能,退出所述藍(lán)牙連接中斷; 所述進(jìn)入所述藍(lán)牙斷開中斷,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,具體包括: 進(jìn)入所述藍(lán)牙斷開中斷,關(guān)閉所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,打開所述插USB中斷使能,將所述休眠標(biāo)識置位,所述MCU休眠,退出所述藍(lán)牙斷開中斷。
7.按權(quán)利要求3至6任意一項所述的方法,其特征在于, 所述進(jìn)入所述插卡中斷,設(shè)置卡槽狀態(tài)標(biāo)識為有卡標(biāo)識,具體包括,進(jìn)入所述插卡中斷,判斷所述休眠標(biāo)識是否置位,若所述休眠標(biāo)識置位,則將所述休眠標(biāo)識復(fù)位,所述MCU被喚醒,設(shè)置所述卡槽狀態(tài)標(biāo)識為有卡標(biāo)識,判斷所述USB通道連接標(biāo)識是否置位,是,向INT端點(diǎn)寫入插卡響應(yīng),退出所述插卡中斷;否,退出所述插卡中斷;若所述休眠標(biāo)識未置位,設(shè)置所述卡槽狀態(tài)標(biāo)識為有卡標(biāo)識,判斷所述USB通道連接標(biāo)識是否置位,是,向所述INT端點(diǎn)寫入插卡響應(yīng),退出所述插卡中斷;否,退出所述插卡中斷;所述進(jìn)入所述拔卡中斷,設(shè)置所述卡槽狀態(tài)標(biāo)識為無卡標(biāo)識,具體包括, 進(jìn)入所述拔卡中斷,設(shè)置所述卡槽狀態(tài)標(biāo)識為無卡標(biāo)識,判斷所述USB通道連接標(biāo)識是否置位,是,向所述INT端點(diǎn)寫入拔卡響應(yīng),將所述休眠標(biāo)識置位,所述MCU休眠,退出所述拔卡中斷;否,將所述休眠標(biāo)識置位,所述MCU休眠,退出所述拔卡中斷; 所述步驟A還包括打開定時器中斷, 當(dāng)所述讀卡器收到定時器中斷信號時,進(jìn)入所述定時器中斷,將計數(shù)清零,將所述休眠標(biāo)識置位,所述MCU休眠,退出所述定時器中斷。
8.按權(quán)利要求3至6任意一項所述的方法,其特征在于, 所述進(jìn)入所述USB通信中斷,通過所述USB通道接收指令,根據(jù)收到的所述指令執(zhí)行相應(yīng)操作,并將操作結(jié)果通過所述USB通道返回給上位機(jī),具體包括: 進(jìn)入所述USB通信中斷,通過所述USB通道接收指令,解析收到的所述指令,判斷指令類型,如是查詢卡槽狀態(tài)指令,則所述讀卡器查詢卡槽狀態(tài),并設(shè)置卡槽狀態(tài)數(shù)據(jù)的預(yù)設(shè)字節(jié),將設(shè)置完的所述卡槽狀態(tài)數(shù)據(jù)通過所述USB通道返回給所述上位機(jī);如是上電指令,則所述讀卡器對所述卡槽上電,讀取上電響應(yīng),將所述上電響應(yīng)通過所述USB通道返回給所述上位機(jī);如是下電指令,則所述讀卡器對所述卡槽下電,讀取下電響應(yīng),將所述下電響應(yīng)通過所述USB通道返回給所述上位機(jī);如是操作卡片指令,則所述讀卡器將所述操作卡片指令發(fā)送給卡片,接收所述卡片返回的操作卡片響應(yīng),將所述操作卡片響應(yīng)通過所述USB通道返回給上位機(jī),如是其他命令,則執(zhí)行相應(yīng)操作; 所述進(jìn)入所述藍(lán)牙通信中斷,通過藍(lán)牙通道接收指令,根據(jù)收到的所述指令執(zhí)行相應(yīng)操作,并將操作結(jié)果通過所述藍(lán)牙通道返回給所述上位機(jī),具體包括: 進(jìn)入所述藍(lán)牙通信中斷,通過所述藍(lán)牙通道接收指令,解析收到的所述指令,判斷指令類型,如是查詢卡槽狀態(tài)指令,則所述讀卡器查詢卡槽狀態(tài),并設(shè)置卡槽狀態(tài)數(shù)據(jù)的預(yù)設(shè)字節(jié),將設(shè)置完的所述卡槽狀態(tài)數(shù)據(jù)通過所述藍(lán)牙通道返回給所述上位機(jī);如是上電指令,則所述讀卡器對所述卡槽上電,讀取上電響應(yīng),將所述上電響應(yīng)通過所述藍(lán)牙通道返回給所述上位機(jī);如是下電指令,則所述讀卡器對所述卡槽下電,讀取下電響應(yīng),將所述下電響應(yīng)通過所述藍(lán)牙通道返回給上位機(jī);如是操作卡片指令,則所述讀卡器將所述操作卡片指令發(fā)送給卡片,接收所述卡片返回的操作卡片響應(yīng),將所述操作卡片響應(yīng)通過所述藍(lán)牙通道返回給所述上位機(jī);如是查詢藍(lán)牙模塊參數(shù)信息指令,則所述讀卡器通過所述藍(lán)牙通道向上位機(jī)發(fā)送所述藍(lán)牙模塊的參數(shù),等待接收所述上位機(jī)下發(fā)的所述藍(lán)牙模塊的新的參數(shù),當(dāng)接收到所述新的參數(shù)后,斷開所述藍(lán)牙模塊連接,寫入所述新的參數(shù),然后將所述藍(lán)牙模塊切換為連接狀態(tài);如是其他命令,則執(zhí)行相應(yīng)操作。
9.按權(quán)利要求6所述的方法,其特征在于, 所述進(jìn)入所述USB通信中斷,通過USB通道接收指令,根據(jù)收到的所述指令執(zhí)行相應(yīng)操作,并將操作結(jié)果通過所述USB通道返回給上位機(jī),具體包括:進(jìn)入所述USB通信中斷,通過所述USB通道接收指令,解析收到的所述指令,判斷指令類型,如是切換通道命令,打開所述藍(lán)牙連接中斷使能; 所述進(jìn)入藍(lán)牙通信中斷,進(jìn)入所述藍(lán)牙通信中斷,通過藍(lán)牙通道接收指令,根據(jù)收到的所述指令執(zhí)行相應(yīng)操作,并將操作結(jié)果通過所述藍(lán)牙通道返回給所述上位機(jī),具體包括, 進(jìn)入所述藍(lán)牙通信中斷,通過所述藍(lán)牙通道接收指令,解析收到的所述指令,判斷指令類型,如是切換通道命令,打開所述插USB中斷使能;如是其他命令,則執(zhí)行相應(yīng)操作。
10.按權(quán)利要求2所述的方法,其特征在于, 所述藍(lán)牙模塊的參數(shù),具體包括,MAC的內(nèi)容、PIN碼和讀卡器設(shè)備名稱; 所述判斷是否讀取成功,具體包括:所述讀卡器根據(jù)所述藍(lán)牙模塊的參數(shù)中的指定字節(jié)判斷是否讀取成功;如果所述藍(lán)牙模塊的參數(shù)中的指定字節(jié)的取值等于預(yù)設(shè)字節(jié),則表示讀取成功;否則,表示讀取不成功; 當(dāng)所述讀卡器通過USB端口與上位機(jī)建立連接時,所述讀卡器通過所述USB端口充電。
11.按權(quán)利要求7所述的方法,其特征在于,所述MCU休眠,具體包括: 增加分頻數(shù)值,降低總線時鐘的頻率,MCU內(nèi)核電壓等級切換至電壓范圍為I的狀態(tài),失能第一串行通信接口、第二串行通信接口外設(shè)后,MCU休眠。
12.一種讀卡器與上位機(jī)通信的方法,其特征在于,包括: 步驟S1:讀卡器系統(tǒng)初始化,打開插卡中斷和/或拔卡中斷和/或插USB中斷和/或拔USB中斷和/或藍(lán)牙連接中斷和/或藍(lán)牙斷開中斷和/或定時器中斷和/或USB通信中斷和/或藍(lán)牙通信中斷; 步驟S2:判斷工作電壓是否低于預(yù)設(shè)值,是,提示低電量狀態(tài),當(dāng)?shù)碗娏繝顟B(tài)超過第一預(yù)設(shè)時間時關(guān)閉所述讀卡器;否,執(zhí)行步驟S3 ; 步驟S3:判斷是否存在置位的中斷標(biāo)識,如果存在置位的中斷標(biāo)識,則執(zhí)行步驟S4 ;否貝U,返回步驟S2; 所述中斷標(biāo)識包括:插卡中斷標(biāo)識、拔卡中斷標(biāo)識、插USB中斷標(biāo)識、拔USB中斷標(biāo)識、藍(lán)牙連接中斷標(biāo)識、藍(lán)牙斷開中斷標(biāo)識、藍(lán)牙通信中斷標(biāo)識、USB通信中斷標(biāo)識、定時器中斷標(biāo)識; 步驟S4:檢測所述置位的中斷標(biāo)識的類型; 如置位的中斷標(biāo)識為所述藍(lán)牙通信中斷標(biāo)識或所述USB通信中斷標(biāo)識,則執(zhí)行步驟S5 ;如為其他中斷標(biāo)識,則根據(jù)所述置位的中斷標(biāo)識的類型執(zhí)行相應(yīng)操作,返回步驟S2 ;步驟S5:接收指令并保存所述指令對應(yīng)的通道標(biāo)識,根據(jù)所述指令的類型執(zhí)行相應(yīng)操作,向所述上位機(jī)發(fā)送相應(yīng)的響應(yīng),清除相應(yīng)的中斷標(biāo)識,返回步驟S2。
13.按權(quán)利要求12所述的方法,其特征在于, 當(dāng)所述讀卡器收到插卡中斷信號時,將所述插卡中斷標(biāo)識置位; 當(dāng)所述讀卡器收到拔卡中斷信號時,將所述拔卡中斷標(biāo)識置位; 當(dāng)所述讀卡器收到插USB中斷信號時,將所述插USB中斷標(biāo)識置位; 當(dāng)所述讀卡器收到拔USB中斷信號時,將所述拔USB中斷標(biāo)識置位; 當(dāng)所述讀卡器收到藍(lán)牙連接中斷信號時,將所述藍(lán)牙連接中斷標(biāo)識置位; 當(dāng)所述讀卡器收到藍(lán)牙斷開中斷信號時,將所述藍(lán)牙斷開中斷標(biāo)識置位; 當(dāng)所述讀卡器收到藍(lán)牙通信中斷信號時,將所述藍(lán)牙通信中斷標(biāo)識置位;當(dāng)所述讀卡器收到USB通信中斷信號時,將所述USB通信中斷標(biāo)識置位。
14.按權(quán)利要求12所述的方法,其特征在于,所述步驟S2與步驟S3之間包括, 步驟S2’:讀取藍(lán)牙模塊的參數(shù),判斷是否讀取成功,是,將所述藍(lán)牙模塊切換至連接狀態(tài),執(zhí)行步驟S3 ;否,將USB通道標(biāo)識置位,執(zhí)行步驟S2 ;或者, 步驟S2’’:讀取藍(lán)牙模塊的參數(shù),判斷是否讀取成功,是,將所述藍(lán)牙模塊切換至連接狀態(tài),執(zhí)行步驟S3 ;否,返回步驟S2’ ’。
15.按權(quán)利要求14所述的方法,其特征在于,所述如為其他中斷標(biāo)識,則根據(jù)所述置位的中斷標(biāo)識的類型執(zhí)行相應(yīng)操作,返回步驟S2,具體包括, 如所述置位的中斷標(biāo)識為插USB中斷標(biāo)識置位,則判斷休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,MCU被喚醒,打開USB通道使能,將所述USB通道連接標(biāo)識置位,將所述插USB中斷標(biāo)識復(fù)位,返回步驟S2 ;否,打開所述USB通道使能,將是USB通道連接標(biāo)識置位,將所述插USB中斷標(biāo)識復(fù)位,返回步驟S2 ; 如所述置位的中斷標(biāo)識為拔USB中斷標(biāo)識置位,則判斷所述藍(lán)牙通道連接標(biāo)識是否置位,是,關(guān)閉所述USB通道使能,將所述USB通道連接標(biāo)識復(fù)位,將所述拔USB中斷標(biāo)識復(fù)位,返回步驟S2 ;否,關(guān)閉所述USB通道使能,將所述USB通道連接標(biāo)識復(fù)位,將所述拔USB中斷標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,MCU休眠; 如所述置位的中斷標(biāo)識為藍(lán)牙連接中斷標(biāo)識置位,則判斷所述休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,所述MCU被喚醒,打開藍(lán)牙通道使能,將藍(lán)牙通道連接標(biāo)識置位,將所述藍(lán)牙連接中斷 標(biāo)識復(fù)位,返回步驟S2 ;否,打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,將所述藍(lán)牙連接中斷標(biāo)識復(fù)位,返回步驟S2 ; 如所述置位的中斷標(biāo)識為藍(lán)牙斷開中斷標(biāo)識置位,則判斷所述USB通道連接標(biāo)識是否置位,是,關(guān)閉所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,將所述藍(lán)牙斷開中斷標(biāo)識復(fù)位,返回步驟S2 ;否,關(guān)閉所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,將藍(lán)牙斷開中斷標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠。
16.按權(quán)利要求14所述的方法,其特征在于, 所述步驟S2’與步驟S3之間或步驟S2’ ’與步驟S3之間包括步驟S3’, 步驟S3’:檢測所述讀卡器與所述上位機(jī)的連接方式; 如果所述讀卡器是通過所述USB端口與所述上位機(jī)連接,則所述讀卡器將USB通道連接標(biāo)識置位,執(zhí)行步驟S3 ;如果所述讀卡器是通過所述藍(lán)牙模塊與上位機(jī)連接,將所述藍(lán)牙通道連接標(biāo)識置位,執(zhí)行步驟S3 ; 所述如為其他中斷標(biāo)識,則根據(jù)所述置位的中斷標(biāo)識的類型執(zhí)行相應(yīng)操作,返回步驟S2,包括, 如所述置位的中斷標(biāo)識為插USB中斷標(biāo)識,則判斷休眠標(biāo)識是否置位,若所述休眠標(biāo)識置位,將所述休眠標(biāo)識復(fù)位,MCU被喚醒,打開USB通道使能,將USB通道連接標(biāo)識置位,關(guān)閉藍(lán)牙連接中斷使能,判斷藍(lán)牙通道連接標(biāo)識是否置位,若所述藍(lán)牙通道連接標(biāo)識置位,則將所述藍(lán)牙通道連接標(biāo)識復(fù)位,將所述插USB中斷標(biāo)識復(fù)位,返回步驟S2 ;若所述藍(lán)牙通道連接標(biāo)識未置位,則將所述插USB中斷標(biāo)識復(fù)位,返回步驟S2 ; 若所述休眠標(biāo)識未置位,則判斷所述藍(lán)牙通道連接標(biāo)識是否置位,是,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,關(guān)閉所述藍(lán)牙連接中斷使能,打開所述USB通道使能,將所述USB通道連接標(biāo)識置位,將所述插USB中斷標(biāo)識復(fù)位,返回步驟S2 ;否,關(guān)閉所述藍(lán)牙連接中斷使能,打開所述USB通道使能,將所述USB通道連接標(biāo)識置位,將所述插USB中斷標(biāo)識復(fù)位,返回步驟S2 ; 如所述置位的中斷標(biāo)識為拔USB中斷標(biāo)識,則關(guān)閉所述USB通道使能,將所述USB通道連接標(biāo)識復(fù)位,打開所述藍(lán)牙連接中斷使能,將所述拔USB中斷標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠; 如所述置位的中斷標(biāo)識為藍(lán)牙連接中斷標(biāo)識,則判斷所述休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,所述MCU被喚醒,打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,將所述藍(lán)牙連接中斷標(biāo)識復(fù)位,返回步驟S2 ;否,打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,將所述藍(lán)牙連接中斷標(biāo)識復(fù)位,返回步驟S2 ; 如所述置位的中斷標(biāo)識為藍(lán)牙斷開中斷標(biāo)識,則關(guān)閉所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,將所述藍(lán)牙斷開中斷標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠。
17.按權(quán)利要求14所述的方法,其特征在于, 所述步驟S2’與步驟S3之間或步驟S2’ ’與步驟S3之間,包括步驟S3’ ’, 步驟S3’’:檢測所述讀卡器與所述上位機(jī)的連接方式; 如果所述讀卡器是通過所述藍(lán)牙模塊與所述上位機(jī)連接,則所述讀卡器將藍(lán)牙通道連接標(biāo)識置位,執(zhí)行步驟S3 ;如果所述讀卡器是通過所述USB端口與所述上位機(jī)連接,將所述USB通道連接標(biāo)識置位,執(zhí)行步驟S3 ; 所述如為其他中斷標(biāo)識,則根據(jù)所述置位的中斷標(biāo)識的類型執(zhí)行相應(yīng)操作,返回步驟S2,包括, 如所述置位的中斷標(biāo)識為插USB中斷標(biāo)識置位,則判斷休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,MCU被喚醒,打開USB通道使能,將USB通道連接標(biāo)識置位,將插USB中斷標(biāo)識復(fù)位,返回步驟S2 ;否,打開所述USB通道使能,將所述USB通道連接標(biāo)識置位,將所述插USB中斷標(biāo)識復(fù)位,返回步驟S2 ; 如所述置位的中斷標(biāo)識為拔USB中斷標(biāo)識,則將所述USB通道連接標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,將所述拔USB中斷標(biāo)識復(fù)位,所述MCU休眠; 如所述置位的中斷標(biāo)識為藍(lán)牙連接中斷標(biāo)識,則判斷所述休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,所述MCU被喚醒,打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,關(guān)閉所述插USB中斷使能,將所述藍(lán)牙連接中斷標(biāo)識復(fù)位,返回步驟S2;否,判斷所述USB通道連接標(biāo)識是否置位,若所述USB通道連接標(biāo)識置位,則所述將USB通道連接標(biāo)識復(fù)位,打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,關(guān)閉所述插USB中斷使能,將所述藍(lán)牙連接中斷標(biāo)識復(fù)位,返回步驟S2 ;若所述USB通道連接標(biāo)識未置位,則打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,關(guān)閉所述插USB中斷使能,將所述藍(lán)牙連接中斷標(biāo)識復(fù)位,返回步驟S2 ; 如所述置位的中斷標(biāo)識為藍(lán)牙斷開中斷標(biāo)識,則關(guān)閉所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,打開所述插USB中斷使能,將所述藍(lán)牙斷開中斷標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠。
18.按權(quán)利要求14所述的方法,其特征在于,所述如為其他中斷標(biāo)識,則根據(jù)所述置位的中斷標(biāo)識的類型執(zhí)行相應(yīng)操作,返回步驟S2,包括,如所述置位的中斷標(biāo)識為插USB中斷標(biāo)識,則判斷休眠標(biāo)識是否置位,若所述休眠標(biāo)識置位,將所述休眠標(biāo)識復(fù)位,MCU被喚醒,打開USB通道使能,將USB通道連接標(biāo)識置位,關(guān)閉藍(lán)牙連接中斷使能,將插USB中斷標(biāo)識復(fù)位,返回步驟S2 ;若所述休眠標(biāo)識未置位,則打開所述USB通道使能,將所述USB通道連接標(biāo)識置位,關(guān)閉所述藍(lán)牙連接中斷使能,將所述插USB中斷標(biāo)識復(fù)位,返回步驟S2 ; 如所述置位的中斷標(biāo)識為拔USB中斷標(biāo)識,則關(guān)閉所述USB通道使能,將所述USB通道連接標(biāo)識復(fù)位,打開所述藍(lán)牙連接中斷使能,將所述拔USB中斷標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠; 如所述置位的中斷標(biāo)識為藍(lán)牙連接中斷標(biāo)識,則判斷所述休眠標(biāo)識是否置位,是,將所述休眠標(biāo)識復(fù)位,所述MCU被喚醒,打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,關(guān)閉所述插USB中斷使能,將所述藍(lán)牙連接中斷標(biāo)識復(fù)位,返回步驟S2 ;否則打開所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識置位,關(guān)閉所述插USB中斷使能,將所述藍(lán)牙連接中斷標(biāo)識復(fù)位,返回步驟S2 ; 如所述置位的中斷標(biāo)識為藍(lán)牙斷開中斷標(biāo)識,則關(guān)閉所述藍(lán)牙通道使能,將所述藍(lán)牙通道連接標(biāo)識復(fù)位,打開所述插USB中斷使能,將所述藍(lán)牙斷開中斷標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠。
19.按權(quán)利要求15至18任意一項所述的方法,其特征在于,所述如為其他中斷標(biāo)識,則根據(jù)所述置位的中斷標(biāo)識的類型執(zhí)行相應(yīng)操作,返回步驟S2,還包括, 如所述置位的中斷標(biāo)識為插卡中斷標(biāo)識,則判斷所述休眠標(biāo)識是否置位,若所述休眠標(biāo)識置位,則將所述休眠標(biāo)識復(fù)位,所述MCU被喚醒,設(shè)置卡槽狀態(tài)標(biāo)識為有卡標(biāo)識,判斷所述USB通道連接標(biāo)識是否置位,是,向INT端點(diǎn)寫入插卡響應(yīng),將所述插卡中斷標(biāo)識復(fù)位,返回步驟S2 ;否,將所述插卡中斷標(biāo)識復(fù)位,返回步驟S2 ;若所述休眠標(biāo)識未置位,判斷所述USB通道連接標(biāo)識是否置位,是,向所述INT端點(diǎn)寫入插卡響應(yīng),將所述插卡中斷標(biāo)識復(fù)位,返回步驟S2 ;否,將 所述插卡中斷標(biāo)識復(fù)位,返回步驟S2 ; 如所述置位的中斷標(biāo)識為拔卡中斷標(biāo)識,則設(shè)置所述卡槽狀態(tài)標(biāo)識為無卡標(biāo)識,判斷所述USB通道連接標(biāo)識是否置位,是,向所述INT端點(diǎn)寫入拔卡響應(yīng),將所述拔卡中斷標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠;否,將所述拔卡中斷標(biāo)識復(fù)位,將所述休眠標(biāo)識置位,所述MCU休眠; 如所述置位的中斷標(biāo)識為定時器中斷標(biāo)識,則將計數(shù)清零,將所述定時器中斷標(biāo)識復(fù)位,將休眠標(biāo)識置位,MCU休眠。
20.按權(quán)利要求15至18任意一項所述的方法,其特征在于,所述步驟S5,具體包括, a:當(dāng)通過USB通道收到指令時,將USB通道標(biāo)識置位;當(dāng)通過藍(lán)牙通道收到指令時,將藍(lán)牙通道標(biāo)識置位; b:根據(jù)所述指令的類型執(zhí)行相應(yīng)操作,向上位機(jī)發(fā)送相應(yīng)的響應(yīng),清除相應(yīng)的中斷標(biāo)識,包括: 如接收指令是查詢卡槽狀態(tài)指令,則查詢卡槽狀態(tài),并設(shè)置卡槽狀態(tài)數(shù)據(jù)的預(yù)設(shè)字節(jié),檢測當(dāng)前置位的通道標(biāo)識的類型,如是所述藍(lán)牙通道標(biāo)識,則通過所述藍(lán)牙通道向所述上位機(jī)發(fā)送所述卡槽狀態(tài)數(shù)據(jù),將所述藍(lán)牙通道標(biāo)識復(fù)位,將所述藍(lán)牙通信中斷標(biāo)識復(fù)位;如是所述USB通道標(biāo)識,則通過所述USB通道向所述上位機(jī)發(fā)送所述卡槽狀態(tài)數(shù)據(jù),將所述USB通道標(biāo)識復(fù)位,將所述USB通信中斷標(biāo)識復(fù)位; 如接收指令是上電指令,則對卡槽上電,讀取上電響應(yīng),檢測當(dāng)前置位的通道標(biāo)識的類型,如是所述藍(lán)牙通道標(biāo)識,則通過所述藍(lán)牙通道向所述上位機(jī)發(fā)送所述上電響應(yīng),將所述藍(lán)牙通道標(biāo)識復(fù)位,將所述藍(lán)牙通信中斷標(biāo)識復(fù)位;如是所述USB通道標(biāo)識,則通過所述USB通道向所述上位機(jī)發(fā)送所述上電響應(yīng),將所述USB通道標(biāo)識復(fù)位,將所述USB通信中斷標(biāo)識復(fù)位; 如接收指令是下電指令,則對卡槽下電,讀取下電響應(yīng),檢測當(dāng)前置位的通道標(biāo)識的類型,如是所述藍(lán)牙通道標(biāo)識,則通過所述藍(lán)牙通道向所述上位機(jī)發(fā)送所述下電響應(yīng),將所述藍(lán)牙通道標(biāo)識復(fù)位,將所述藍(lán)牙通信中斷標(biāo)識復(fù)位;如是所述USB通道標(biāo)識,則通過所述USB通道向所述上位機(jī)發(fā)送所述下電響應(yīng),將所述USB通道標(biāo)識復(fù)位,將所述USB通信中斷標(biāo)識復(fù)位; 如接收指令是操作卡片指令,則將所述操作卡片指令發(fā)送給卡片,接收所述卡片返回的操作卡片響應(yīng),檢測當(dāng)前置位的通道標(biāo)識的類型,如是藍(lán)牙通道標(biāo)識,則通過所述藍(lán)牙通道向所述上位機(jī)發(fā)送所述操作卡片響應(yīng),將所述藍(lán)牙通道標(biāo)識復(fù)位,將所述藍(lán)牙通信中斷標(biāo)識復(fù)位;如是所述USB通道標(biāo)識,則通過所述USB通道向所述上位機(jī)發(fā)送所述操作卡片響應(yīng),將所述USB通道標(biāo)識復(fù)位,將所述USB通信中斷標(biāo)識復(fù)位; 如接收指令是查詢藍(lán)牙模塊參數(shù)信息指令,則判斷藍(lán)牙通道標(biāo)識是否置位,是,則通過所述藍(lán)牙通道向所述上位機(jī)發(fā)送藍(lán)牙模塊的參數(shù),等待接收所述上位機(jī)下發(fā)的藍(lán)牙模塊的新的參數(shù),然后斷開所述藍(lán)牙模塊連接,并寫入新的參數(shù),將所述藍(lán)牙模塊切換為連接狀態(tài),將所述藍(lán)牙通道標(biāo)識復(fù)位,將 所述藍(lán)牙通信中斷標(biāo)識復(fù)位;否,則報錯。
21.按權(quán)利要求20所述的方法,其特征在于,所述步驟S5還包括, a’:當(dāng)通過USB通道收到指令時,將USB通道標(biāo)識置位;當(dāng)通過藍(lán)牙通道收到指令時,將藍(lán)牙通道標(biāo)識置位; b’:根據(jù)所述指令的類型執(zhí)行相應(yīng)操作,向得到上位機(jī)發(fā)送相應(yīng)的響應(yīng),清除相應(yīng)的中斷標(biāo)識,包括: 如接收指令是切換通道指令,則檢測當(dāng)前置位的通道標(biāo)識是否為所述藍(lán)牙通道標(biāo)識,是,則關(guān)閉所述藍(lán)牙通道使能,將所述藍(lán)牙通道標(biāo)識復(fù)位,打開所述USB通道使能,并將所述USB通道標(biāo)識置位,將U所述SB通信中斷標(biāo)識復(fù)位;否,則關(guān)閉所述USB通道使能,將所述USB通道標(biāo)識復(fù)位,打開所述藍(lán)牙通道使能,并將所述藍(lán)牙通道標(biāo)識復(fù)位。
22.按權(quán)利要求14所述的方法,其特征在于, 所述藍(lán)牙模塊的參數(shù),具體包括,MAC的內(nèi)容、PIN碼和讀卡器設(shè)備名稱; 所述判斷是否讀取成功,具體包括:所述讀卡器根據(jù)所述藍(lán)牙模塊的參數(shù)中的指定字節(jié)判斷是否讀取成功;如果所述藍(lán)牙模塊的參數(shù)中的指定字節(jié)的取值等于預(yù)設(shè)字節(jié),則表示讀取成功;否則,表示讀取不成功; 當(dāng)所述讀卡器通過USB端口與上位機(jī)建立連接時,所述讀卡器通過所述USB端口充電。
23.按權(quán)利要求19所述的方法,其特征在于,所述MCU休眠,具體包括: 增加分頻數(shù)值,降低總線時鐘的頻率,MCU內(nèi)核電壓等級切換至電壓范圍為I的狀態(tài),失能第一串行通信接口、第二串行通信接口外設(shè)后,MCU休眠。
全文摘要
本發(fā)明公開一種讀卡器與上位機(jī)通信的方法,涉及通信領(lǐng)域,為解決現(xiàn)有技術(shù)中的讀卡器無法通過USB端口與不同型號的移動設(shè)備進(jìn)行通信的問題而發(fā)明。該方法包括,讀卡器系統(tǒng)初始化,打開中斷;判斷中斷標(biāo)識類型,如是藍(lán)牙通信中斷標(biāo)識置位或USB通信中斷標(biāo)識置位,接收指令并保存指令對應(yīng)的通道標(biāo)識,根據(jù)指令類型執(zhí)行相應(yīng)操作,向上位機(jī)發(fā)送相應(yīng)的響應(yīng),清除藍(lán)牙通信中斷標(biāo)識或USB通信中斷標(biāo)識;如是其他中斷標(biāo)識,則根據(jù)中斷標(biāo)識類型執(zhí)行相應(yīng)操作。
文檔編號G06F13/38GK103092802SQ20131004989
公開日2013年5月8日 申請日期2013年2月7日 優(yōu)先權(quán)日2013年2月7日
發(fā)明者陸舟, 于華章 申請人:飛天誠信科技股份有限公司