哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

步驟1:了解格式

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

磁性編碼條帶數(shù)據(jù)遵循通用標(biāo)準(zhǔn)。磁條由3條物理上分開的“磁道”組成。磁道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ù)均通過磁編碼域翻轉(zhuǎn)。長(zhǎng)話短說:一系列的域翻轉(zhuǎn)對(duì)波形進(jìn)行編碼,該波形被解釋為二進(jìn)制。此編碼中的二進(jìn)制0是任意頻率。 1是該頻率的兩倍。

數(shù)據(jù)以一組前導(dǎo)零開始,以建立基本頻率。在可變數(shù)目的零之后,出現(xiàn)開始標(biāo)記。對(duì)于音軌2,開始標(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還可以編碼一些其他字符,包括“;”。 (開始標(biāo)記),“ =“(字段分隔符)和“?” (末尾)。

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

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

您可以通過從另一張卡上剪切0.11英寸的條來創(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ì)說明,或使用RhombusLib(請(qǐng)參閱最后的鏈接) )。以下是一些Java代碼,可以開始在Android應(yīng)用中記錄音頻:

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

頻率,channelConfiguration,

audioEncoding,bufferSize);

audioRecord.startRecording();

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

//創(chuàng)建一個(gè)DataOutputStream以寫入音頻數(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í)間。過零是指信號(hào)從正向變?yōu)樨?fù),反之亦然。 0位將由2個(gè)交叉點(diǎn)之間的間隔表示,而1將在大約相同的時(shí)間段內(nèi)有一個(gè)額外的交叉點(diǎn)。

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

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

基本算法是遍歷字節(jié)數(shù)組,提取樣本。計(jì)算零交叉之間的樣本數(shù),并將其與0或1的預(yù)期計(jì)數(shù)進(jìn)行比較。好的,經(jīng)過一番揮舞之后,我們現(xiàn)在有了一個(gè)二進(jìn)制數(shù)據(jù)序列,我們想回過頭來。轉(zhuǎn)換成ASCII。最常見的編碼(也是我編寫的唯一處理程序)將每個(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開始,這是“ 0”的ASCII碼。因此,如果我們得到0,0,0,0,1作為我們的角色,則將其變成0,加48,得到48。類似地,1,0,0,0,0為1。1 + 48 = 49 = ASCII“ 1”。

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

責(zé)任編輯:wv

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

    關(guān)注

    12

    文章

    4035

    瀏覽量

    134452
  • BSQUARE
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

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

    關(guān)注

    0

    文章

    8

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    將具有 I2S 輸出的設(shè)備連接到 imx93evk,無法讀取任何值是哪里出了問題?

    我想將具有 I2S 輸出的設(shè)備連接到 imx93evk。 由于我想要直接的 I2 而不是中間的編解碼器,因此我不需要執(zhí)行任何作,因?yàn)槟J(rèn)情況下引腳將位于 EXPI 中。 然后,我將設(shè)備連接到以下
    發(fā)表于 04-14 07:02

    探秘MAXQ1743:深度安全的磁卡讀取IC解決方案

    探秘MAXQ1743:深度安全的磁卡讀取IC解決方案 在電子設(shè)備日新月異的今天,安全性能成為了各類設(shè)備設(shè)計(jì)中至關(guān)重要的一環(huán)。對(duì)于磁卡讀取設(shè)備
    的頭像 發(fā)表于 04-08 14:35 ?87次閱讀

    使用 iw612 Android 14 或 15 NXP 版本中是否有任何可用的 LE 音頻支持?

    使用 iw612 Android 14 或 15 NXP 版本中是否有任何可用的 LE 音頻支持?
    發(fā)表于 04-03 07:26

    73S1217F:多功能智能讀取器的理想之選

    系統(tǒng)(System-on-Chip)設(shè)備,專為智能讀取器應(yīng)用而設(shè)計(jì)。它擁有ISO - 7816 / EMV接口、USB 2.0接口(全速12Mbps - 從設(shè)備)和5x6 PINpa
    的頭像 發(fā)表于 03-29 15:05 ?437次閱讀

    73S1209F:多功能智能讀取IC的深度解析

    73S1209F:多功能智能讀取IC的深度解析 在智能應(yīng)用領(lǐng)域,Teridian Semiconductor Corporation的73S1209F是一款值得深入研究的芯片。它以其多功能性
    的頭像 發(fā)表于 03-29 14:55 ?226次閱讀

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

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

    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 ?542次閱讀

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

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

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

    本篇文章主要介紹 MCP Server Easy Code Reader ,它可以幫助你在使用 Joycode 編寫代碼時(shí),根據(jù)調(diào)用鏈路將多個(gè)項(xiàng)目或 Jar 包中相關(guān)的代碼讀取到上下文中,供
    的頭像 發(fā)表于 11-19 15:50 ?1237次閱讀
    Joycode 無法跨項(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 ?1125次閱讀

    如何為 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)? 我想備份舊固件來重新編程我的設(shè)備,但我丟失了舊的 IIC 固件。
    發(fā)表于 05-07 06:37
    和田市| 上犹县| 嵩明县| 得荣县| 云安县| 金坛市| 九龙城区| 仁寿县| 余江县| 和顺县| 芒康县| 永春县| 夏河县| 响水县| 水富县| 新巴尔虎右旗| 金寨县| 华阴市| 黑河市| 红原县| 沧州市| 洛阳市| 琼结县| 山西省| 简阳市| 张家口市| 驻马店市| 黄大仙区| 海门市| 增城市| 岐山县| 大兴区| 灵璧县| 鹿邑县| 姚安县| 广西| 铁岭市| 进贤县| 荔浦县| 米林县| 安西县|