通信架构设计源码范例
.c文件内容1、变量1、日志标签2、自定义的收发队列3、解析后的报文缓冲区/发送报文打包区4、交互参数1、对端的参数结构体管理用来记录对端参数状态的交互用2、己端的参数结构体管理用来记录己端参数状态的交互用3、控制过程参数一般用来做控制用状态机流程相关的控制参数2、参数名转成字符串函数翻译函数在打印日志时特变是打印参数时翻译函数可将参数从某个枚举类型值转成枚举值字符串3、参数Set Get 函数参数不在通过简单的赋值去控制而是通过Set、Get 接口函数操作通过static 关键字和.h文件的函数声明管理参数的操作权限1、Set函数说明1、函数名设计比如参数 ccuParam 的 cpState 成员的 Set 函数命名为 ccuParamSet_cpState2、当参数变化时才允许修改且把变化前后值打印出来并打印一条报文报文打印调用日志标签、翻译函数2、Get函数说明1、函数名设计比如参数 ccuParam 的 cpState 成员的 Get 函数命名为 ccuParamGet_cpState4、整个参数的RST函数当需要直接对 ccuParam 整个参数置0时可以设计如下函数5、发送/接收 hex 源码打印函数调用相应的日志标签打印 hex 源码报文6、发送报文打包接口函数按照报文信息一个一个数据顺序打包到txMsgbuff并打印一次发送 hex 源码此后即可将数据包发送到 发送队列txQue里驱动层自动调队列数据从串口发送出去7、具体某条报文的打包发送函数比如 发送到对端的一条 ccuStatus 报文用该函数打包具体的内容并打印hex打印源码一条8、table表table表是用来封装对端不同报文的处理函数9、具体对端的报文处理函数得到对端报文后用结构体指针解析每个参数的值打印参数信息格式[DB_INFO] SECC_STATUS{SessState:%s, CpPwmDuty:%d, ContactorOp:%s, CpPwmDutySet:%s}之后就是得到相应报文后做相应的操作10、对端报文解析处理函数11、通信 Comm 处理函数第一部分对端报文for 查表1、通过报文解析函数反馈值判断是否收到正确报文2、for循环查 table 表进入相应对端报文的处理函数做相应的处理第二部分主动循环处理比如状态变化100ms周期要发某条报文等等12、初始化函数1、接收回调函数初始化2、接收发送队列初始化函数3、初始化接口函数即上述的集合函数13、任务函数当初始化成功后才允许 comm通信处理.h文件内容1、字符串常量翻译函数用到的2、可用宏封装一些冗余的表达式更直观3、table表结构体函数指针枚举4、对端报文帧格式类型声明结构体/联合体1、通常我们通过指针去直接操作接收报文的方便快捷2、一般都需要按字节对齐#pragma pack(push, 1)#pragma pack(pop)5、交互参数结构体声明6、允许外部调用的函数声明3、日志打印时机日志打印时机是很重要的一个意识何时使用日志打印、哪个地方加打印这很重要上述主包的通信收发例子中主要以下的地方增加打印1、接收报文处理的地方接收的报文跟上一包有变化打印所有参数、HEX源码如下打印的内容就是[RX_HEX]:DB AC 00 01 02 ....CCU_STATUS{ocpd:1, resumeTri:2 ......}2、发送报文处理的地方发送的报文跟上一包有变化打印所有参数、HEX源码如下打印的内容就是[TX_HEX]:DB AC 00 01 02 ....SECC_STATUS{sessionState:SECC_CHARGE_IDLE, dataTransRes:2,.....}3、参数设置接口当设置参数且参数变化的时候打印变化前后值如下打印的内容是[SET_SECC_STATUS_PARA] sessionState:0 - 14、状态机切换、异常发生把状态机切换或异常发送的条件以及跳转的下一个状态名打印出来日志打印总结以上打印主要完成了如下指标1、避免重复打印2、清晰看透收发报文的内容3、系统状态运作能够通过打印日志看透4、可以看到属性参数何时发生变化5、当然还有个关键的是要写好状态机

相关新闻

快速掌握SmartContracts-audit-checklist:Solidity审计效率提升300%

快速掌握SmartContracts-audit-checklist:Solidity审计效率提升300%

快速掌握SmartContracts-audit-checklist:Solidity审计效率提升300% 【免费下载链接】SmartContracts-audit-checklist A checklist of things to look for when auditing Solidity smart contracts. 项目地址: https://gitcode.com/gh_mirrors/smar/SmartContra…

2026/6/23 17:15:12阅读更多 →
天翼云主机采购到域名备案再到项目发布全流程笔记

天翼云主机采购到域名备案再到项目发布全流程笔记

目录 一、云主机采购 二、云主机管理 三、配置安全组 四、域名转入 五、域名备案 六、域名服务 七、SSL免费申请(免费获取SSL,方案一) 八、自行安装 Certbot SSL服务(免费获取SSL,方案二,推荐) 九、Nginx SSL服务 (当采用SSL方案一时) 十、工单反馈 一、云主机采购…

2026/6/23 17:15:12阅读更多 →
终极指南:如何在电脑上用QtScrcpy玩转安卓手游

终极指南:如何在电脑上用QtScrcpy玩转安卓手游

终极指南:如何在电脑上用QtScrcpy玩转安卓手游 【免费下载链接】QtScrcpy Android real-time display control software 项目地址: https://gitcode.com/GitHub_Trending/qt/QtScrcpy 想要在电脑大屏上流畅玩手游?想用键盘鼠标精准操作《和平精英…

2026/6/23 17:10:11阅读更多 →
Apache Traffic Server在Ubuntu 14.04上的反向代理实战

Apache Traffic Server在Ubuntu 14.04上的反向代理实战

1. 项目概述:为什么在 Ubuntu 14.04 上用 ATS 做反向代理不是“怀旧”,而是精准选型Apache Traffic Server(ATS)不是 Nginx 的平替,也不是 HAProxy 的简化版——它从诞生起就带着雅虎大规模内容分发的基因,…

2026/6/23 18:35:36阅读更多 →
Gemini 3.1 Flash 计费逻辑深度解析:Token+推理强度双维定价

Gemini 3.1 Flash 计费逻辑深度解析:Token+推理强度双维定价

1. 一个被误读的“降价”:Gemini 3.1 Flash API 根本没调过价,但它的计费逻辑变了最近在开发者社区里,“Gemini 3.1 Flash API 降价了吗?”这个问题像野火一样烧起来。我看到不少人在 Slack 群、GitHub Discussions 甚至技术博客评…

2026/6/23 18:35:36阅读更多 →
Spring 5:响应式架构与Kotlin原生支持的工程实践分水岭

Spring 5:响应式架构与Kotlin原生支持的工程实践分水岭

1. Spring 5:不是版本号,而是Java企业级开发的分水岭Spring 5发布于2017年9月,表面看只是框架主版本从4.x升到5.x,但实际它是一次彻底的“断代式重构”。我带团队在2018年初把一个运行五年的Spring MVCTomcat项目迁移到Spring 5.0…

2026/6/23 18:35:36阅读更多 →
Prisma + PostgreSQL 生产级落地指南:从连接配置到向量搜索

Prisma + PostgreSQL 生产级落地指南:从连接配置到向量搜索

1. 为什么不用 Express 原生写 SQL,而要选 Prisma PostgreSQL 这套组合? 我第一次在生产环境里用原生 Node.js pg 模块手写 CRUD 的时候,正赶上周五下午三点——一个本该安静收尾的时刻。结果因为一个 INSERT INTO users (name, email) VA…

2026/6/23 18:35:36阅读更多 →
三步构建AI API使用数据自动化分析流水线:从账单到洞察

三步构建AI API使用数据自动化分析流水线:从账单到洞察

1. 项目概述:为什么我们需要自动化导出AI使用数据? 如果你正在使用各类AI服务,无论是OpenAI的ChatGPT API、Claude API、DeepSeek API,还是国内的智谱、文心一言等大模型,一个绕不开的痛点就是: 账单和用量…

2026/6/23 18:35:36阅读更多 →
零样本学习在软件工程情感分析中的创新应用

零样本学习在软件工程情感分析中的创新应用

1. 零样本学习在软件工程情感分析中的突破性应用情感分析作为自然语言处理(NLP)的核心任务,在软件工程领域展现出独特价值。传统方法通过分析开发者社区讨论、代码审查意见和应用商店评论等文本数据,帮助团队捕捉开发者情绪、识别…

2026/6/23 18:30:35阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/23 7:04:52阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/23 1:55:32阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/23 5:55:37阅读更多 →
2026年京东云 618 活动 Hermes Agent/OpenClaw配置Token Plan新手必看指南

2026年京东云 618 活动 Hermes Agent/OpenClaw配置Token Plan新手必看指南

2026年京东云 618 活动 Hermes Agent/OpenClaw配置Token Plan新手必看指南。OpenClaw是开源的个人AI助手,Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案、百炼Token Plan兼容主流…

2026/6/23 0:00:38阅读更多 →
2026年北京电子沙盘制作公司深度评测:从技术选型到落地效果,谁在真正定义“数字+实体”的融合边界?

2026年北京电子沙盘制作公司深度评测:从技术选型到落地效果,谁在真正定义“数字+实体”的融合边界?

模块一:行业背景——百亿赛道爆发,北京市场的特殊性与选型困局2026年,电子沙盘行业已走过“要不要做”的讨论,进入“找谁做、怎么做”的深水区。据行业研究机构数据,2025年国内电子沙盘市场规模已突破85亿元&#xff0…

2026/6/23 0:00:38阅读更多 →
音视频场景下的 Java 开发者面试:技术与挑战

音视频场景下的 Java 开发者面试:技术与挑战

面试互联网大厂:从音视频场景看 Java 开发者的技能与挑战 在互联网大厂求职的面试中,Java 开发者往往需要面对严苛的技术问题。今天,我们将通过一位名叫燕双非的搞笑程序员与严肃的面试官之间的对话,看看在音视频场景下&#xff0…

2026/6/23 0:00:38阅读更多 →