重庆发卡通行组举例

编程入门 行业动态 更新时间:2024-10-11 21:21:58

重庆<a href=https://www.elefans.com/category/jswz/34/1670794.html style=发卡通行组举例"/>

重庆发卡通行组举例

内存设计:#define GIDMAX 60typedef struct
{uint8_t     code[25];uint8_t     len;
}CQdianmaType;//sizeof 26 __packed 加和不加 没有影响 都是26[因为他没有U16这样 都是U8] typedef struct
{uint64_t     version;//8uint8_t      gid[GIDMAX][20];//1200
}GidType;//sizeof 1208 __packed 加和不加 没有影响 [都是U8] typedef struct
{uint8_t ip[50];uint16_t port;
}serverAddrType;//sizeof 52 __packed 加和不加 没有影响 但是再次目结构体有干扰 多了1typedef struct
{CQdianmaType devcode;      //26uint8_t      locatcode[23];//23 uint8_t      jin[13];      //13uint8_t      wei[13];      //13	serverAddrType net;        //52GidType gidtype;           //X*(20+8)
}_CQType;那么设计多大比较好?#define     DSYS_DIANMA_ADDR          0x0807E000
这一页是2K也就是2048个字节!
(26+23+13+13+52+20X+8)<=2048  
所以可以X最大是95.65!修改 #define GIDMAX 95+++++++++++++++++++++++++++++++++上面的计算有问题 它的根据是大家合并的时候结构体sizeof就是相加的!其实没有pack技术的话 不一定!合并以后会变大!!所以必须pack!!__packed typedef struct
{uint8_t ip[50];uint16_t port;
}serverAddrType;//52__packed typedef struct
{uint8_t     code[25];uint8_t     len;
}CQdianmaType;//26#define GIDMAX 95
__packed typedef struct
{uint64_t     version;//8uint8_t      gid[GIDMAX][20];//20*95
}GidType;//20*95+8__packed typedef struct
{CQdianmaType devcode;//26uint8_t      locatcode[23];//23uint8_t      jin[13];//13uint8_t      wei[13];//13	serverAddrType net;//52GidType gidtype;//20*95+8
}_CQType2;//2035+++++++++++++++++++++++++++++++++
流程设计:
上电直接读出来到结构体
hip_flash_read( DSYS_DIANMA_ADDR ,(uint8_t *)&CQType ,sizeof(_CQType)
如果是FF那就是新设备 
清空即可 所以cqdefault是没有必要的!!已经没有这个大地方放置了 找一个SRAM
也就是一个数据在SRAM 一个保存在FLASH
_CQType CQType@(0x10000000);
uint8_t 				mqttreadbuf[2048]@(0x10000800);	开始流程,配置以后就写入!流程设计:
1上电就读片内FLASH,数据放在结构体中--void sysCfg_init( void ){config.read(CFG_SYS_CQDM , (void **)&CQType );}
2每次修改数据就是改动这个结构体的部分--ble接口指令
3每次保存 可以直接擦除 在写入 因为我保证了结构体其他的没变化
4每次使用 的时候还需要去FLASH读吗?其实不用了 因为我一直都是最新的 思考:为什么我要保存20-22的呢?我可以直接保存10-11呀 余力卡举例:
50 01 20 00 02 00 03 01 01 01 19 10 17 01 01 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 43 51 typedef struct 
{_Code Code[5]; // 5个块儿 每个块儿一个点码_Info Info;   //  1个块儿 其他信息   
}_YULICARD钉钉你的例子,用一个块儿写:点码20
“50012000020003010101191017010100”
写入点码10
0X50,0X01,0X20,0x00,0x02,0x00,0x03,0x01,0x01,0x01
在写入有效期到19年10月17日过期
0X19,0X10,0X17,
在写入类型标识 用户卡
0X01
在写入使能位
0x01
在写入CRC
0xXXtypedef struct 
{  uint8_t cqcode[10];      // 点码20变10uint8_t endtime[3];      // 截止时间    3字节uint8_t setting;         // 设置卡类别   uint8_t enable;          //该块数据是否使能uint8_t crc0;            // 校验    该块 一共16个字节 CRC8=8
}_Codetypedef struct 
{  uint8_t UID[4];      // UIDuint8_t ID[9];        // 身份证9位 暂时0XFFuint8_t doornum;     // 前面5个enable累和uint8_t mark[2];     //固定填写‘C’‘Q’ 方便快速和富凯卡分开"CQ"-->67 81--->0X43 0X51-->这样写卡!!
}_Info

 

思考:为什么我要保存20-22的呢?

我可以直接保存10-11呀 那样我可以保持多一倍!!!

更多推荐

重庆发卡通行组举例

本文发布于:2024-02-13 06:06:43,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1757283.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:发卡   重庆

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!