流程:
第一步把开门日志整理到结构体logData 它是一个大容器 万能对接的!
memset(&logData , 0x00 , sizeof(openlogDataType));
logData.type = OPENLOG_FORM_CARD;
logData.length = openResult;
memcpy(logData.data , (uint8_t *)tag , sizeof(tagBufferType));
journal.save_log(&logData);
也就是在各种开门中只需要调用journal.save_log(&logData);即可!
第二步:保存函数回到log模块做了消息队列
void journal_save_log( openlogDataType *saveLog )
{journalTaskQueueType message;memset(&message , 0x00 , sizeof(journalTaskQueueType));message.cmd = LOG_ADD;message.sn = 0;memcpy(&message.openlog , saveLog , sizeof(openlogDataType));xQueueSend( xLogQueue, ( void* )&message, NULL );
}它的技术是在装了一层壳子 队列在任务循环中被处理
第三部:log任务处理
if(xQueueReceive( xLogQueue, &pst, 1000 ) == pdTRUE)
{
switch(pst.cmd)
{
case LOG_ADD:
log(DEBUG,"接到增加LOG命令, get sn =%d ,device sn = %d\n" , pst.sn , journalSn);
journal_add_log(&pst);
}
它会去执行函数 journal_add_log 依次退去壳子
最后直接    journal_send_queue(LOG_SEND  , 0 );回到任务有网诺就发出去 没网诺就不发其实他做了一个定时器 一直在给任务发消息 你去发日志给平台吧!

+++++++++++++补充 随处可见的金蚕脱壳++++++++++++++++

typedef struct
{tagTypeEnum     type;uint8_t         cardType;tagPowerEnum    tagPower;uint8_t         allDataCrc;uint8_t         UID[16];uint8_t         UIDLength;uint8_t         buffer[128];uint8_t   sak;uint8_t         readFinshFlag;
}tagBufferType;结构体tagBufferType主要是代码内部处理,真正有用的信息是uint8_t         buffer[128];它对应多个的结构体来对倒。第一个特斯联用户卡:typedef struct _tagUserDataType{//0区 1块   密码KeyA 111111111111communityType community;    // 主住户信息   8字节uint8_t house0[2];          //房间号uint8_t name[6];            //业主姓名//0区 2块uint8_t setting;            // 设置    1字节uint8_t start[3];           // 发卡时间    3字节uint8_t stop[3];            // 截止时间    3字节uint8_t crc0;               // 校验    1字节uint8_t cardID[4];          //卡号  4字节uint8_t version;            //版本  1uint8_t cardType;           //卡类  1uint8_t crc16_0[2];         //CRC      2//1区  0块uint8_t id[9];              //身份证      9(当最后一位为x 时   用A代替)//2区  0块1块communityType communitys[4];// 主住户信息   4*8字节//2区  2块uint8_t house1[2];          //房间号1uint8_t house2[2];          //房间号2uint8_t house3[2];          //房间号3uint8_t house4[2];          //房间号4uint8_t crc1;               // 校验    1字节uint8_t fdgs1[4];           //分断      1*4uint16_t userFloor;uint8_t crc16_1[2];         //CRC 16
}tagUserDataType;               //用户卡 共89字节对倒:比如临时变量tagUserDataType         tagUser;  memcpy((uint8_t*)&tagUser,tag→buffer,sizeof(tagUserDataType));如此很快的完成数组→结构体赋值。

认真学习套壳技巧-消息队列-日志模块相关推荐

  1. FreeRTOS记录(六、FreeRTOS消息队列—Enocean模块串口通讯、RAM空间不足问题分析)

    本篇文章记录FreeRTOS消息队列的使用,我不从理论开始介绍,直接用起来,然后从发现的问题分析记录解决. ..补充RAM空间不足问题内容,增加FreeRTOS任务占用的RAM空间说明 2021/11 ...

  2. 拉勾网《32个Java面试必考点》学习笔记之十一------消息队列与数据库

    本文为拉勾网<32个Java面试必考点>学习笔记.只是对视频内容进行简单整理,详细内容还请自行观看视频<32个Java面试必考点>.若本文侵犯了相关所有者的权益,请联系:txz ...

  3. 进程通信学习笔记(System V消息队列)

    跟Posix消息队列一样,不存在这样的要求:某个进程往一个队列中写入一个消息,另外一个进程下在等待该队列上一个消息的到达 系统中的消息队列,定义在<sys/msg.h>头文件中的信息结构: ...

  4. 【Redis学习08】Redis消息队列实现异步秒杀

    文章目录 1. 消息队列 1.1 基于List结构模拟消息队列 1.2 基于PubSub的消息队列 1.3 基于Stream的消息队列 2. 基于Stream的消息队列---消费者组 2.1 消费者组 ...

  5. 实战干货:基于Redis6.0 部署迷你版本消息队列

    点击关注公众号,实用技术文章及时了解 技术研究背景 由于目前的研发团队处于公司初创阶段,尚未有能成熟的运维体系,对于市面上常见的成熟MQ搭建维护能力不足,但是又希望能有一款轻量级的消息系统供研发团队的 ...

  6. 天天在用消息队列,却还不知道为啥要用 MQ ,这就尴尬了

    说起消息队列,早期有"上古"的 ActiveMQ,如今有应用广泛的 RocketMQ.Kafka,到最近推出的 Pulsar,伴随着技术的持续发展,一代又一代的消息队列不断推陈出新 ...

  7. 轻松搞定RabbitMQ开篇:Java消息队列与JMS的诞生

    Java 帝国之消息队列 原创: 刘欣 码农翻身 2017-02-06 张家村的历史 Java 帝国的张家村正在迎来一次重大的变革. 5年前网上购物兴起的时候, 帝国非常看好, 决定向这个领域进军, ...

  8. 消息队列基本原理和选型对比

    消息队列使用场景 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,削峰填谷等问题.实现高性能.高可用.可伸缩和最终一致性架构. 解耦:多个服务监听.处理同一条消息,避免多次 rpc ...

  9. 主流消息队列有哪些?

    大家好,我是[架构摆渡人],一只十年的程序猿.这是消息队列的第一篇文章,这个系列会给大家分享很多在实际工作中有用的经验,如果有收获,还请分享给更多的朋友. ActiveMQ ActiveMQ是一个很老 ...

最新文章

  1. java排序的例子_Java的8大排序的基本思想及实例解读
  2. 大数据和高并发的解决方案汇总
  3. 【刷题】LOJ 6014 「网络流 24 题」最长 k 可重区间集
  4. PHP一个比较完善的树形结构代码
  5. 搜索引擎优化不是网页标签优化
  6. 江苏计算机云服务,云呐|江苏企业机房环境动环监控服务商系统智能监测
  7. tcp传输控制协议-报文格式
  8. 鬼谷八荒steam修改器|鬼谷八荒多功能修改器
  9. IOS开发之逆向分析
  10. CPU飙升到100%问题排查
  11. 【python教程入门学习】Python字典及基本操作(超级详细)
  12. 23 个学习 JavaScript 的地方
  13. vue 生命周期activated与created使用
  14. 响铃:揭底滴滴们跨界营销“真相”,再教你玩一出好戏
  15. Docker安装PHP-FPM5.6 (自带redis扩展,Mysql扩展,GD库扩展(支持JEPG))
  16. 【电脑办公软件】万彩办公大师教程丨TextDiff文本比较工具
  17. APP项目开发失败案例经验汇总
  18. IntelliJ IDEA中文注释字体更换最佳方法
  19. c语言cl.exe,cl.exe
  20. Git泄露 之Stash(做题过程)

热门文章

  1. 【python学习】多线程下载图片实战
  2. windows 7 系统进程服务详解(一)
  3. 逻 辑 代 数 的 基 本 概 念 、 公 式 和 定 理
  4. 搭建velocity开发环境
  5. 蓝桥杯——十六进制转八进制
  6. 《软件开发沉思录》读书笔记
  7. 后端服务HTML转图片实现方案
  8. java memento_memento模式_Java中的Memento设计模式-示例教程
  9. siege 用户登录_性能测试之siege
  10. leetcode-174:地下城游戏