新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > 基于Android的POS機刷卡器閱讀芯片驅動研究

        基于Android的POS機刷卡器閱讀芯片驅動研究

        作者: 時間:2013-10-23 來源:網絡 收藏

        3 驅動設計
        是Linux內核與硬件之間的接口,直接對硬件設備進行操作,同時對上層應用程序提供接口。的設備驅動主要完成以下功能:初始化和釋放設備;讀取硬件設備數據;將內核數據寫入到硬件設備;讀取應用程序數據傳送給設備文件等。在系統中刷卡器驅動應包括:Linux內核、HAL(硬件抽象層)模塊、JNI方法、application framework硬件訪問服務。刷卡器閱讀芯片與開發板的連接框圖如圖1所示。
        3.1 Linux內核刷卡器閱讀芯片
        刷卡器的基本功能就是讀取磁卡中的數據進行解碼,并將得到的解碼數據傳遞給上層應用程序。為了保護一些硬件提供商的知識產權提出了HAL層的概念,避開了Linux的GPL束縛,基本的思路是把控制硬件的動作都放在Android HAL層,而Linux driver只是完成一些簡單的數據交換。這里的Linux內核刷卡器驅動程序同樣也只是一個的字符設備驅動,設備以模塊的形式存在Linux內核中,模塊的加載和卸載通過static int_init msr_init(void)和static void_exit msr_exit(void)函數實現,static int_msr_setup_dev(structmsr_Android_ dev*dev)函數對設備進行初始化,函數static long msr_ioctI(struct inode*inode,struct file*filp,unsigned int cmd,unsigned long arg)實現驅動程序對刷卡器的I/O控制。設備的打開、關閉及具體的代碼實現可以參考《Linux設備驅動程序》。對內核配置編譯后就可以在Linux內核中得到設備模塊msr.o,在上層中可以通過調用這個模塊來實現對刷卡器的控制。
        3.2 HAL層訪問內核驅動程序
        硬件抽象層中訪問不同設備內核驅動程序的模塊是以*.so文件形式存在的,這樣可以有效的保護硬件廠商的知識產權。在runtime(JNI部分),則向HAL取得特定模塊的opeIlations,再callback這些操作函數。在HAL層包括許多模塊,而runtime只需要說明類型,即module ID,就可以取得相應模塊的operations。在HAL層中需要具體實現刷卡器的讀卡操作。首先需要查找到開始標志0x0b,然后將磁道1中的數據放到bufl中,用同樣的方法可以將磁道2,3的數據存到buf2,buf3中,磁道2最多40個字符每個5位4位數據1位奇校驗,而磁道3最多107個字符每個5位4位數據1位奇校驗。然后將buf中的數據補齊之后放在主寄存器中。HAL層中還需要使用static int check_msr_io(void)對I/O的狀態進行檢測,并對設備進行初始化static int msr_device_init(void)。具體的實現由于篇幅限制,不在進行詳細介紹。
        3.3 編寫JNI方法訪問硬件
        從編程語言看,Android系統是由基于Java語言的Java層與基于C/C++語言的C/C++層組成的,為了使這兩層相互配合、共同完成任務就必須使用Java本地接口(JNI,Java Native Interface)將這兩層有機的聯系起來。JNI提供了一系列接口,允許Java類與使用C/C++編寫的應用程序、模塊、庫進行交互操作。JNI是通過函數方法映射表static const JNINativeMethod method_table,將Java本地方法和HAL層提供的C函數接口銜接起來。
        3.4在application framework增加硬件訪問服務
        在Android Framework或應用程序開發中所需要的主要API都是以服務的形式存在的。對應用程序來說,硬件服務是運行在一個獨立的進程中的,若要調用這些服務就需要在硬件服務和應用程序之間添加通信接口。應用程序通過Interface IMsrService接口,調用硬件服務提供的Init()等函數。在刷卡器的硬件服務中是將定義的通信接口與JNI提供的接口相關聯起來。同時需要將磁卡閱讀芯片服務添加到系統服務中Service Manager.addService(“msr”,new MsrService()),這樣應用程序就能通過Java接口調用硬件服務,實現對磁卡閱讀芯片的控制。圖2以讀取芯片數據為例,簡單介紹各層之間的調用。

        本文引用地址:http://www.104case.com/article/192744.htm

        b.JPG



        4 結語
        隨著系統逐漸成熟,應用程序日益豐富,Android系統與的結合將為的發展提供更為廣闊的空間。本文在分析了Android架構的基礎上,分析刷卡器的工作原理,研究將刷卡器閱讀芯片驅動程序添加到Android系統中,為上層應用程序提供接口,實現刷卡器的功能。各層之間的接口調用銜接是整個驅動程序成功運行的基礎,在驅動設計中,每編寫一層都應進行測試,這樣能更好的定位驅動設計中存在的不足。

        linux相關文章:linux教程


        pos機相關文章:pos機原理



        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 长丰县| 板桥市| 峨眉山市| 安平县| 门源| 柘城县| 连云港市| 津南区| 齐齐哈尔市| 商洛市| 石柱| 阜宁县| 象州县| 大理市| 乃东县| 轮台县| 河池市| 称多县| 清远市| 安福县| 逊克县| 鲜城| 秦安县| 曲松县| 扬中市| 梁河县| 宣城市| 吉木乃县| 孝昌县| 中卫市| 灵璧县| 汶川县| 通州区| 枝江市| 江达县| 巴青县| 平凉市| 大关县| 曲靖市| 华坪县| 怀化市|