<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LZL19980119的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/LZL19980119</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LZL19980119]]></copyright><item><title><![CDATA[DMA传输]]></title><link>https://blog.youkuaiyun.com/LZL19980119/article/details/145612157</link><guid>https://blog.youkuaiyun.com/LZL19980119/article/details/145612157</guid><author>LZL19980119</author><pubDate>Thu, 13 Feb 2025 15:27:47 +0800</pubDate><description><![CDATA[DMA（Direct Memory Access，直接内存访问）是计算机系统中一种高效的数据传输方式。它允许外设（如硬盘、网络设备、FPGA等）直接与内存交换数据，而无需通过CPU的干预，从而极大提高了数据传输的效率，减少了CPU的负担。]]></description><category></category></item><item><title><![CDATA[各种“字”的解释——全面了解MIL-STD-1553协议核心字段]]></title><link>https://blog.youkuaiyun.com/LZL19980119/article/details/145380867</link><guid>https://blog.youkuaiyun.com/LZL19980119/article/details/145380867</guid><author>LZL19980119</author><pubDate>Mon, 27 Jan 2025 16:49:57 +0800</pubDate><description><![CDATA[在 MIL-STD-1553 协议 中，命令字、控制字、状态字、矢量字、自检字是通信过程中的重要组成部分。它们承担着不同的职责，共同构成了数据传输、状态反馈和控制机制的核心。本文将详细介绍这些“字”的定义、作用和应用场景。]]></description><category></category></item><item><title><![CDATA[QT C++ 虚函数的使用案例：创造发布-订阅模式来实现类与类之间通讯]]></title><link>https://blog.youkuaiyun.com/LZL19980119/article/details/145335564</link><guid>https://blog.youkuaiyun.com/LZL19980119/article/details/145335564</guid><author>LZL19980119</author><pubDate>Fri, 24 Jan 2025 10:54:12 +0800</pubDate><description><![CDATA[发布-订阅模式（Publish-Subscribe Pattern）是一种用于实现模块解耦通信的常见设计模式。本文以一个轻量级的消息总线（MessageBus）为例，详细阐述了基于 Qt 框架的消息系统设计与实现。消息总线作为中介，管理消息发布者与接收者的通信。接收者通过注册特定消息类型订阅消息，而发布者通过总线发送消息，实现了多对多的解耦通信。

系统设计采用单例模式保证全局唯一的消息总线实例，并通过虚函数提供多态机制，让不同接收者根据需求自定义消息处理逻辑。消息总线支持线程间通信，确保跨线程安全。本文还]]></description><category></category></item><item><title><![CDATA[QT C++ 中的虚函数作用介绍]]></title><link>https://blog.youkuaiyun.com/LZL19980119/article/details/145325097</link><guid>https://blog.youkuaiyun.com/LZL19980119/article/details/145325097</guid><author>LZL19980119</author><pubDate>Thu, 23 Jan 2025 17:02:37 +0800</pubDate><description><![CDATA[看此文章可以了解到，虚函数的存在意义，以及作用]]></description><category></category></item><item><title><![CDATA[一个环形缓冲区的使用]]></title><link>https://blog.youkuaiyun.com/LZL19980119/article/details/145302678</link><guid>https://blog.youkuaiyun.com/LZL19980119/article/details/145302678</guid><author>LZL19980119</author><pubDate>Wed, 22 Jan 2025 15:12:45 +0800</pubDate><description><![CDATA[为了应对这些问题，我实现了一个简单而高效的环形缓冲区，通过合理地控制读写指针，有效地解决了数据流存储和读取的需求，同时避免了内存浪费和性能问题。接下来，我将结合代码示例，详细介绍环形缓冲区的原理与实现。是一种非常高效的数据结构。它以其循环存储的特性，解决了传统线性队列在固定空间内的浪费问题。在软件开发中，尤其是在嵌入式系统、实时数据处理以及通信协议的实现中，环形缓冲区是一个逻辑上首尾相连的数据存储结构，其核心在于通过。的管理，实现高效的数据读写操作。下面我们具体说明两者的作用。假设缓冲区的总大小为。]]></description><category></category></item><item><title><![CDATA[高效数据转换：从 8 位到 32 位的优化实践]]></title><link>https://blog.youkuaiyun.com/LZL19980119/article/details/145299903</link><guid>https://blog.youkuaiyun.com/LZL19980119/article/details/145299903</guid><author>LZL19980119</author><pubDate>Wed, 22 Jan 2025 11:22:22 +0800</pubDate><description><![CDATA[在嵌入式系统、通信协议或其他涉及字节序列处理的场景中，我们经常需要将 8 位数据（）转换为 32 位数据（这项操作不仅需要高效地完成字节拼接，还要妥善处理不足 4 字节的情况。本文以一个具体函数为例，详细介绍如何实现高效的数据转换，并总结设计的关键点和优化方法。在数据转换场景中，高效、稳定的算法是必不可少的。本次实现的函数不仅满足了实际需求，还具有良好的通用性和可维护性。希望这篇文章能为有类似需求的开发者提供参考。如果你在数据转换过程中有其他问题，欢迎在评论区讨论！]]></description><category></category></item><item><title><![CDATA[关于QByteArray 取数据效率低下的问题解决]]></title><link>https://blog.youkuaiyun.com/LZL19980119/article/details/145298293</link><guid>https://blog.youkuaiyun.com/LZL19980119/article/details/145298293</guid><author>LZL19980119</author><pubDate>Wed, 22 Jan 2025 10:22:53 +0800</pubDate><description><![CDATA[在实际开发中，我们经常需要处理数据包并提取其中的部分内容进行操作。最开始，我使用了QByteArray来存储整个数据包并通过一个临时变量来提取指定大小的数据。将所有数据存储在中。每次提取N字节的数据到中。提取后从data中移除已提取的部分。然而，在实际测试中，我发现每次提取操作耗时竟然达到了50 毫秒！显然，这样的性能无法满足需求。使用QByteArray操作数据时，对于小数据量或偶尔操作是可行的，但对于高频次、大数据量的操作，其性能瓶颈不可忽视。]]></description><category></category></item><item><title><![CDATA[QT 使用Win原始UDP]]></title><link>https://blog.youkuaiyun.com/LZL19980119/article/details/143210009</link><guid>https://blog.youkuaiyun.com/LZL19980119/article/details/143210009</guid><author>LZL19980119</author><pubDate>Thu, 24 Oct 2024 15:22:47 +0800</pubDate><description><![CDATA[在使用QT 封装好的UDP时候，总感觉不好用，今天我封装了一个win UDP。]]></description><category></category></item><item><title><![CDATA[QT UDP 收数据引发的问题]]></title><link>https://blog.youkuaiyun.com/LZL19980119/article/details/143209096</link><guid>https://blog.youkuaiyun.com/LZL19980119/article/details/143209096</guid><author>LZL19980119</author><pubDate>Thu, 24 Oct 2024 14:58:14 +0800</pubDate><description><![CDATA[经过调试和日志分析，我发现在操作UI时，UDP的接收出现问题。可能的原因是由于UDP通信和UI操作都在主线程中执行，导致UI操作阻塞了UDP数据的接收，尤其是在发送完成后的短暂等待时间内更容易发生这种情况。为了解决这个问题，我将UDP的发送和接收操作放到了单独的线程中。在该项目中，上位机需要向下位机发送一个32K大小的数据包，数据包发送后，下位机会在接收到数据后向上位机回复一个标识符。上位机在发送完32K的数据包后，等待5毫秒，如果没有接收到下位机的回复，则判定为超时。]]></description><category></category></item></channel></rss>