1.NFC初始化赋值(MCU上电后立即调用) 注:校验和:包长度开始一直到有效负载的字节求和取余数,(取求和后的低八位) MCU => 语音模组 序号 字段名称 字节长度(Byte) 内容说明 1 固定包头 2 0xAA55 2 包长度 2 Len(命令…校验和) 3 命令 1 0xA1 4 包序号 1 0x## 5 flags 2 0x0000 6 PRODUCT_PID_DATA0 1 0x##,IOT给的产品PID第一个字节ASCII码 7 PRODUCT_PID_DATA1 1 0x##,IOT给的产品PID第二个字节ASCII码 8 PRODUCT_PID_DATA2 1 0x##,IOT给的产品PID第三个字节ASCII码 9 PRODUCT_PID_DATA3 1 0x##,IOT给的产品PID第四个字节ASCII码 10 NFC_RECVDATA_LENGTH 1 0x##, 接收数据区大小,不含F0123456 含checkSUM 11 NFC_SENDDATA_LENGTH 1 0x##, 发送数据区大小,值为功能数*2 12 校验和 1 0x##
时间: 2024-04-13 10:26:03 浏览: 137
根据给出的数据包格式,以下是NFC初始化赋值的过程:
1. MCU上电后,立即调用NFC初始化函数。
2. 准备发送数据包,按照数据包格式填充相应字段:
- 固定包头字段设置为0xAA55,占用2个字节。
- 包长度字段设置为整个数据包的长度,包括Len、命令、包序号、flags、PRODUCT_PID_DATA0~3、NFC_RECVDATA_LENGTH、NFC_SENDDATA_LENGTH和校验和字段。占用2个字节。
- 命令字段设置为0xA1,表示执行某个特定的命令。占用1个字节。
- 包序号字段设置为特定的值,可以根据需要设定。占用1个字节。
- flags字段设置为0x0000,占用2个字节。
- PRODUCT_PID_DATA0~3字段设置为给定的产品PID(产品标识符)的ASCII码值,共占用4个字节。
- NFC_RECVDATA_LENGTH字段设置为接收数据区的大小,不包括F0123456和校验和字段。占用1个字节。
- NFC_SENDDATA_LENGTH字段设置为发送数据区的大小,值为功能数乘以2。占用1个字节。
- 计算校验和,将从包长度开始一直到有效负载的字节进行求和,然后取求和结果的低八位。将计算得到的校验和填充到校验和字段中。占用1个字节。
3. 将填充好的数据包发送给语音模组进行初始化。
注意:上述的"##"表示具体的数值,需要根据实际情况进行替换。
相关问题
如何配置android:name="android.nfc.cardemulation.extra.SERVICE_DESCRIPTION"
要配置android:name="android.nfc.cardemulation.extra.SERVICE_DESCRIPTION",需要在定义NFC卡模拟服务时,在service标签中添加一个meta-data标签,并指定android:name为"android.nfc.cardemulation.extra.SERVICE_DESCRIPTION",android:value为要设置的描述信息,如下所示:
```
<service android:name=".MyHostApduService"
android:exported="true"
android:permission="android.permission.BIND_NFC_SERVICE">
<intent-filter>
<action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
</intent-filter>
<meta-data android:name="android.nfc.cardemulation.extra.SERVICE_DESCRIPTION"
android:value="My Host Apdu Service"/>
</service>
```
在上述例子中,我们定义了一个名为"My Host Apdu Service"的NFC卡模拟服务,并使用android:name="android.nfc.cardemulation.extra.SERVICE_DESCRIPTION"来设置服务的描述信息。这样,在其他设备连接到该服务时,可以通过读取该描述信息来确认当前正在使用的卡模拟服务。
清单action android:name="android.nfc.action.NDEF_DISCOVERED怎么用
`android.nfc.action.NDEF_DISCOVERED` 是一种 NFC 技术规范,它指定了当系统检测到一个 NDEF 类型的标签或卡片被放置在 NFC 读写器附近时,应该启动哪个应用程序来处理这个标签或卡片。
要使用 `android.nfc.action.NDEF_DISCOVERED`,你需要在你的应用程序的清单文件中指定相应的 intent-filter。例如:
```
<activity android:name=".MyNFCActivity">
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
```
上面的代码片段中,`MyNFCActivity` 是你的应用程序中处理 NFC 数据的活动(Activity),`android.nfc.action.NDEF_DISCOVERED` 是指定的 intent-action,`android.intent.category.DEFAULT` 是指定的 intent-category,`text/plain` 是指定的数据类型。这个 intent-filter 的含义是,当系统检测到一个 NDEF 类型的标签或卡片被放置在 NFC 读写器附近时,并且这个标签或卡片中包含了文本数据,系统就会启动 `MyNFCActivity` 来处理这个数据。
在你的活动(Activity)中,你可以通过 `getIntent()` 方法获取传递给这个活动的 intent,然后通过 `getParcelableExtra(NfcAdapter.EXTRA_TAG)` 方法获取标签或卡片的实例,然后读取标签或卡片中的数据。
需要注意的是,`android.nfc.action.NDEF_DISCOVERED` 只是一种 NFC 数据处理方式,你还可以使用其他的 intent-action 和 intent-filter 来处理其他类型的 NFC 数据。同时,不同的 NFC 标签或卡片可能有不同的数据格式和读取方式,因此在处理 NFC 数据时需要先了解相关的技术规范和数据格式。
阅读全文