电子纸胸牌NFC小程序

201 阅读2分钟

NFC小程序介绍

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

image.png

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

image.png

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

image.png

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

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

image.png image.png

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

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

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

一、 通信方式

IsoDep APDU 指令

二、 NFC 帧数据段

Header(2)Cmd(1)Type(3)Order(1)ContentCRC(1)

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

Type[23:16]Type[15:8]Type[7:0]
屏幕生产厂家尺寸及分辨率单双面
0x01:DKE0x01: 3.7 寸 416*2400x01: 单面
0x02:合力泰0x02: 7.5 寸 640*3840x02: 双面
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 0xF70x01Type*
0x7F 0xF7Cmd*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;

作者:徐蒙特