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;
作者:徐蒙特