国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于微信硬件平臺的藍牙讀卡器研究

2018-03-08 08:52:29聶建波秦理想丁賀蘋
計算機測量與控制 2018年2期
關鍵詞:讀卡讀卡器IC卡

姜 帆,聶建波,李 延,秦理想,丁賀蘋

(1.北京智芯微電子科技有限公司 國家電網(wǎng)公司重點實驗室 電力芯片設計分析實驗室,北京 100192;2.北京智芯微電子科技有限公司 北京市電力高可靠性集成電路設計工程技術研究中心,北京 100192;3.國網(wǎng)浙江省電力公司物資分公司,杭州 310007)

0 引言

IC卡讀卡器是讀寫IC卡的機具設備,早前大多數(shù)讀卡器通過USB通訊線連接到PC機才能夠使用,這種方式的弊端就是移動性和便攜性較差。在移動技術快速發(fā)展的今天,隨著智能手機的迅速普及以及大規(guī)模物聯(lián)網(wǎng)的快速發(fā)展,IC卡讀卡器也迎來了跨越式發(fā)展,由以前的只支持PC機的Windows系統(tǒng)發(fā)展到可以支持手機的Android和IOS系統(tǒng),因此IC卡讀卡器正向著小型化、便攜化的方向發(fā)展,當前大多數(shù)移動式讀卡器的開發(fā)模式是在硬件讀卡設備上集成一個藍牙模塊,然后通過藍牙與手機的藍牙通訊,這種方式需要在手機上開發(fā)一款APP應用軟件。而本文所研究的讀卡器是基于微信硬件平臺技術開發(fā),用戶可以通過微信在自己的手機上實現(xiàn)對接觸式IC卡的讀卡、寫卡等操作,與APP讀卡器相比,微信讀卡器降低了開發(fā)成本,節(jié)省了項目資源,研究了利用微信操作讀卡器的方法,對于讀卡器的發(fā)展與應用具有重要意義。

1 基于微信硬件平臺的藍牙讀卡器

1.1 研究背景

在我們的日常生活中,每家每戶都有許許多多的各種卡,電卡、水卡、燃氣卡、銀行卡等,目前除銀行卡外,很多行業(yè)的IC卡,在用戶需要充值或查詢時,大多需要去柜臺或者自助值機,排隊現(xiàn)象是一個普遍的現(xiàn)象,耗費了很多時間成本,浪費了很多社會資源,特別是遇到意外的突發(fā)的情況,比如夜里著急用電的時候,卻突然斷電,而營業(yè)廳又比較遠,或者已經(jīng)關門;在比如你想知道家里還有多少電、多少水、多少氣的時候,想查詢下卡內(nèi)余額。如果營業(yè)廳就像影子一樣,隨時在你身邊多好。

自2010年以來,隨著蘋果IOS系統(tǒng)、谷歌Android系統(tǒng)的逐步成熟與商業(yè)化,智能手機如雨后春筍般迅速普及,而隨著3G乃至4G技術的發(fā)展,以及移動資費的不斷下調(diào),智能手機用戶不斷增長,據(jù)CNNC中國互聯(lián)網(wǎng)發(fā)展統(tǒng)計調(diào)查顯示,截止2016年12月[1]。我國網(wǎng)民規(guī)模達7.31億,互聯(lián)網(wǎng)普及率53.2%,與此同時手機網(wǎng)民規(guī)模達6.95億,網(wǎng)民中使用手機上網(wǎng)的人群的占比由2015年的90.1%提升至95.1%,移動互聯(lián)網(wǎng)的迅猛發(fā)展,使得很多讀卡器商家也看到了巨大商機[2]。近5年來,基于移動智能手機開發(fā)了很多種類讀卡器,如基于手機音頻口的音頻讀卡器、基于手機USB接口的OTG 讀卡器、基于手機藍牙的藍牙讀卡器等,不過這些手機都需要開發(fā)單獨的應用APP軟件。

自2011年騰訊推出微信以來,伴隨著移動手機的發(fā)展,微信以其實用、高效的特點迅速占領了市場,用戶數(shù)不斷增長,截止2016年12月,微信活躍用戶數(shù)已經(jīng)近乎超越QQ,通過微信公眾平臺,微信實現(xiàn)了人與人的連接,目前不斷涌現(xiàn)的企業(yè)公眾號或訂閱號,實現(xiàn)了人與服務的連接,在此基礎上,2014年底,基于微信公眾平臺,微信推出了微信硬件平臺,通過平臺規(guī)定的連接協(xié)議,各種智能設備如藍牙設備、WIFI設備和其他移動網(wǎng)絡設備都能方便的接入微信,完成設備—人—服務的連接[3]。

1.2 系統(tǒng)架構與工作流程

微信藍牙讀卡器基于微信硬件平臺技術,系統(tǒng)架構主要由藍牙讀卡器、手機微信、微信后臺、廠商云等4個部分組成,微信硬件平臺的接入需要2個階段,開發(fā)階段和正式上線與發(fā)售階段,本文論述的是開發(fā)階段,在開發(fā)階段需要分3步,即申請測試號、開通設備功能和設備開發(fā)。申請測試號和設備功能開通按照微信硬件平臺的規(guī)定在網(wǎng)上提交材料即可完成,這里不再贅述。設備開發(fā)需要完成讀卡器的軟硬件開發(fā)以及手機微信測試號功能開發(fā),微信藍牙讀卡器的使用流程如圖1所示。

圖1 基于微信硬件平臺的藍牙讀卡器使用流程圖

2 讀卡器設計

根據(jù)微信硬件平臺的系統(tǒng)架構,本讀卡器的研發(fā)分為3個部分,一是硬件電路設計,二是硬件底層驅(qū)動設計,三是手機微信測試號開發(fā)。以上3個部分構成了產(chǎn)品設備開發(fā)。

2.1 讀卡器硬件電路設計

讀卡器的基本功能需求如下:

1)支持接觸式IC卡接口,符合ISO/IEC 7816-3標準;

2)支持藍牙通信,藍牙需支持微信的WeChat AirSync協(xié)議;

3)內(nèi)置可充電鋰電池,容量不小于200mAh;

4)Flash空間不小于128K,SRAM不小于48K;

5)帶充電狀態(tài)指示和通信狀態(tài)指示。

Cotex-M0微控制器作為硬件系統(tǒng)的核心MC基于以上功能需求,本讀卡器選擇一款Cotex-M0微控制器作為硬件系統(tǒng)的核心MCU,該MCU硬件資源豐富,包含512K的Flash和48K的SRAM,空間足夠用,MCU集成2路7816主接口,支持與ISO/IEC 7816-3 標準T=0和T=1傳輸協(xié)議兼容的智能卡設備。集成USB2.0全速設備接口模塊,可以實現(xiàn)USB通信,此外還支持 UART、I2C、GPIO等接口。從功能、性能看完全滿足微信藍牙讀卡器功能需求。

藍牙部分需要支持微信的開放協(xié)議AirSync,且必須通過微信硬件平臺的認證,微信硬件平臺的官網(wǎng)有已經(jīng)取得認證的藍牙芯片和藍牙模塊的型號及供應商,為降低成本和加快研發(fā)進度,本讀卡器選擇北京艾威梯(IVT)的CSR藍牙模塊。該藍牙模塊支持BR/EDR/BLE等藍牙規(guī)范,支持微信的AirSync協(xié)議,硬件對外接口為UART接口,工作電壓范圍2.3~3.6 V,最大發(fā)射功率+7 dBm,有效通信距離>5 m。

此外讀卡器集成了鋰電池充電電路,該電路通過4顆led燈指示充電狀態(tài)以及是否充電完成,鋰電池標稱電壓3.7V,滿充電壓4.2V,另外讀卡器上還有一顆led,用于指示通信狀態(tài)。讀卡器硬件系統(tǒng)如圖2所示。

圖2 微信藍牙讀卡器硬件架構框圖

2.2 讀卡器軟件設計

讀卡器軟件部分包括MCU驅(qū)動部分和藍牙模塊部分,MCU與藍牙模塊之間通過UART接口連接,通信波特率115200,8個數(shù)據(jù)位,1個停止位,無校驗。

藍牙模塊對手機藍牙接口協(xié)議為AirSync,該協(xié)議已經(jīng)封裝在藍牙模塊內(nèi),對開發(fā)者而言,藍牙模塊會把UART口傳入數(shù)據(jù)流轉(zhuǎn)為符合AirSync協(xié)議的數(shù)據(jù)包發(fā)給手機,用戶無需關注藍牙模塊內(nèi)的AirSync協(xié)議是如何實現(xiàn)的。

MCU部分需要開發(fā)智能卡接口程序,用于讀寫兼容ISO7816的智能IC卡,此外需要編寫UART接收中斷處理函數(shù),并在UART的中斷處理函數(shù)中處理與藍牙模塊的通信數(shù)據(jù)。程序主函數(shù)首先進行系統(tǒng)初始化,配置MCU工作主頻并使能指令緩存模塊(ICACHE),然后進行GPIO、UART、7816等接口初始化,配置通信狀態(tài)指示燈閃爍三次,表示讀卡器上電成功,使能藍牙模塊電源VCC,在while(1)循環(huán)里,程序檢測UART接口是否產(chǎn)生接收中斷,如果藍牙模塊接收到上位機(手機微信)的消息,則會產(chǎn)生UART接收中斷并置接收成功標志ReceiveOK=1,然后判斷消息類型,如是初始化指令,則對智能卡執(zhí)行冷復位,獲得IC卡的ATR信息,并通過藍牙模塊的AirSync返回給上位機,如是讀卡指令,則發(fā)相應APDU指令給智能卡,智能卡產(chǎn)生response后,通過響應位SW1、SW2判斷是否讀卡成功,如成功則把數(shù)據(jù)返回給上位機,如不成功,則返狀態(tài)字節(jié)SW1、SW2返給手機微信。如是寫卡指令,則組織好寫卡報文發(fā)給智能卡,根據(jù)IC卡響應,判斷是否寫卡成功,并把SW1、SW2返給手機微信。讀卡器部分程序流程如圖3所示。

圖3 微信藍牙讀卡器程序流程圖

3 微信硬件平臺設計

3.1 微信硬件平臺整體架構設計

微信硬件平臺是微信在實現(xiàn)人與人連接,人與服務連接之后,騰訊推出的設備與設備及設備與服務連接的物聯(lián)網(wǎng)解決方案。微信硬件平臺規(guī)定了藍牙設備與手機微信之間的通信協(xié)議是AirSync,協(xié)議支持經(jīng)典藍牙和4.0 BLE藍牙,目前該協(xié)議支持Android和IOS兩個系統(tǒng),本微信讀卡器選擇的是4.0 BLE藍牙[4]。微信藍牙設備硬件平臺整體架構如圖4所示,其中廠商服務器和藍牙外設需要廠商開發(fā)完成,微信提供服務器的接口以對接廠商的服務器,提供手機的接口(如本文規(guī)定的藍牙協(xié)議AirSync)以對接廠商的藍牙外設[5]。

圖4 微信藍牙設備硬件平臺整體架構

3.2 功能與實現(xiàn)流程

對于本項目,根據(jù)微信硬件平臺的系統(tǒng)架構,在功能實現(xiàn)流程上,主要有測試號申請與開通、掃碼綁定與進入測試號、消息的推送與數(shù)據(jù)接收處理、功能菜單的設計等。

在開發(fā)階段里,我們使用測試號進行測試,按規(guī)定每個測試號可以支持100個設備id。測試號需要申請并開通硬件功能權限,申請測試號需要提供藍牙模塊的MAC地址和deviceId等信息,在進行測試號連接時需要記錄appID和appsecret這兩個信息,其次通過微信公眾平臺接口調(diào)試工具獲取到token令牌和URL,然后獲取一個獨立設備的id,調(diào)用API接口create_qrcode,傳入設備id獲取對應的二維碼生成串,從而生成設備二維碼圖片。設備二維碼,mac,deviceType+deviceId 是一一對應的,手機微信掃描這個二維碼后,就可以直接綁定這個藍牙設備,綁定后進入聊天界面,可以操作硬件設備,掃碼綁定流程如圖5所示。

圖5 微信藍牙設備掃碼綁定流程

掃碼綁定只是微信服務端部署的第一步,在此基礎上,需要做消息的推送與處理,為此需要在微信服務端代碼里調(diào)用相關功能類接口,以Android為例,需要用到的類接口及作用有:

1)微信推送消息處理入口類:

com.bluelight.demo.consts;com.bluelight.demo.mock;com.bluelight.demo.protocol;

com.bluelight.demo.service;

com.bluelight.demo.util;

com.bluelight.demo.web。

(1)對整條光鏈路進行故障判斷。具體方法為在兩站端連接至繼保裝置處的尾纖頭用光源和光功率計測試。一站端的尾纖頭連接光源發(fā)光,另一站端的連接光功率計測試。收發(fā)兩條鏈路都要進行檢查測試,檢查鏈路是否暢通,衰耗是否滿足繼保通道的需求。若暢通且衰耗滿足要求,則可認定為光鏈路無任何問題,故障并不在通信專業(yè)的運維界面內(nèi),流程轉(zhuǎn)至第(5)步;若不通暢或者衰耗不達標,則需要進行具體故障位置定位,流程轉(zhuǎn)至第(2)步。

2)API調(diào)用包:

com.bluelight.demo.api; com.bluelight.demo.api.json;com.bluelight.demo.api.util。

3)開發(fā)調(diào)試工具類:

com.bluelight.tools.Tools,用于調(diào)試階段:創(chuàng)建菜單、進行設備授權、生成二維碼。

4)config.properties配置公號信息及token

基于對以上類的調(diào)用,完成微信測試號與讀卡設備間的消息傳遞,即消息的推送PUSH(微信測試號→讀卡設備)和消息接收處理(讀卡設備→微信測試號)。在本部分的設計中,我們主要依據(jù)微信藍牙外設協(xié)議1.0.4(即AirSync)中的有關規(guī)定,同時加入私有的自定義協(xié)議。

表1 微信測試號發(fā)送數(shù)據(jù)給讀卡器數(shù)據(jù)包格式

表2 PUSH包中私有協(xié)議規(guī)定

·P2=0時表示有后續(xù)幀,P2=1時表示是最后一幀。

·P3為APDU的長度,每包APDU數(shù)據(jù)的最大長度為64,當APDU的長度大于64時APDU需做拆包處理。APDU指的是ISO7816協(xié)議規(guī)定的智能卡應用協(xié)議數(shù)據(jù)單元。

2)讀卡設備→微信測試號的通信協(xié)議:詳見表3所示。

表3 讀卡器返給微信測試號的數(shù)據(jù)包結構說明

·P2=0時表示有后續(xù)幀,P2=1時表示是最后一幀。

·P3為DATA+CRC16的長度,每包DATA數(shù)據(jù)的最大長度為64,當DATA的長度大于64時讀卡器做拆包處理并發(fā)送,微信測試號接收數(shù)據(jù)時需根據(jù)本約定做拆包和數(shù)據(jù)拼接。

·CRC16是data的校驗值(含9000等SW值)。

基于以上協(xié)議規(guī)定,實現(xiàn)了讀卡設備、微信、公眾平臺、廠商服務器之間的數(shù)據(jù)上下行處理,具體的流程請詳見圖6和圖7。

圖6 微信測試號消息推送(PUSH)實現(xiàn)流程

對于圖6,進一步補充說明如下:

1)用戶點擊菜單,選擇相應功能;

2)微信測試號推送菜單點擊事件到廠商服務器;

3)廠商服務器根據(jù)用戶標識查詢綁定的讀卡器信息,未綁定則無法控制讀卡器;

4)廠商服務器根據(jù)菜單要求構造要發(fā)送給設備的數(shù)據(jù),轉(zhuǎn)為二進制。

5)進行 Base64 編碼。

6)調(diào)用發(fā)送設備消息 API 接口,發(fā)送消息。

7)微信測試號收到消息后,解碼后發(fā)送給讀卡器。

圖7 讀卡器數(shù)據(jù)返回測試號實現(xiàn)流程

對于圖7中的廠商服務端,進一步補充說明如下:

1)收到讀卡設備返回的數(shù)據(jù),首先進行 BASE64 解碼。

2)將二進制數(shù)據(jù)反序列化為自定義的結構。該結構使用與設備約定好的協(xié)議解析數(shù)據(jù)。

3)進行業(yè)務邏輯處理。

4)在測試號APP中,將設備發(fā)送的消息以文本消息的形式推送到用戶微信公眾號界面進行展示,如IC卡的客戶編號、卡余額等,并響應一個resp包,返回設備發(fā)送來的數(shù)據(jù)。

5)將需要返回的數(shù)據(jù)序列化為二進制數(shù)據(jù)。

6)對二進制數(shù)據(jù)進行BASE64編碼并按照PUSH流程回復。

為了便于測試,本微信讀卡器設計了測試UI界面,在測試UI界面完成了自定義Click按鈕添加,消息封裝等功能。菜單分一二級,在Click一級菜單時,彈出二級菜單,菜單結構和主要功能如圖8所示。在綁定設備、進入測試號后,用戶Click相應功能按鈕,即可實現(xiàn)對讀卡器的操作。

圖8 微信測試號菜單結構及主要功能

經(jīng)過以上工作后,我們完成了微信測試號客戶端和廠商服務端的開發(fā),將代碼部署到服務器后,即可以展開測試。

4 試驗結果與分析

測試驗證分2步,一是使用AirSyncDebugger工具測試,二是使用開發(fā)的微信測試號進行設備聯(lián)調(diào)測試。AirSyncDebugger是騰訊開發(fā)的一個便于用戶測試硬件設備與AirSync協(xié)議是否兼容的測試APP。通過AirSyncDebugger測試,意味著藍牙設備和微信客戶端通信正常。

4.1 DebugApp測試

首先在手機上安裝AirSyncDebugge.apk,安裝完成后,打開APP后,APP會自動打開手機藍牙,然后給藍牙讀卡器上電(已插IC卡),進入APP測試界面后,選擇手動測試,選擇手動測試的好處是可以自定義PUSH包和Response包。由于本藍牙讀卡器在AirSync協(xié)議里數(shù)據(jù)包的包體里加入了私有協(xié)議,因此用手動發(fā)包方式比較合適。測試過程如下:

1)進入手動測試;

2)完成“連接設備→Auth檢測→Init檢測”基本測試,該測試屬于自動完成。若藍牙模塊得到微信授權并且按照AirSync協(xié)議開發(fā),則會自動進入下一步;

3)選擇“編輯Send Data Push包”;

4)按本文章節(jié)3.2所述的“微信測試號發(fā)送數(shù)據(jù)給讀卡器數(shù)據(jù)包格式”編輯PUSH包。注意選擇16進制編輯。編輯完點擊“發(fā)送”。本測試選擇一條對IC卡的初始化指令,包格式如下:FE 01 00 1E 75 31 00 00 0A 00 12 10 FE CF 00 01 00 0A 00 CD 00 01 05 00 12 00 00 00 18 00,其中的紅色是依據(jù)協(xié)議添加的私有協(xié)議,表示對IC卡的初始化,即取IC卡的ATR信息;

5)以上測試可通過查看APP與讀卡器之間的數(shù)據(jù)交互,確認是否與讀卡器通信成功。

本測試截取發(fā)送的PUSH包和讀卡器返回的log信息如下:

**** send Custom Push ****

data len = 30

data dump = FE 01 00 1E 75 31 00 00 0A 00 12 10 FE CF 00 01 00 0A 00 CD 00 01 05 00 12 00 00 00 18 00。該測試PUSH包中,00 CD 00 01 05 00 12 00 00 00為自定義的對IC卡取ATR指令。

------On data receive------

data length = 66

data dump = FE 01 00 42 27 12 00 03 0A 00 12 34 FE CF 00 01 00 34 00 01 00 01 00 00 00 EF 00 01 0F 3B 69 00 00 41 0A FC EB 3D BE 47 AB 9A 55 97 18 00

data receive seq = 3。該返回數(shù)據(jù)包為自定義的格式,具體見本文第三章協(xié)議部分描述。

從AirSyncDebugger測試可以看出,發(fā)送的對IC卡取ATR信息的PUSH包得到了讀卡器的正確響應。即讀卡器的硬件設備符合AirSync協(xié)議。

4.2 設備聯(lián)調(diào)測試

首先給藍牙讀卡器上電并插卡,然后打開手機藍牙及微信測試號,掃描生成的二維碼,關注測試號,并綁定連接設備,進入到測試界面后,點擊相應的功能按鈕進行測試,測試部分截圖如圖9和圖10所示。

圖9 設備聯(lián)調(diào)截圖

從設備聯(lián)調(diào)測試結果看,基于微信硬件平臺開發(fā)的讀卡器達到了設計預期。

5 結論

本設計基于微信硬件技術平臺設計,采用先進的Cotex-M0微控制器作為硬件系統(tǒng)的核心MCU,選擇通過微信認證的支持微信AirSync協(xié)議的藍牙模塊,開發(fā)了微信藍牙讀卡器的軟硬件程序,并依據(jù)微信的硬件平臺框架說明和接入流程,開發(fā)了微信測試號服務端程序,添加了必要的功能,實現(xiàn)了微信藍牙讀卡器的基本功能。該項目的研發(fā)得益于微信推出的物物相連的設計思想,受益于龐大的微信用戶,相信該項目的研究能夠提高讀卡器產(chǎn)品的用戶體驗。接下來的工作可以進一步的優(yōu)化和豐富產(chǎn)品的功能,實現(xiàn)產(chǎn)品的正式上線與發(fā)售。

圖10 設備聯(lián)調(diào)截圖

[1] 肖金華,黃麗紅.基于微信的圖書館信息服務模式研究 [J].現(xiàn)代情報,2013(6):55-57.

[2] 朱智星,白鵬飛,羅智杰,等.基于微信公眾平臺的云智能采集系統(tǒng)的設計[J].電子技術應用,2015,41(8):17-19.

[3] 劉 峰.無線多功能讀卡器的研究與設計[D].淮南:安徽理工大學,2016.6.

[4] 王金海,于 雙,國海丁,等.基于微信公眾平臺的移動血壓監(jiān)護系統(tǒng)的設計[J].生物醫(yī)學工程研究,2016,35(4):260-264.

[5] 張宏鵬,尹小亮.基于微信硬件云的智能車位鎖系統(tǒng)設計[J].計算機與數(shù)字工程,2017, 328(2):403-408.

[6] 騰訊.微信公眾平臺開發(fā)者文檔[ EB / OL ].[ 2015 - 04 - 15 ] .http:/ / mp.weixin.qq.com / wiki / home / index . html.

猜你喜歡
讀卡讀卡器IC卡
煤礦井下車輛乘人防漏識別讀卡基站設計
煤礦安全(2022年8期)2022-08-16 03:00:24
工商業(yè)IC卡控制器改造為物聯(lián)網(wǎng)控制器實踐
智能會議預約終端內(nèi)置讀卡器性能的改善*
通信技術(2021年4期)2021-05-08 06:10:46
與淘汰命運抗爭 看懂筆記本的讀卡器
在用電梯加裝外接式IC卡運行控制系統(tǒng)設計改進
一種新的無觸點IC卡的檢測方法
電子測試(2017年15期)2017-12-18 07:19:05
基于EMV非接通信規(guī)范的非接觸讀卡器設計
為二維碼識別的獻禮之作——評測平治二維碼門禁讀卡器
MATLAB實現(xiàn)組態(tài)王中TCP/IP讀卡器監(jiān)控方法
基于LINUX的PBOC3.0關鍵讀卡技術的研究與應用
桑日县| 乌苏市| 溧阳市| 定陶县| 安阳县| 樟树市| 景宁| 沾化县| 独山县| 进贤县| 吴堡县| 长阳| 南投市| 凤城市| 凌源市| 土默特右旗| 朝阳区| 惠来县| 景谷| 丹凤县| 邢台市| 南京市| 利川市| 儋州市| 龙门县| 富锦市| 溧阳市| 察雅县| 正阳县| 汝南县| 页游| 蓬安县| 信丰县| 宁夏| 慈利县| 仙游县| 怀安县| 绍兴市| 尉氏县| 崇阳县| 汤阴县|