zoukankan      html  css  js  c++  java
  • Arduino硬件之NCF技术(近场通信技术)

    Arduino硬件之NCF技术(近场通信技术)

    版权转载:https://blog.csdn.net/import_sadaharu/article/details/52437488

    Android硬件之NFC技术

    NFC(Near Field Communication,近场通信),是一种数据传输技术。但是,与Wi-Fi、蓝牙、红外线等技术最主要的差异就是有效距离,NFC的有效距离很短,一般不超过10厘米。

    Android 2.3.1( API Level = 9 ) 开始支持NFC技术,但Android 2.x 和 3.x 对NFC的支持非常有限。而从Android 4.0 ( API Level = 14 )开始,Google 开始向NFC发力,NFC技术在Android中得到了更进一步的支持。尤其是4.1,可以利用NFC技术传递较大的数据(NFC会利用蓝牙结合进行大数据量的传输)


    NFC的工作模式:

    • 读卡器模式(Reader / Writer Mode)
    • 仿真卡模式(Card Emulation Mode)
    • 点对点模式(P2P Mode)

    读卡器模式:

    读卡器模式本质上就是通过NFC设备(比如支持NFC的Android手机)从带有NFC芯片的标签,贴纸,明信片,报纸,名片等媒介读取信息,或者将数据写到这些媒介中。贴有NFC贴纸的产品在市面上很常见。

    仿真卡模式:

    仿真卡模式就是将支持NFC的手机或者其他电子设备当成借记卡、信用卡、公交卡、门禁卡等IC卡使用。基本原理就是将相应IC卡中的信息(支付凭证)封装成数据包存储在支持NFC的手机中。在使用时,还需要一个NFC射频器(相当于刷传统IC卡使用的刷卡器)。将手机靠近NFC射频器,手机就会接收到NFC射频器发过来的信号,在通过一些列验证后,将IC卡的相应信息传入NFC射频器,最后这些IC卡数据会传入NFC射频器连接的电脑,并进行相应的处理。

    点对点(P2P)模式:

    该模式与蓝牙、红外线差不多,可以用于不同NFC设备之间进行数据交换,只是NFC的点对点模式有效距离更短(不能超过10厘米),而且传输建立速度要比红外线和蓝牙技术快很多。

    点对点模式的典型应用是两部支持NFC的手机或平板电脑实现数据的点对点传输,例如,下载音乐、交换图片、同步设备地址薄。因此,通过NFC,多个设备如数字相机,PDA,计算机,手机之间,都可以快速链接并交换资料或者服务。


    NFC、蓝牙和红外线的比较

     

    NFC

    蓝牙

    红外

    网络类型

    点对点

    单点对多点

    点对点

    使用距离

    ≤0.1m

    ≤10m

    ≤1m

    传输速度

    106、212、424、868、721、115Kbps

    2.1 Mbps

    ~1.0 Mbps

    建立时间

    < 0.1s

    6s

    0.5s

    安全性

    具备, 硬件实现

    具备,软件实现

    不具备, 使用IRFM 时除外

    通信模式

    主动-主动/被动

    主动-主动

    主动-主动

    成本

    NFC标签

    不同的NFC标签之间差异很大,有的比较简单,只支持简单的读写操作,有的会将标签设计成只读变成类似光盘一样。有的比较复杂,比如有的可以通过硬件加密限制你的访问区域。

    Android SDK API 主要支持NFC论坛标准,这种标准被称为NFC数据交换格式,简称NDEF(NFC Data Exchange Format )。

    NFC的三重过滤机制

    在一个NFC设备读取NFC标签或另一个NFC设备中的数据之前会在0.1秒之内建立NFC连接,然后数据会自动从被读的一端流向取数据的一端。数据接收端会根据具体的数据格式和标签类型调用相应的Activity(这种行为也称为Tag Dispatch)。这些Activity都需要定义Intent Filter。这些Intent Filter中就会指定不同的过滤机制,分为3个级别。因此,也称为NFC的三重过滤机制。

    三重过滤机制:

    • NDEF_DISCOVERED:只过滤固定格式的NDEF数据。例如,纯文本、指定协议(http、ftp、smb等)的URI等。
    • TECH_DISCOVERED:当ACTION_NDEF_DISCOVERED指定的过滤机制无法匹配Tag时,就会使用这种过滤机制进行匹配。这种过滤机制并不是通过Tag中的数据格式进行匹配的,而是根据Tag支持的数据存储格式进行匹配。因此这种过滤机制的范围更广。
    • TAG_DISCOVERED:如果将NFC的过滤机制看成是if……else if……else语句的话,那么这种过滤机制相当于最后的else语句。前面两种过滤机制都失败了,系统就会利用这种过滤机制来处理。这种过滤机制用来处理未识别的Tag(数据格式不对,而且Tag支持的格式也不匹配)。
       

    Android系统会一次匹配上述三种过滤机制,如果通过三重过滤机制仍然无法匹配Tag,就什么也不做。通常在成功匹配Tag后,Android设备会发出比较清脆的声音,而未成功匹配Tag,就会发出比较沉闷的声音。


    注意事项:

    • 设置权限

               <uses-permission android:name="android.permission.NFC">

    • 限制安卓版本

               <uses-sdk android:minSdkVersion="14">

    • 限制安装的设备的硬件

                <uses-feature android:name="android.hardware.nfc"

                  android:required="true" />

    • Android Beam技术

    对于在Android 4.1以后,NFC传递数据较大时,可以使用Android Beam 技术,此技术会通过NFC启用蓝牙,会利用蓝牙结合进行大数据量的传输。(此时的蓝牙无需匹配,直接在内层就被调用了)


    用于描述NDEF格式数据的两个重要的类

    NdefMessage:描述NDEF格式的信息

    NdefRecord:描述NDEF信息的一个信息段

    这两个类是Android NFC技术的核心类,无论读写NDEF格式的NFC标签,还是通过Android Beam技术传递Ndef格式的数据,都需要这两个类。


    向NFC标签写入数据的步骤

    • 获取Tag对象
    Tag detectedTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
    • 判断NFC标签的数据类型(通过Ndef.get方法)
    Ndef ndef = Ndef.get(tag);
    • 写入数据
    ndef.writeNdefMessage(ndefMessage);

    例子:通过NFC自动启动Android应用程序

    程序地址:https://github.com/sadaharusong/AutoNFC/

    此例子,先获取本机中安装的所有程序,然后选择之后,需要将对应的NFC标签或者贴纸靠近手机,然后就会自动启动。


    NDEF的规范

    需要与NFC标签传递数据时,需要一定的格式,也就是NDEF的各种格式规范:

    在网址:http://www.nfc-forum.org/specs/spec_dashboard   中。

    其中,这些规范十分常用:

     


    Android Beam

    Android Beam的基本理念就是两部NFC设备靠近时,通过触摸一部NFC设备的屏幕,将数据推向另外一部NFC设备。PS:在传递过程中需保持较近的距离。

  • 相关阅读:
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第8章 读书笔记(待更新)
    Webpack 2 视频教程 007
    Hie with the Pie
    P4550 收集邮票
    Bloodsucker
    P2627 [USACO11OPEN]Mowing the Lawn G
    SP1026 FAVDICE
    HDU4405 Aeroplane chess
    Card Collector
    LOOPS(概率dp)
  • 原文地址:https://www.cnblogs.com/lzc978/p/12031536.html
Copyright © 2011-2022 走看看