电子纸胸牌NFC小程序

发布时间 2023-04-04 17:22:36作者: 中亿丰数字科技

NFC小程序介绍

首先我们通过微信应用进入小程序

按真实情况填写电子纸胸牌需要展示的数据信息,点击处理图像进入下一步。

图像处理通过后将磁卡贴到手机背部,将印有磁条的一侧与手机NFC部分对齐
此时选择小程序点击检测按钮将手机NFC与电子纸胸牌完成数据配对

1.1传输数据修改电子纸显示界面

在小程序检测到电子纸配对信息之后会在边框部显示彩色光条(红色光条表示数据配对错误,绿色光条表示数据配对成功,并且正在实时传输数据)

操纵完成,数据传输完成,电子纸显示屏显示改变

附----电子纸胸牌 NFC 数据通信协议

电子纸胸牌NFC 数据通信协议

一、 通信方式

IsoDep APDU 指令

二、 NFC 帧数据段

Header(2) Cmd(1) Type(3) Order(1) Content CRC(1)

各字段含义如下:
1.Header
常量:0x7F 0xF7
2.Type

Type[23:16] Type[15:8] Type[7:0]
屏幕生产厂家 尺寸及分辨率 单双面
0x01:DKE 0x01: 3.7 寸 416*240 0x01: 单面
0x02:合力泰 0x02: 7.5 寸 640*384 0x02: 双面
0x03: 7.5 寸 800*480

3.Cmd

Cmd[7:0]
0x01:查询设备参数
0x02:查询设备状态
0x03:刷新正面(默认)500ms
0x04:刷新反面 500ms
0x05:发送图片数据

4.Order
分包序号,从 0 开始。

[注]
1.手机发送数据包的时间间隔应大于 60ms。
2.数据包大小:每种颜色的前 56 帧大小为 222 字节,第 57 帧大小为 48字节。

5.Content
用于传输图像数据。
6.CRC: 通信数据校验和,含 Header。

[注 1]CRC 校验和算法

uint8_t get_check_sum(uint8_t *buf, uint8_t len)
{
uint8_t i = 0; uint8_t sum = 0;

for(i = 0; i < len; i++)
{
sum += *(buf++);
}

return ~sum;
}

[注 2]暂时没用到的字段可用 0x00 填充。

三、 串口数据反馈

返回数据均以 0x7F 0xF7 作为数据开始标志。

Head[2] Cmd[1] Res[3]
0x7F 0xF7 0x01 Type*
0x7F 0xF7 Cmd* Res Code

Type: 含义同Type 字段,返回当前设备信息。
Cmd
: 为当前响应的命令。
Res Code 含义如下:
typedef enum {
PANEL_A, /* 刷新正面 /
PANEL_B, /
刷新反面 /
PANEL_D, /
刷新双面 /
CHECK_SUM_PASS, /
校验和成功 /
CHECK_SUM_ERROR, /
校验和错误 /
HEADER_FOUND, /
检测到数据头 /
NO_HEADER_FOUND, /
未检测到数据头 /
FRAME_OUT_RANGE, /
数据帧超出范围 /
FRAME_ORDER_ERR, /
数据帧顺序错误 /
FRAME_INIT_OK, /
面板初始化成功/
FRAME_UPDATE_OK, /
面板刷新成功 /
UNDEFINED_MSG /
其他未定义的行为 */
} Epaper_ResCode;

作者:徐蒙特