衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

454398 ? 來源:工程師吳畏 ? 作者:工程師吳畏 ? 2019-11-19 17:01 ? 次閱讀

步驟1:了解格式

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

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

每個磁道中的數據均通過磁編碼域翻轉。長話短說:一系列的域翻轉對波形進行編碼,該波形被解釋為二進制。此編碼中的二進制0是任意頻率。 1是該頻率的兩倍。

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

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

磁卡的磁道1比磁道2更靠近卡的邊緣.11英寸。由于Square讀卡器被設置為讀取磁道2,因此如果我們在磁道中粘貼一些東西,讀取器將卡提升.11英寸時,讀取頭將與軌道1對齊,而不是與軌道2對齊。

您可以通過從另一張卡上剪切0.11英寸的條來創建墊片。我還發現廉價垃圾袋的纏結也差不多。

第3步:錄制一些音頻

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

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

頻率,channelConfiguration,

audioEncoding,bufferSize);

audioRecord.startRecording();

錄音時,我們需要不斷從錄音機中讀取數據并將其放入緩沖區中。

//創建一個DataOutputStream以寫入音頻數據

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中提取并簡化的。錄制后,您將擁有一個字節數組,代表麥克風中的樣本,可以進行分析。

步驟4:解碼音頻

因此,現在我們的設備上有很多音頻。我們如何解碼它?我的代碼基于Android教程,該教程顯示了如何記錄數據然后進行回放。就我而言,我確保將音頻保存為16位PCM編碼。我以44100hz采樣。在Android(以及其他地方,我想)上,16位PCM數據意味著每個樣本都是一個帶符號的16位值。因為我們只關心頻率,所以我們只需要關心“零交叉”之間有多少時間。過零是指信號從正向變為負,反之亦然。 0位將由2個交叉點之間的間隔表示,而1將在大約相同的時間段內有一個額外的交叉點。

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

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

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

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

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

責任編輯:wv

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Android
    +關注

    關注

    12

    文章

    3945

    瀏覽量

    127947
  • BSQUARE
    +關注

    關注

    0

    文章

    5

    瀏覽量

    8766
  • 磁條卡
    +關注

    關注

    0

    文章

    8

    瀏覽量

    6891
收藏 人收藏

    評論

    相關推薦

    Android 實現讀卡器讀取各種卡號的信息

    。ConstraintLayout是Android開發中非常強大的一個布局管理器,它允許你以相對位置的方式定義界面中的元素,使得布局更加靈活和易于管理。下面是對這段代碼的簡單解釋: :這是XML聲明,指定了XML的版本為
    的頭像 發表于 12-30 15:45 ?170次閱讀
    <b class='flag-5'>Android</b> 實現讀卡器<b class='flag-5'>讀取</b>各種卡號的信息

    網絡讀卡器qt代碼示例,包含獲取本地ip地址。讀取IC卡號,讀取扇區數據

    getAllIPAddresses() { QStringList ips; QList list = QNetworkInterface::allAddresses(); for (int i = 0; i //解析讀取
    的頭像 發表于 12-30 09:22 ?172次閱讀
    網絡讀卡器qt代碼示例,包含獲取本地ip地址。<b class='flag-5'>讀取</b>IC<b class='flag-5'>卡</b>卡號,<b class='flag-5'>讀取</b>扇區數據

    android手機上emulate應用程序的方法

    Android手機上模擬(emulate)應用程序的方法通常涉及到使用Android模擬器(Emulator)或類似的工具來模擬Android環境,以便在沒有實際物理設備的情況下運行
    的頭像 發表于 12-05 15:33 ?480次閱讀

    使用TF的常見問題

    、視頻、文檔等數據。 1. TF無法被識別 問題描述: 當你將TF插入設備時,設備無法識別或讀取TF
    的頭像 發表于 11-04 09:54 ?1680次閱讀

    谷歌正式向Pixel設備推送Android 15穩定版

    10月17日最新資訊,谷歌今日已正式向Pixel系列設備推送Android 15穩定版更新。目前,已有部分Pixel設備成功完成升級,而更大范圍的推送預計將在本周末進行。
    的頭像 發表于 10-17 16:31 ?509次閱讀

    智能IC測試設備的技術原理和應用場景

    提供工作電壓,完成數據的讀寫操作。 數據處理: 測試設備向IC發送各種指令(如讀取數據、寫入數據、修改數據等),并接收來自IC的響應。 通過分析響應數據,測試
    發表于 09-26 14:27

    物聯網產品在生產測試過程中快速讀取貼片SIM卡號的方案

    卡號,讀卡表產品可以解決在研發測試過程中,方便讀取物聯網貼片卡號的問題。 二、該問題帶來的危害及影響 如果不讀出設備的SIM卡號,無法將設備
    的頭像 發表于 09-23 16:14 ?420次閱讀
    物聯網產品在生產測試過程中快速<b class='flag-5'>讀取</b>貼片SIM卡號的方案

    如何讀取多張的UID,有償

    應用場景是在一摞卡片,需要通過循環讀取卡片的UID,來獲取所有卡片的UID。但是普通MFRC522模組的磁場強度無法給多張供電,想咨詢如何給一摞供電,當然模組可以移動,或許只需要給部分卡片供電即可。紅包200元,財力有限,請
    發表于 08-17 21:50

    丟掉數據線,你還會調試Android設備嗎?

    ADB(AndroidDebugBridge)作為Android開發中非常重要的工具,開發者可以使用ADB設備在電腦上對Android設備
    的頭像 發表于 08-14 17:09 ?452次閱讀
    丟掉數據線,你還會調試<b class='flag-5'>Android</b><b class='flag-5'>設備</b>嗎?

    谷歌宣布對Android設備流媒體服務進行重大擴展

    8月8日,谷歌宣布對其Android設備流媒體服務進行重大擴展,此舉旨在進一步賦能開發者,讓他們能夠遠程接入并測試更多品牌及型號的真實Android物理設備。自2014年該服務問世以來
    的頭像 發表于 08-08 16:30 ?732次閱讀

    怎樣修改LVGL的lv_port_fs文件,讓它使用rt-thread的DFS文件系統中的API函數讀取SD中的圖片?

    我想問一下,怎樣修改LVGL的lv_port_fs文件,可以讓它使用rt-thread的DFS文件系統中的API函數(這些API函數在rt-thread的dfs_posix.c中)讀取SD中的圖片?
    發表于 07-11 06:53

    歐姆龍如何合法地解除PLC的讀取保護

    讀取保護狀態,以防止未授權的訪問或修改。 本文將討論如何合法地解除PLC的讀取保護,以便在需要時進行正常的維護和升級操作。 了解PLC的讀取保護機制 在嘗試解除讀取保護之前,首先需要了
    的頭像 發表于 06-11 17:12 ?2829次閱讀

    X Square獲得1050萬美元A輪融資

    近日,專注于人工智能與機器人領域技術創新的X Square公司成功獲得了一筆1050萬美元的A輪融資。此次融資由Wavemaker Partners領投,同時獲得了SEEDS Capital和Goldbell Corporation的參與投資。
    的頭像 發表于 05-31 11:45 ?1131次閱讀

    Square Enix北美、歐洲分社調整發行策略,啟動裁員計劃

    近期,Square Enix發布的財務報告顯示,公司正計劃對海外業務部門進行全面重組,并通過結構性改革來降低歐洲及美國辦公室的運營成本。
    的頭像 發表于 05-14 10:09 ?417次閱讀

    ST25DV04可以讀取實體IC嗎?

    我最近打算使用ST25DV04做一個NFC,這款芯片可以讀取實體IC,獲取IC信息,并模擬IC刷卡嗎?
    發表于 03-18 07:04
    百家乐游戏大厅下| 百家乐官网技巧辅助软件| 百家乐官网网络赌城| 百家乐官网怎么样玩| 游戏房百家乐官网赌博图片| 网址百家乐官网的玩法技巧和规则 | 百家乐官网筹码套装100片| 至尊百家乐贺一航| 模拟百家乐下| 东方夏威夷网站| 百家乐官网机器手怎么做弊| 庞博百家乐官网的玩法技巧和规则| 百家乐经验在哪找| 喜来登百家乐的玩法技巧和规则 | 百家乐官网太阳城娱乐城| 云鼎百家乐官网的玩法技巧和规则| 视频百家乐信誉| 大发888官方授权网| 战神国际娱乐平| 百家乐官网与21点| 百家乐技巧-百家乐开户指定代理网址 | 合法赌博网站| 百家乐官网游戏单机牌| 百家乐明灯| 大世界娱乐| 百家乐官网职业赌徒的解密| 百家乐网络游戏平台| 大发888官网吧| 真人百家乐官网赌法| 网上百家乐能作弊吗| 天健棋牌大厅下载| 百家乐官网筹码价格| 隆昌县| 九州百家乐官网的玩法技巧和规则| 网上百家乐是真的| 安康市| 做生意招牌什么颜色旺财| 聚宝盆百家乐的玩法技巧和规则 | 百家乐官网攻略投注法| 百家乐连输的时候| 网络博彩公司|