91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣使用Square Reader和Android設(shè)備讀取任何磁條卡

454398 ? 來(lái)源:工程師吳畏 ? 作者:工程師吳畏 ? 2019-11-19 17:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

步驟1:了解格式

怎樣使用Square Reader和Android設(shè)備讀取任何磁條卡

磁性編碼條帶數(shù)據(jù)遵循通用標(biāo)準(zhǔn)。磁條由3條物理上分開(kāi)的“磁道”組成。磁道1最靠近卡的底部,磁道3最高。 Square的讀取器位于讀取軌道2的位置。軌道2是最常用的軌道,但是大多數(shù)信用卡也使用軌道1。軌道2包括卡號(hào)和有效期。音軌1包括那個(gè)加號(hào)。根據(jù)特定的卡,可能還會(huì)有其他數(shù)據(jù)。這些磁道的寬度規(guī)定為0.11英寸,因此要使用Square的讀取器讀取磁道1,我們只需要重新布置條紋,使磁道1與讀取頭對(duì)齊即可。

每個(gè)磁道中的數(shù)據(jù)均通過(guò)磁編碼域翻轉(zhuǎn)。長(zhǎng)話短說(shuō):一系列的域翻轉(zhuǎn)對(duì)波形進(jìn)行編碼,該波形被解釋為二進(jìn)制。此編碼中的二進(jìn)制0是任意頻率。 1是該頻率的兩倍。

數(shù)據(jù)以一組前導(dǎo)零開(kāi)始,以建立基本頻率。在可變數(shù)目的零之后,出現(xiàn)開(kāi)始標(biāo)記。對(duì)于音軌2,開(kāi)始標(biāo)記為“;”。每個(gè)字符被編碼為整數(shù),最低有效位在前。對(duì)于磁道2,每個(gè)字符包含4個(gè)數(shù)據(jù)位和1個(gè)奇偶校驗(yàn)位。為每個(gè)字符設(shè)置奇偶校驗(yàn)位,以使1的數(shù)量為奇數(shù)。如果為每個(gè)字符的整數(shù)值加上48(ASCII編碼為“ 0”),則將顯示ASCII字符。除了數(shù)字“ 0”到“ 9”之外,磁道2還可以編碼一些其他字符,包括“;”。 (開(kāi)始標(biāo)記),“ =“(字段分隔符)和“?” (末尾)。

步驟2:制作墊片以讀取音軌1

磁卡的磁道1比磁道2更靠近卡的邊緣.11英寸。由于Square讀卡器被設(shè)置為讀取磁道2,因此如果我們?cè)诖诺乐姓迟N一些東西,讀取器將卡提升.11英寸時(shí),讀取頭將與軌道1對(duì)齊,而不是與軌道2對(duì)齊。

您可以通過(guò)從另一張卡上剪切0.11英寸的條來(lái)創(chuàng)建墊片。我還發(fā)現(xiàn)廉價(jià)垃圾袋的纏結(jié)也差不多。

第3步:錄制一些音頻

就電話而言,Square閱讀器只是一個(gè)麥克風(fēng)。因此,要從卡中獲取數(shù)據(jù),我們需要記錄音頻。請(qǐng)參閱其他Android文檔(例如本教程:http://eurodev.blogspot.com/2009/09/raw-audio-manipulation-in-android.html)以獲取詳細(xì)說(shuō)明,或使用RhombusLib(請(qǐng)參閱最后的鏈接) )。以下是一些Java代碼,可以開(kāi)始在Android應(yīng)用中記錄音頻:

AudioRecord audioRecord =新的AudioRecord(MediaRecorder.AudioSource.MIC,

頻率,channelConfiguration,

audioEncoding,bufferSize);

audioRecord.startRecording();

錄音時(shí),我們需要不斷從錄音機(jī)中讀取數(shù)據(jù)并將其放入緩沖區(qū)中。

//創(chuàng)建一個(gè)DataOutputStream以寫(xiě)入音頻數(shù)據(jù)

ByteArrayOutputStream os = new ByteArrayOutputStream ();

BufferedOutputStream bos =新的BufferedOutputStream(os);

DataOutputStream dos =新的DataOutputStream(bos);

short bufferVal;

short [] buffer = new short [bufferSize];

while(recording){

bufferReadResult = audioRecord.read(buffer,0,bufferSize);

for(int i = 0; i bufferVal = buffer [i];

dos.writeShort(buffer [i]);

}

}

dos.close();

byte [] audioBytes = os.toByteArray();

上面的代碼是從RhombusLib中提取并簡(jiǎn)化的。錄制后,您將擁有一個(gè)字節(jié)數(shù)組,代表麥克風(fēng)中的樣本,可以進(jìn)行分析。

步驟4:解碼音頻

因此,現(xiàn)在我們的設(shè)備上有很多音頻。我們?nèi)绾谓獯a它?我的代碼基于Android教程,該教程顯示了如何記錄數(shù)據(jù)然后進(jìn)行回放。就我而言,我確保將音頻保存為16位PCM編碼。我以44100hz采樣。在Android(以及其他地方,我想)上,16位PCM數(shù)據(jù)意味著每個(gè)樣本都是一個(gè)帶符號(hào)的16位值。因?yàn)槲覀冎魂P(guān)心頻率,所以我們只需要關(guān)心“零交叉”之間有多少時(shí)間。過(guò)零是指信號(hào)從正向變?yōu)樨?fù),反之亦然。 0位將由2個(gè)交叉點(diǎn)之間的間隔表示,而1將在大約相同的時(shí)間段內(nèi)有一個(gè)額外的交叉點(diǎn)。

每個(gè)磁道中的卡數(shù)據(jù)以一些(可變)數(shù)0開(kāi)始,以建立基本頻率。我所做的是聽(tīng)取高于某個(gè)“安靜”閾值的第一個(gè)樣本,然后計(jì)算零交叉之間的樣本數(shù)。該數(shù)字將成為0的基值。由于這些卡是手工刷卡的,因此從掃描開(kāi)始到結(jié)束,實(shí)際頻率將有所變化。因此,我做了一個(gè)簡(jiǎn)單的方法,確定自上次零交叉以來(lái)的樣本數(shù)量是否更接近基本頻率或兩倍于基本頻率(基本樣本數(shù)量的一半)。然后,它會(huì)相應(yīng)地調(diào)整預(yù)期的基本頻率。只要兩個(gè)邏輯位之間的變化很小,此方法就可以很好地工作。而且它們幾乎肯定會(huì)。

要檢測(cè)零交叉,我們需要查看每個(gè)樣本的符號(hào)并將其與前一個(gè)樣本的符號(hào)進(jìn)行比較。如果它們不同(一個(gè)正,一個(gè)負(fù)),則信號(hào)在這些樣本之間越過(guò)0。

基本算法是遍歷字節(jié)數(shù)組,提取樣本。計(jì)算零交叉之間的樣本數(shù),并將其與0或1的預(yù)期計(jì)數(shù)進(jìn)行比較。好的,經(jīng)過(guò)一番揮舞之后,我們現(xiàn)在有了一個(gè)二進(jìn)制數(shù)據(jù)序列,我們想回過(guò)頭來(lái)。轉(zhuǎn)換成ASCII。最常見(jiàn)的編碼(也是我編寫(xiě)的唯一處理程序)將每個(gè)字符編碼為一定數(shù)量的位,再加上一個(gè)奇偶校驗(yàn)位。對(duì)于音軌2,字符為4位,奇偶校驗(yàn)為1,組成5位組。從最低有效位到最高讀取位,最后一位是奇偶校驗(yàn)位。將奇偶校驗(yàn)位設(shè)置為使組中的1的個(gè)數(shù)為奇數(shù)。在我的實(shí)現(xiàn)中,我只是忽略了奇偶校驗(yàn)位,但這將有助于確定讀取是否正確。在磁道1中,字符的6位加上奇偶校驗(yàn)。

磁道的字符集也有所不同,但是兩者都是ASCII子集,具有一些偏移量。對(duì)于僅編碼一些符號(hào)和數(shù)字的磁道2,字符集從48開(kāi)始,這是“ 0”的ASCII碼。因此,如果我們得到0,0,0,0,1作為我們的角色,則將其變成0,加48,得到48。類(lèi)似地,1,0,0,0,0為1。1 + 48 = 49 = ASCII“ 1”。

對(duì)于軌道1,字符集以“”(空格)開(kāi)頭,即ASCII32。因此,我們?cè)诮獯a的數(shù)字值上加上32,得到ASCII字符。之后,我們有了數(shù)據(jù),因此剩下的一切都只是在掛接UI膠水。

責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    4030

    瀏覽量

    134089
  • BSQUARE
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    8865
  • 磁條卡
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    7029
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    RTC設(shè)備無(wú)法讀取怎么解決?

    我正在嘗試編寫(xiě)一些裸機(jī)代碼,當(dāng)我嘗試讀取rtc設(shè)備的寄存器時(shí),發(fā)現(xiàn)讀寫(xiě)的值都是0。我嘗試在uboot中查看對(duì)應(yīng)地址的值,同樣無(wú)法寫(xiě)入,讀取的也是。 按照寄存器手冊(cè)的描述: CFG-RTC的默認(rèn)值是8,但是我并沒(méi)有看到。 請(qǐng)問(wèn)
    發(fā)表于 02-27 06:19

    深度剖析PTX100R NFC Reader IC:特性、功能與應(yīng)用全解析

    深度剖析PTX100R NFC Reader IC:特性、功能與應(yīng)用全解析 在當(dāng)今的電子設(shè)備中,NFC(近場(chǎng)通信)技術(shù)已經(jīng)變得越來(lái)越重要,它為設(shè)備之間的短距離通信提供了便捷、高效的解決方案
    的頭像 發(fā)表于 12-29 13:55 ?296次閱讀

    PTX105R NFC Reader IC:設(shè)計(jì)與應(yīng)用的深度解析

    PTX105R NFC Reader IC:設(shè)計(jì)與應(yīng)用的深度解析 在電子設(shè)備高度發(fā)展的今天,近場(chǎng)通信(NFC)技術(shù)憑借其便捷性和高效性,在眾多領(lǐng)域得到了廣泛應(yīng)用。PTX105R作為一款高度集成
    的頭像 發(fā)表于 12-29 11:55 ?428次閱讀

    PTX105R NFC Reader IC:高集成度與卓越性能的完美結(jié)合

    PTX105R NFC Reader IC:高集成度與卓越性能的完美結(jié)合 在當(dāng)今的電子設(shè)備領(lǐng)域,近場(chǎng)通信(NFC)技術(shù)已經(jīng)成為了一種不可或缺的功能。無(wú)論是物聯(lián)網(wǎng)設(shè)備、門(mén)禁系統(tǒng)、支付終端還是可穿戴
    的頭像 發(fā)表于 12-29 11:40 ?512次閱讀

    Joycode 無(wú)法跨項(xiàng)目讀取源碼怎么辦?MCP Easy Code Reader 幫你解決!

    本篇文章主要介紹 MCP Server Easy Code Reader ,它可以幫助你在使用 Joycode 編寫(xiě)代碼時(shí),根據(jù)調(diào)用鏈路將多個(gè)項(xiàng)目或 Jar 包中相關(guān)的代碼讀取到上下文中,供
    的頭像 發(fā)表于 11-19 15:50 ?1090次閱讀
    Joycode 無(wú)法跨項(xiàng)目<b class='flag-5'>讀取</b>源碼怎么辦?MCP Easy Code <b class='flag-5'>Reader</b> 幫你解決!

    華大電子助力多家銀行發(fā)行銀聯(lián)-VISA雙標(biāo)

    。這款集銀聯(lián)PBOC標(biāo)準(zhǔn)與國(guó)際EMV標(biāo)準(zhǔn)于一體的芯片,有效解決傳統(tǒng)磁條卡在安全性與兼容性方面短板,標(biāo)志著我國(guó)金融芯片產(chǎn)品實(shí)現(xiàn)從本土化到全球化的跨越式突破。
    的頭像 發(fā)表于 07-25 16:18 ?1020次閱讀

    aicube的ngpu索引該如何添加?

    請(qǐng)問(wèn)有人知道aicube怎樣才能讀取n的gpu索引呢,我已經(jīng)安裝了cuda和cudnn,在全局的py里添加了torch,能夠調(diào)用gpu,當(dāng)還是只能看到默認(rèn)的gpu0,顯示不了gpu1,gpu0是集顯,訓(xùn)練速度太感人了 你只有一塊英偉達(dá)的卡,aicube不支持AMD的顯
    發(fā)表于 07-25 08:18

    如何為 Android 操作系統(tǒng)/設(shè)備生成 APK ?

    如何為 Android 操作系統(tǒng)/設(shè)備生成 APK ?
    發(fā)表于 06-30 07:12

    CYUSB3025如何同時(shí)讀取2張SD嗎?

    我們想使用 CYUSB3025 讀取 2 張 SD ,但是我們正在進(jìn)行板載測(cè)試。 最后它只讀了一張。 我可以知道如何同時(shí)讀取 2 張 SD
    發(fā)表于 05-19 07:51

    如何在Android設(shè)備上安裝Cyusb3014芯片驅(qū)動(dòng)?

    1.如何在Android設(shè)備上安裝Cyusb3014芯片驅(qū)動(dòng)? 我們?cè)?Windows 上有 FX3 驅(qū)動(dòng)程序 SDK。 2.如何在Android系統(tǒng)上下載固件到芯片中?
    發(fā)表于 05-15 07:23

    【STM32系統(tǒng)】基于STM32設(shè)計(jì)的SD數(shù)據(jù)讀取與上位機(jī)顯示系統(tǒng)(SDIO接口驅(qū)動(dòng)、雷龍貼片SD

    。   1.2 研究目的   本研究的主要目的是基于STM32F103微控制器,設(shè)計(jì)一個(gè)能夠讀取SD數(shù)據(jù)并顯示到上位機(jī)的系統(tǒng)。SD的數(shù)據(jù)讀取不僅是為了驗(yàn)證存儲(chǔ)
    發(fā)表于 05-09 16:11

    如何從FX2LP設(shè)備的EEPROM讀取固件(.iic)?

    是否有任何工具可以從 FX2LP 設(shè)備的 EEPROM 讀取固件(.iic)? 我想備份舊固件來(lái)重新編程我的設(shè)備,但我丟失了舊的 IIC 固件。
    發(fā)表于 05-07 06:37

    Android 16有哪些變更

    全球范圍內(nèi)有超過(guò) 30 億臺(tái) Android 設(shè)備正在使用中,這使得 Android 生態(tài)系統(tǒng)比以往任何時(shí)候都更加活躍。Android 移動(dòng)
    的頭像 發(fā)表于 03-27 10:18 ?1897次閱讀

    門(mén)禁有哪些分類(lèi)

    的時(shí)候芯片內(nèi)碼號(hào)就已經(jīng)固話不可更改,每次使用只是讀取ID的卡號(hào)和相關(guān)信息進(jìn)行關(guān)聯(lián)。ID與磁卡一樣,都僅僅使用了“的號(hào)碼”而已,內(nèi)除了
    的頭像 發(fā)表于 03-17 17:24 ?7919次閱讀
    門(mén)禁<b class='flag-5'>卡</b>有哪些分類(lèi)

    Android 16的首個(gè)Beta版現(xiàn)已推出,升級(jí)功能有這些

    Android 16 的首個(gè) Beta 版現(xiàn)已推出,這是向開(kāi)發(fā)者和早期體驗(yàn)者開(kāi)放試用的最好時(shí)機(jī)。您現(xiàn)在可以注冊(cè)任何受支持的 Pixel 設(shè)備,以便以 OTA 方式獲取此版本和未來(lái)的 Andro
    的頭像 發(fā)表于 03-14 10:58 ?1709次閱讀
    <b class='flag-5'>Android</b> 16的首個(gè)Beta版現(xiàn)已推出,升級(jí)功能有這些