RFID课程设计-图书管理系统用户端设计

该课程设计介绍了如何使用NFC技术构建一个图书馆管理系统,包括用户登录、图书借阅和卡片管理功能。系统利用Android设备读取NFC标签,通过ACTION_NDEF_DISCOVEREDIntent处理数据,并在服务器端实现用户和图书信息的管理。设计涵盖了移动端应用、服务器端接口和数据库设计,以及NFC标签的调度和映射机制。

RFID课程设计-图书管理系统用户端设计课程设计题目课程设计任务内容题目设计基本原理NFC开发概述标签调度系统如何将 NFC 标签映射到 MIME 类型和 URI如何将 NFC 标签分发到应用在 Android 清单中请求 NFC 访问权限过滤 NFC IntentACTION_NDEF_DISCOVEREDACTION_TAG_DISCOVERED从 Intent 中获取信息总体框架设计移动端读写器服务器端数据库管理后台UI卡片标签端系统流程移动端设计activity设计概览用户登录逻辑借阅图书逻辑activity转跳逻辑服务器端设计用户相关接口登录获取用户信息图书相关接口获取图书列表获取图书详情响应参数响应示例借阅相关接口图书借阅接口图书归还接口查看借阅记录接口后台UI与数据库设计卡片数据结构设计用户卡片数据结构图书卡片数据结构结果演示总结与展望总结:展望:收获:心得:

课程设计教学目的

RFID 是物联网工程专业的核心课程,通过本课程设计,使学生熟悉 RFID 工作的基本原理、掌握 RFID 应用系统开发的基本步骤。要求学生掌握 RFID 实验的基本操作,并结合应用背景进行系统设计和开发。通过调研 RFID 的应用情景,设计一个模仿实际应用的 RFID 系统,包括运用 RFID 标签和读写器,并将 RFID 系统结合上层数据库系统进行开发,完成一个完整的演示系统。从而提高学生利用 RFID 来进行应用系统开发的分析、设计、实现的能力,以及使用 RFID 技术解决实际问题的能力。

对于本次课设,我将对应得代码内容发布在了github上,欢迎收藏:

课程设计题目


课程设计任务内容

任务一:校园卡消费系统。基于之前《RFIF与智能卡设计》课程课内实验构建的读卡器卡片实验系统(手机-13.56MHz- rfid卡片)进行拓展,实现读卡器系统与远程服务器(高层)的通信,并在高层构建数据库以及相应的管理系统,组成一个校园卡充值与消费系统,远程服务器须为任务组内另一个同学的手机或者是笔记本。要求完成整个物联网系统的方案设计(含软硬件框图,服务器端有数据库设计,人机界面管理设计)、程序设计、程序实现、程序测试与验证。

任务二:基于任务一所述读卡器、所述卡片、所述服务器构建的任意物联网应用系统。

任务三:学生自主选择项目(针对有相关条件的学生)。面向任意场景,凡是能利用RDIF读卡器针对卡片进行读写,并能体现物联网智慧感知、泛在传输、信息存储与检索、智能决策与控制四个维度的一切项目,并能形成一个完整的可考核的系统。

题目设计

设计一套基于手机NFC系统的图书馆管理系统,实现以下基本功能:

  • 用户管理:实现用户签到/签离操作,管理用户的基本信息;

  • 图书管理:实现对图书基本内容的管理,包括图书信息的管理和借阅归还的操作;

  • 卡片管理:实现基于多种卡片协议的管理,包括卡片读取与信息展示等功能。

该系统需要满足NFC基本协议,以实现卡片与手机的信息交互。通过该系统,用户能够方便地查找、借阅和归还图书,提升图书馆管理效率和用户体验。

基本原理


近距离无线通信 (NFC) 是一组近距离无线技术,通常只有在距离不超过 4 厘米时才能启动连接。借助 NFC,您可以在 NFC 标签与 Android 设备之间或者两台 Android 设备之间共享小型负载。

标签的复杂度可能各有不同。简单标签仅提供读取和写入语义,有时可使用一次性可编程区域将卡片设置为只读。较复杂的标签可提供数学运算,还可使用加密硬件来验证对扇区的访问权限。最为复杂的标签可包含操作环境,允许与针对标签执行的代码进行复杂的互动。存储在标签中的数据也可以采用多种格式编写,但许多 Android 框架 API 都基于名为 NDEF(NFC 数据交换格式)的 NFC Forum 标准。

支持 NFC 的 Android 设备同时支持以下三种主要操作模式:

  1. 读取器/写入器模式:支持 NFC 设备读取和/或写入被动 NFC 标签和贴纸。

  1. 点对点模式:支持 NFC 设备与其他 NFC 对等设备交换数据;Android Beam 使用的就是此操作模式。

  1. 卡模拟模式:支持 NFC 设备本身充当 NFC 卡。然后,可以通过外部 NFC 读取器(例如 NFC 销售终端)访问模拟 NFC 卡。

NFC开发概述


从 NFC 标签读取 NDEF 数据的操作由标签调度系统进行处理,该系统会分析已发现的 NFC 标签,对相应数据进行适当分类,然后启动对分类后的数据感兴趣的应用。如果某个应用想要处理扫描到的 NFC 标签,则可以声明 Intent 过滤器,并请求对数据进行处理。

借助 Android Beam™ 功能,设备可以将 NDEF 消息推送到另一台设备,方法是将两台设备靠在一起。与蓝牙等其他无线技术相比,这种互动可提供更简便的数据发送方式,因为使用 NFC 时无需手动发现设备并将其配对。当两台设备之间的距离近到一定范围内时,系统会自动开始连接。Android Beam 功能通过一组 NFC API 提供,因此任何应用都可以在设备间传输信息。例如,通讯录、浏览器和 YouTube 应用可使用 Android Beam 在多台设备之间共享联系人信息、网页和视频。

标签调度系统

Android 设备通常会在屏幕解锁后查找 NFC 标签,除非设备的“设置”菜单中停用了 NFC 功能。在 Android 设备发现 NFC 标签后,期望的行为就是让最合适的 Activity 来处理该 Intent,而不是询问用户应使用哪个应用。由于设备需要在非常近的范围内扫描 NFC 标签,因此,让用户手动选择 Activity 可能会迫使他们将设备从标签处移开并导致连接中断。您应以适当方式开发您的 Activity,使其仅处理所关注的 NFC 标签,以避免 Activity 选择器出现。

Android 提供了一个特殊的标签调度系统,用于分析扫描到的 NFC 标签、解析它们并尝试找到对扫描到的数据感兴趣的应用。这个标签调度系统通过以下操作来实现这些目的:

  1. 解析 NFC 标签并确定 MIME 类型或 URI(后者用于标识标签中的数据负载)。

  1. 将 MIME 类型或 URI 与负载一起封装到 Intent 中。如何将 NFC 标签映射到 MIME 类型和 URI 中介绍了前两个步骤。

  1. 根据 Intent 启动 Activity。如何将 NFC 标签分发到应用中介绍了此步骤。

如何将 NFC 标签映射到 MIME 类型和 URI

NDEF 数据封装在包含一条或多条记录 (NdefRecord) 的消息 (NdefMessage) 内。每条 NDEF 记录的格式都必须正确,符合您要创建的记录所属的类型对应的规范。Android 还支持其他类型的不包含 NDEF 数据的标签,可以使用 android.nfc.tech 软件包中的类处理这些标签。

当 Android 设备扫描包含 NDEF 格式数据的 NFC 标签时,它会解析该消息并尝试确定数据的 MIME 类型或起标识作用的 URI。为此,系统需要读取 NdefMessage 中的第一条 NdefRecord,以确定如何解读整个 NDEF 消息(一个 NDEF 消息可能具有多条 NDEF 记录)。在格式正确的 NDEF 消息中,第一条 NdefRecord 包含以下字段:

  • 3 位 TNF(类型名称格式)

表示如何解读可变长度类型字段。表 1 中介绍了有效的值。

  • 可变长度类型

介绍了记录的类型。如果使用 TNF_WELL_KNOWN,那么请使用此字段来指定记录类型定义 (RTD)。表 2 中介绍了有效的 RTD 值。

  • 可变长度 ID

记录的唯一标识符。此字段并不经常使用,但如果您需要对标签进行唯一标识,则可为其创建 ID。

  • 可变长度负载

您要读取或写入的实际数据负载。一个 NDEF 消息可以包含多条 NDEF 记录,因此不要假定 NDEF 消息的第一条 NDEF 记录中就有完整的负载。

标签调度系统使用 TNF 和类型字段来尝试将 MIME 类型或 URI 映射到 NDEF 消息。如果成功映射,它会将相关信息与实际负载一起封装到 ACTION_NDEF_DISCOVERED Intent 内。不过,在某些情况下,标签调度系统无法根据第一条 NDEF 记录来确定数据的类型。如果 NDEF 数据无法映射到 MIME 类型或 URI,或者 NFC 标签不包含 NDEF 数据,就会出现上述情况。在此类情况下,标签调度系统会转而将含有标签技术相关信息的 Tag 对象及负载封装到 ACTION_TECH_DISCOVERED Intent 中。

表 1 介绍了标签调度系统如何将 TNF 和类型字段映射到 MIME 类型或 URI,还介绍了哪些 TNF 无法映射到 MIME 类型或 URI。如果无法映射,标签调度系统会回退到 ACTION_TECH_DISCOVERED。

例如,如果标签调度系统遇到 TNF_ABSOLUTE_URI 类型的记录,则会将该记录的可变长度类型字段映射到 URI 中。标签调度系统将此 URI 连同与标签有关的其他信息(如负载)一起封装在 ACTION_NDEF_DISCOVERED Intent 的数据字段中。另一方面,如果标签调度系统遇到 TNF_UNKNOWN 类型的记录,则会转而创建一个 Intent,用于封装与标签技术相关的信息。

表 1. 支持的 TNF 及其映射

类型名称格式 (TNF)

映射

TNF_ABSOLUTE_URI

基于类型字段的 URI。

TNF_EMPTY

回退到 ACTION_TECH_DISCOVERED。

TNF_EXTERNAL_TYPE

基于类型字段中 URN 的 URI。URN 以缩短形式 (*<domain_name>:<service_name>*) 编码到 NDEF 类型字段中。Android 会以如下形式将此映射到 URI:vnd.android.nfc://ext/*<domain_name>:<service_name>*。

TNF_MIME_MEDIA

基于类型字段的 MIME 类型。

TNF_UNCHANGED

在第一条记录中无效,因此会回退到 ACTION_TECH_DISCOVERED。

TNF_UNKNOWN

回退到 ACTION_TECH_DISCOVERED。

TNF_WELL_KNOWN

MIME 类型或 URI,具体取决于您在类型字段中设置的记录类型定义 (RTD)。如需详细了解可用的 RTD 及其映射,请参阅表 2

表 2. TNF_WELL_KNOWN 支持的 RTD 及其映射

记录类型定义 (RTD)

映射

RTD_ALTERNATIVE_CARRIER

回退到 ACTION_TECH_DISCOVERED。

RTD_HANDOVER_CARRIER

回退到 ACTION_TECH_DISCOVERED。

RTD_HANDOVER_REQUEST

回退到 ACTION_TECH_DISCOVERED。

RTD_HANDOVER_SELECT

回退到 ACTION_TECH_DISCOVERED。

RTD_SMART_POSTER

基于负载解析结果的 URI。

RTD_TEXT

text/plain 的 MIME 类型。

R

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值