我是靠谱客的博主 狂野冥王星,最近开发中收集的这篇文章主要介绍Android与RFID的点点滴滴(二)RFID通讯协议,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

如需转载请注明出处,谢谢!

目录

前言

分类方式

通讯协议概述

数据传输帧格式

帧头和帧尾

帧长度

帧类型

数据

校验码


前言

各厂商的通讯协议都是不同的,但大同小异,整体格式都是一样的,本文只帮忙理解。

分类方式

国际电信联盟ITU划分的无线电频段,单位为Hz(赫兹)

带号频带名称频率范围波段名称波长范围主要应用
-1至低频(TLF) 0.03-0.3Hz至长波或千兆米波10000 1000兆米(Mm)水中舰艇沟通
0至低频(TLF)0.3-3Hz至长波或百兆米波1000- 100兆米(Mm)水中舰艇沟通
1极低频(ELF)3- 30Hz极长波100- 10兆米(Mm)潜水艇进入/离开海底
2超低频(SLF) 30- 300z超长波10- 1兆米(Mm) 水中舰艇沟通
3特低频(ULF)300-3000Hz特长波1000- 100千米(km) 矿场内使用,也可作堪探(km)地质和地震用
4甚低频(VEF) 3- 30kHz 甚长波100- 10千米(km)海岸潜艇通信;远距离通信;超远距离导航
5低频(LF)30- 300kHz长波10- 1千米(km)越洋通信;中距离通信;地下岩层通信;远距离导航
6中频(MF)300- 3000kHz中波1000-100米(m)船用通信;业余无线电通;)信移动通信;中距离导航
7高频(HF)3一300MHz短波100- 10米(m)远距离短波通信;国际定点通信
8甚高频(VHF) 30- 3000MHz米波10- 1米(m)电离层散射(30-  60M0Hz) ;流星余迹通信;人造电离层通信 (30-1440z) ;对空间飞行体通信:移动通信
9特高频(UHF) 300- 3000MHz分米波10- 1分米(dm) 容里中继微波通信 (352- -420z) ;对流层散射通信( 700-10000) ;中容重微波通信(1700-24000MHz)
10超高频(SHF)3- 30GHz厘米波10- 1厘米(cm)卫星通信;雷达、微波通信
11极高频(EHF)30- 300GHz毫米波10-1毫米(m)卫星通信:雷达
12至高频(THF) 300 - 3000GHz丝米波或亚毫米波10-1丝米(am) 

表格标红的为RFID常用频段

  • 低频(Low frequency,LF):低频标签成本低,但读取的距离近。
  • 高频(High frequency,HF):高频标签具有更高的传输速率和距离,但成本也比低频标签贵。
  • 超高频(Ultra high frequency,UHF):433 MHz、800/900MHz、2.45GHz、5.8GHz,超高频标签具有更高的传输速率,成本也较其他的高。

通讯协议概述

本文章以UHF RFID作为例子介绍

UHF RFID读写器与上位机采用异步串行接口(UART)进行数据通信, 串口波特率默认为 115200,8 位数据位,1 位停止位,无校验位,无硬件流控 制。数据按照固定的帧格式进行传输。

数据传输帧格式

数据帧由帧头、帧长度、帧类型、数据、校验码和帧尾组成。

帧头帧长度帧类型数据校验码帧尾
2字节2字节1字节N字节1字节2字节

帧头和帧尾 

帧头代表数据包的开始,共 2 个字节,为固定值 0xA5、0x5A,帧尾表示数 据包的结束,共 2 个字节,为固定值 0x0d、0x0a(回车加换行)。

帧长度

帧长度为一帧数据的长度,其具体计算公式为:帧长度 = 2+2+1+N+1+2, N 为数据长度。

帧类型

帧类型用以区分不同的控制命令,读写器根据帧类型执行相应的操作。不同读写器厂家定义的帧类型不同,在此我依然只是举例

比如我工作中用到的提取几种拿出来分享

帧功能描述帧类型
获取读卡器硬件版本号0x00
连续寻标签0x82
连续寻标签应答0x83

数据

根据帧类型,数据包含有数据和控制信息。对于命令帧,表示控制信息,如上图绿色标识。 对于应答帧,表示数据信息,如上图橙色标识。

校验码

每帧数据所有字节(除去帧头和帧尾)异或。

以连续寻标签举例例如: 0xA5 0x5A 0x00 0x15 0x83 0x24 0x00 0xe0 0x11 0x23 0x45 0x78 0x65 0x10 0x20 0xfe 0x83 0x01 0x79  0x0d 0x0a

   数据  
帧头帧长度帧类型PC(MSB)PC(LSB)EPC(MSB)EPC(LSB)RSSI (MSB)RSSI (LSB)天线号校验码帧尾
0xA5 0x5A0x00 0x150x830x240x000xe0 0x11 0x23 0x45 0x78 0x65 0x10 0x20 0xfe0x83 0x010x79 0x0d 0x0a

说明:

  • LSB的意思是:全bai称为Least Significant Bit,在二进制数du中意为最zhi低有效位,一般来dao说,MSB位于zhuan二进制数的shu最左侧,LSB位于二进制数的最右侧。
  • MSB的意思是:全称为Most Significant Bit,在二进制数中属于最高有效位,MSB是最高加权位,与十进制数字中最左边的一位类似。
  • EPC 字段的长度由 PC 决定,PC 高 5bit ×2 为 EPC 的字节数,如 PC=0x2400, 高 5bit 为二进制0100,对应十进制 4,那么 EPC 的字节数为 4×2=8 字节。
  int epcLength = (Integer.parseInt(len, 16) / 8) * 4;
  • RSSI 以补码的形式表示,共 16bit,为实际值×10。如-12.3dBm,则 RSSI=fe83。
int rssi = ((Hb - 256 + 1) * 256 + (Lb - 256)) / 10;
int rssi1 = (0xffff - ((Hb << 8) + Lb)) / 10;

 

最后

以上就是狂野冥王星为你收集整理的Android与RFID的点点滴滴(二)RFID通讯协议的全部内容,希望文章能够帮你解决Android与RFID的点点滴滴(二)RFID通讯协议所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部