- 博客(22)
- 收藏
- 关注
原创 为什么“无源网线一分二“不能同时带两台设备?从 PHY 层彻底讲清楚
方案可行性推荐度无源一分二(一端分叉)❌ 违反以太网点对点原则,PHY 层无法正常工作⭐(临时测试都别用)两端各做两个口(分线面板)✅ 两条独立链路,各跑百兆⭐⭐⭐⭐(省线省端口的百兆方案)房间端加小交换机✅ 标准方案,千兆/百兆都行⭐⭐⭐⭐⭐(最省心)一句话记住:以太网没有总线共享。每一对通信的设备之间,必须有自己独立的 PHY↔PHY 链路。想少占端口就加交换机;想少布线就两端分线占两个端口。没有"又只占一个端口又不用交换机"的合法方案。
2026-08-19 16:09:27
364
原创 OCPP 1.6 主要消息全景解读
OCPP 1.6 Edition 2协议定义了28种消息,分为6个功能模块(Core核心模块为必选,其余5个为可选)。核心模块包含16条基础消息,覆盖设备上线、鉴权、充电控制、状态同步等关键功能,其中BootNotification是设备启动的首条消息,Heartbeat用于保活,Authorize/StartTransaction/StopTransaction构成完整充电流程。其他可选模块包括固件升级、本地授权管理、预约服务、智能充电策略和远程触发功能。协议采用JSON数组格式传输消息(2=请求/3=响
2026-08-12 11:02:01
303
原创 OCPP 1.6 科普:充电桩与运营平台的“普通话“
OCPP1.6是目前全球应用最广泛的充电桩通信协议标准,由荷兰非营利组织OpenCharge Alliance制定,主要用于解决早期充电桩市场的厂商锁定问题。该协议采用WebSocket+JSON的通信架构,定义了充电桩(ChargePoint)与中央管理系统(CentralSystem)之间的交互规则,包含核心功能(CoreProfile)和5个可选功能模块(如固件管理、预约等)。通过标准化通信流程(如启动注册、授权、充电计量、远程控制等),OCPP1.6实现了不同品牌设备的互联互通,并推荐TLS加密保障
2026-08-12 11:00:41
214
原创 Linux系统日志占用100%?手把手排查与优化journald和rsyslog配置
问题原因解决journald转发到rsyslog,双重存储关闭转发,限制journal大小日志文件巨大rsyslog未配置logrotate配置logrotate或停用rsyslog配置不生效未重启服务修改后必须日志管理看似小事,但在小磁盘的嵌入式设备上足以引发严重故障。建议所有类似场景(Docker容器、边缘盒子、树莓派等)都预先限制journal大小并关闭不必要的转发,从根源上杜绝“日志撑爆磁盘”的惨案。本文首发于CSDN,欢迎转载,请注明出处。
2026-08-10 17:39:10
242
原创 Linux服务器程序自升级方案分析与实践
摘要: 边缘计算盒子因日志文件过大导致根分区爆满。问题根源在于systemd-journald默认将日志转发给rsyslog,导致同一日志被存储三次(journald存一份,rsyslog存两份)。解决方案分三步:1)立即清理日志文件;2)修改journald配置,关闭转发并限制日志大小;3)可选停用或精简rsyslog。部署时需注意配置文件的完整性和服务重启。建议在资源受限设备上预先限制日志大小并关闭冗余转发,避免类似问题。
2026-08-10 17:04:48
319
原创 一文讲透:CAN、RS485、UART、SPI、TCP 通信中阻塞与非阻塞如何选?
摘要:嵌入式系统中,阻塞与非阻塞I/O模型的选择直接影响系统性能。本文对比分析了CAN、RS485、UART、SPI、TCP等接口的特性,提出四维决策指标(多通道处理、数据预测性、实时性、资源开销),并给出各接口的最佳实践: CAN:非阻塞+多路复用(随机帧到达) RS485:非阻塞+状态机(避免半双工死锁) UART:低速阻塞/高速非阻塞(灵活适配场景) SPI:低速阻塞/高速DMA(时序可控) TCP:高并发用epoll/简单客户端用阻塞 核心结论:工业场景优先非阻塞+多路复用,初学者可先掌握阻塞模型。
2026-08-06 09:57:34
298
原创 从 RS485 到 TCP/CAN:通信编程中缓冲区的必要性及最佳实践
通信类型需要缓冲区?推荐缓冲区类型必须环形缓冲区RS232 (文本协议)建议使用环形缓冲区或利用内核行缓冲TCP 长连接必须环形缓冲区TCP 短连接可选线性缓冲区或直接处理CAN通常不需要无或极小环形缓冲区(保险起见)UDP通常不需要无文件 I/O不需要内核已处理管道/消息队列视场景多路复用场景建议环形缓冲区最终建议默认使用环形缓冲区:除非你有 100% 的把握每次 read 都能拿到完整协议单元。缓冲区大小要合理:至少能容纳 2-3 个最大协议帧,避免溢出。
2026-08-06 09:50:29
333
原创 嵌入式避坑实录:FLASH跨页写入数据丢失,90%的人都会踩的坑!
摘要: 在使用STM32+W25Q64 SPIFLASH时,向地址0x1002连续写入256字节数据时发现最后2字节未能成功写入(保持0xFF)。问题根源在于FLASH的页边界限制(每页256字节),导致跨页写入时超出当前页的部分被忽略。解决方案包括:1)实现通用分页写入函数,自动拆分数据并处理跨页;2)手动分段写入;3)确保起始地址页对齐。同时需注意写使能、擦除前提、写保护检查等细节。通过分页写入策略可有效避免此问题,适用于各类嵌入式存储开发场景。(149字)
2026-08-05 09:57:26
426
原创 FRP Tcpmux 模式连接失败?90% 是因为 customDomains 大小写问题
根本原因:frp tcpmux 的 Host 匹配是精确字符串比较,而客户端工具会自动将域名转为小写。解决方案统一使用小写,frpc 注册小写域名。最佳实践:所有设备标识(board_name)在代码层面强制.lower(),避免人工疏忽。验证方法:使用 nc 发送原始 CONNECT 请求,观察 frps 日志。如果你还在为 frp tcpmux 连接失败困扰,不妨检查一下你的是否包含大写字母。改成小写,问题迎刃而解!附录:常用命令速查操作命令查看 frps 日志或重启 frpc黄金测试。
2026-08-05 09:10:58
479
原创 跨平台编译QT5.15.10实战指南
本文介绍了在x86_64 Linux系统上为ARM64架构交叉编译Qt 5.15.10的完整流程。首先需要下载ARM64工具链(如gcc-arm-10.2)并安装必要的依赖包。然后下载Qt源码并配置环境变量,特别是SYSROOT路径。接着修改mkspec文件指定交叉编译工具链,运行configure生成Makefile。最后通过make命令编译并安装到目标路径/opt/qt5.15.10-arm64。文中还提供了常见问题解决方法,如库路径错误和头文件缺失的处理建议,并给出了验证编译结果的检查方法。
2025-10-22 10:28:27
1092
原创 解决Qt编译错误:std::numeric_limits缺失
确保编译器支持 C++11 或更高版本。在项目配置或编译命令中添加以下标志:无效,默认C++11,也尝试了C++14。虽然后面证实确实是这部分相关的问题,但我没有成功验证加头文件能解决;加了后报limits找不到,但是编译链有。更换了QT5.15.10,相同环境能编译通过,同样的头文件,10包含头文件,可以正常编译安装。,但编译器无法找到该模板类的定义。该错误表明在编译 Qt 5.15.3 时,被误认为可能的替代项。
2025-10-22 09:28:05
430
原创 通过FRP与阿里云服务器实现远程ssh访问
本文详细介绍了如何利用阿里云服务器和FRP工具实现远程SSH访问。主要内容包括:FRP服务端在阿里云ECS上的部署配置(含端口设置、认证令牌、日志管理等);安全组规则配置;FRP客户端配置步骤;SSH连接测试方法。文章还提供了安全加固建议(如密钥认证、IP限制)和扩展应用场景(Web服务转发、多级穿透等),特别介绍了更安全的STCP模式配置方法。该方案适用于远程办公、内网穿透等场景,兼具实用性和安全性。
2025-10-21 16:40:09
595
原创 记录一次 有人 串口转TCP 模块的使用
在Sscom等串口工具中建立多个TCP连接时,需确保索引功能已启用。该指令确保TCP模块能够区分不同连接的数据来源和目标,避免数据广播。:未启用索引时,多个连接的数据会广播至所有设备,导致干扰和带宽浪费。:TCP模块未区分连接来源,违反协议的点对点原则。,确保数据定向收发。
2025-10-21 15:27:37
257
原创 Problem: 6. Z 字形变换
如果没有理解的话,可以想象原本的数据是一个直线(绳索),我们U字反复对折,U字里,相邻两点的关系其实是两点直接绳索的长度,即为“两个”x到n的距离。相邻U字之间的关系是一个U型绳索的长度,即为2(n- 1 -x),变化为2n - 2x - 2 ,即为cycle -2x;一 二列第i行,i(0 < i < numRows-1):每个数据之间的关系为2(numRows- 1 - i);中间第x行,设其为第x个数据,与下一个数据的关系为x + (n-x) + (n-1);相邻两个的关系为m+2(n - x);
2025-08-15 13:43:24
418
原创 技事纪—— 传输文件数据中存在多个 \0怎么避免截断
在进行文件上传操作时,文件压缩后,传输文件数据中存在多个 \0,许多操作会受限制因为遇到\0会被截断。甚至数据传输都不正确;在使用字符串处理函数(如 C 语言中的 strcpy、strlen 等)时,遇到 \0 时会认为数据到此为止,导致数据丢失。
2025-02-11 00:00:00
459
原创 技事纪——OCPP协议cjson操作的一些注意事项
5.格式转换cJSON_PrintUnformatted 与 cJSON_Print :cJSON_Print 会输出带有缩进和换行的 JSON 字符串,便于人类查看。4.注意:使用 cJSON_Delete() 删除整个 JSON 对象,会释放所有相关的内存。如下,由于 feedback_body 是通过 cJSON_AddItemToObject 被添加到 feedback_root 中的,当删除 feedback_root 时,它所包含的所有子项(包括 feedback_body)会被自动删除。
2025-02-10 17:33:58
383
原创 技事纪——记录一次DNS解析
在我的设备开发板与一个加密交换机通讯过程中,连接指定网址总是失败,经打印发现问题原因是DNS解析失败导致的;更换网络使用其它的路由器或者交换机就正常。
2025-02-10 16:07:15
1152
原创 技事纪——HTML 转义导致下发URL之后连接失败
在调试下载阿里云文件功能过程中遇到的一个问题:使用curl指令下载成功,使用程序测试功能总是失败,连接不上;
2025-02-10 14:37:59
421
原创 技事纪-记录一次给予mongoose库的Https文件上传的实现
工作需要,LINUX+QT下基于Mongoose库进行文件上传功能的开发,这是最近的一次经历,给我以激励的同时让我决定需要记录一下日常与收获;
2024-04-13 17:57:18
723
1
原创 技事纪-J1939-CAN多帧传输的实现
CAN通讯,多帧传输,参考J1939协议实现。软件环境:QT+LINUX语言:C++硬件:nuc972板子,NUC972DF61YC。
2024-04-13 17:13:57
2464
2
qt5.15.10-arm64-complete-toolchain-backup.tar.gz
2025-10-22
QT数据库SQL的操作函数:增、删、查、改以及自实现例程
2024-11-01
串口协议-涂鸦 IoT 开发平台-涂鸦 IoT 开发平台.pdf
2024-09-12
JLink手动添加Artery MCU-V2.0.0
2024-09-11
数据处理字序,联合体
2025-11-25
关于位域定位的一些疑问;
2025-10-30
arm开发UART怎么处理连续0字节丢失的问题
2024-09-30
一次阿里云上传文件的失败尝试,求解决方法,在我基础上。
2024-05-06
c++,系统将\0和00划等号了,怎么区分
2023-04-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅