Android下如何与读卡器进行交互

上两篇文章介绍了IC/ID卡的一些基本知识以及安卓下串口的开发,这篇文章将会介绍安卓下如何与读卡器进行交互,读取卡信息。

读卡器的类型:

根据卡的类型决定了读卡器也有多种类型,有IC卡的读卡器也有ID卡的读卡器,它们的区别在于读卡时的频率,除了读卡的频率不同,读卡器与上位机的通讯方式也有不同,本文只介绍三种读卡器读卡号的方式,分别是串口通讯读卡器,USB通讯读卡器以及网络读卡器。

串口通讯读卡器:

安卓设备可以通过监听某个串口与读卡器建立连接,数据包一般为十六进制,一般会有校验和进行包的完整性监测,这种读卡器有主动和被动之分,主动的会在读到卡号之后主动上传给上位机,在485通讯中,如果存在多个读卡器同时上传数据会有可能出现数据丢失问题。所以有了被动的方式,被动的读卡器读到卡号会先寄存在读卡器里面,等待上位机发指令然后进行数据上传,在等待的过程中读卡器不会进行新一轮的读卡,由于各个读卡器的数据上传和指令接收都是由上位机控制,所以被动的读卡器在并发时数据丢失的问题为少一些,但由于线路和干扰等原因,任何通讯方式都会存在数据丢失的可能,所以要做好超时和重试的逻辑判断。

USB读卡器:

这是一种最简单,成本最低的读卡器,读卡器只需要插入到设备的USB接口,然后打开一个输入框,刷一下卡,十进制的卡号便会自动填充到输入框,注意前提是这个输入框已获取到焦点,另外这种读卡器对window和mac等设备同样适用。

网络读卡器

这种读卡器一般只需要上位机与下位机在同一个局域网,监听对应的网络端口便可以进行通讯,网络读卡器一般通过UDP/TCP的方式进行通讯,数据包一般为十六进制,不同读卡器的包的内容和格式会有所不同。需要注意的是UDP是不可夸网段通讯的,如果要夸网段需要用TCP。

 

 

你可能感兴趣的:(android,硬件&接口)