<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Chinley的大杂烩]]></title><description><![CDATA[家乡的星星]]></description><link>https://blog.youkuaiyun.com/chinley</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; chinley]]></copyright><item><title><![CDATA[合并QXlsx源码为单文件]]></title><link>https://blog.youkuaiyun.com/chinley/article/details/150976029</link><guid>https://blog.youkuaiyun.com/chinley/article/details/150976029</guid><author>chinley</author><pubDate>Fri, 29 Aug 2025 10:38:21 +0800</pubDate><description><![CDATA[​。]]></description><category></category></item><item><title><![CDATA[QCustomplot异常“QPainter::begin: Paint device returned engine == 0, type: 2”的修复]]></title><link>https://blog.youkuaiyun.com/chinley/article/details/131199183</link><guid>https://blog.youkuaiyun.com/chinley/article/details/131199183</guid><author>chinley</author><pubDate>Wed, 14 Jun 2023 01:20:15 +0800</pubDate><description><![CDATA[【代码】QCustomplot异常“QPainter::begin: Paint device returned engine == 0, type: 2”的修复。]]></description><category></category></item><item><title><![CDATA[Qt5.12.12 编译 QtHttpServer 手记]]></title><link>https://blog.youkuaiyun.com/chinley/article/details/128439540</link><guid>https://blog.youkuaiyun.com/chinley/article/details/128439540</guid><author>chinley</author><pubDate>Mon, 26 Dec 2022 00:34:31 +0800</pubDate><description><![CDATA[使用vscode打开源码目录，依次点开httpserver、sslserver下所有的.cpp、.h文件，只要包含的头文件中有 private的，都将其删除。http-paser是qthttpserver的组件，需要将下载的http-parser放到src\3rdparty\http-parser\中。]]></description><category></category></item><item><title><![CDATA[Qt5.12.12 编译QtMqtt模块5.15.2手记]]></title><link>https://blog.youkuaiyun.com/chinley/article/details/128439367</link><guid>https://blog.youkuaiyun.com/chinley/article/details/128439367</guid><author>chinley</author><pubDate>Mon, 26 Dec 2022 00:04:35 +0800</pubDate><description><![CDATA[下载并解压源码在Qt工具链相应include目录下创建QtMqtt目录将源码src/*.h拷贝到上述目录中修改qmqttconnection.cpp文件169行，修改内容如上修改qmqtttopicname.cpp文件148行，修改内容如上执行以下脚本xcopy * . h D:\Qt\5 . 12 . 12\mingw73_64\QtMqtt # 修改代码 qmake。]]></description><category></category></item><item><title><![CDATA[Qt下字符串列表按照自然顺序排序]]></title><link>https://blog.youkuaiyun.com/chinley/article/details/123059185</link><guid>https://blog.youkuaiyun.com/chinley/article/details/123059185</guid><author>chinley</author><pubDate>Tue, 22 Feb 2022 00:38:20 +0800</pubDate><description><![CDATA[有一组字符串：
{"L5A90E","L46c80","L5A91E","L46C80"}

希望经过排序后的结果为：
("L5A90E", "L5A91E", "L46c80", "L46C80")

代码如下：
void stringListSortDemo(void)
{
    QStringList sl = {"L5A90E","L46c80","L5A91E","L46C80"};
    QCollator collator;
    collator.setNumericMode(true]]></description><category></category></item><item><title><![CDATA[沁恒 CH32F103C8 （套用STM32 HAL库）CAN总线初始化注意事项]]></title><link>https://blog.youkuaiyun.com/chinley/article/details/122705800</link><guid>https://blog.youkuaiyun.com/chinley/article/details/122705800</guid><author>chinley</author><pubDate>Wed, 26 Jan 2022 17:31:36 +0800</pubDate><description><![CDATA[CH32F103C8号称是兼容STM32F103C8的，但在调试CAN总线时，遇到了一些问题。
基础代码通过STM32CubeMX生成，但是在执行 void MX_CAN_Init(void) 时始终不能通过。
查看沁恒官方的CAN总线测试程序，发现如下操作：
uint8_t CAN_Init(CAN_TypeDef* CANx, CAN_InitTypeDef* CAN_InitStruct)
{
  uint8_t InitStatus = CAN_InitStatus_Failed;
  uint32]]></description><category></category></item><item><title><![CDATA[ESP32 TF卡读写性能优化]]></title><link>https://blog.youkuaiyun.com/chinley/article/details/122472993</link><guid>https://blog.youkuaiyun.com/chinley/article/details/122472993</guid><author>chinley</author><pubDate>Thu, 13 Jan 2022 14:26:35 +0800</pubDate><description><![CDATA[在做SD_Test.ino测试的时候，发现其testFileIO测试进程非常慢。
仔细分析，有几个因素会影响读写性能。

SPI接口速度
将SPI时钟速度调到16M

 //if (!SD.begin())
    if (!SD.begin(SS, SPI, 16000000))
    {
        Serial.println("Card Mount Failed");
        return;
    }

DSTATUS ff_sd_initialize(uint8_t pdrv)
{]]></description><category></category></item><item><title><![CDATA[避免microPython解析GPS数据丢精度]]></title><link>https://blog.youkuaiyun.com/chinley/article/details/122286958</link><guid>https://blog.youkuaiyun.com/chinley/article/details/122286958</guid><author>chinley</author><pubDate>Mon, 03 Jan 2022 14:10:30 +0800</pubDate><description><![CDATA[GPS定位点数据，一般是6位精度的浮点数
其纬度范围可定义为-90～90（-89.999999～89.999999）
其经度范围可定义为-180～180（-179.999999～179.999999）
但是microPython解析float型，会丢失精度（好像是保留4位小数），因此在解析GPS坐标数据的时候，可以换个思路，将其解析为扩大100万倍的整型，方法如下：
    def gnssParseValue(value):  # 传入的参数是一个字符串，'3158.4608'这样的，解出形如319743]]></description><category></category></item><item><title><![CDATA[GNSS时间转换为UTC+8时间]]></title><link>https://blog.youkuaiyun.com/chinley/article/details/113755807</link><guid>https://blog.youkuaiyun.com/chinley/article/details/113755807</guid><author>chinley</author><pubDate>Mon, 08 Feb 2021 13:49:51 +0800</pubDate><description><![CDATA[GNSS时间转换为UTC+8时间
NMEA输出的GNRMC数据中，时间信息是格林威治时间，和我们东八区的时间相差八小时，要将其转换为东八区的时间，可以用以下方法：
#include "math.h"
#include "stdbool.h"
#include "stdint.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "time.h"
#include &lt;sys/time.h&gt;

// 参数举例 t]]></description><category></category></item><item><title><![CDATA[STM32启动文件中的符号研究：__Vectors、__Vectors_End]]></title><link>https://blog.youkuaiyun.com/chinley/article/details/106369102</link><guid>https://blog.youkuaiyun.com/chinley/article/details/106369102</guid><author>chinley</author><pubDate>Wed, 27 May 2020 01:03:26 +0800</pubDate><description><![CDATA[STM32的启动文件中，包含了一些可被外部调用的变量，如__Vectors、__Vectors_End等：
; Vector Table Mapped to Address 0 at Reset
                AREA    RESET, DATA, READONLY
                EXPORT  __Vectors
                EXPORT  __Vectors_End
                EXPORT  __Vectors_Size

]]></description><category></category></item><item><title><![CDATA[在CMSIS-RTOS2中获得微秒us延时]]></title><link>https://blog.youkuaiyun.com/chinley/article/details/106202879</link><guid>https://blog.youkuaiyun.com/chinley/article/details/106202879</guid><author>chinley</author><pubDate>Mon, 18 May 2020 22:26:07 +0800</pubDate><description><![CDATA[RTOS应用中，经常需要用到微秒级的延时，而RTOS本身的心跳一般在1ms到100ms不等，要用微秒延时时，往往需要额外启动定时器辅助。
CMSIS-RTOS2的API中提供了2个内核时间相关的接口：
uint32_t osKernelGetSysTimerCount(void);
uint32_t osKernelGetSysTimerFreq(void);

在阅读这2个API的相关介绍时，能发现它附带的一个示例程序，通过组合调用者2个API，实现100us的延时：
#include "cmsis_os]]></description><category></category></item><item><title><![CDATA[SmtpClient-for-Qt不能使用ssl发送的处理办法]]></title><link>https://blog.youkuaiyun.com/chinley/article/details/104148072</link><guid>https://blog.youkuaiyun.com/chinley/article/details/104148072</guid><author>chinley</author><pubDate>Sun, 02 Feb 2020 19:34:42 +0800</pubDate><description><![CDATA[本文受Qt 5.13.2 qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed启发
项目需要在特定的时刻通过邮件发送报警信息，主体框架使用Qt开发，找了一个基于Qt开发的邮件客户端程序SmtpClient-for-Qt。使用Qt5.12.6，编译、启动运行都很正常，但是在使用QQ邮箱进行发送的时候...]]></description><category></category></item><item><title><![CDATA[Qt开发中触发鼠标悬停事件]]></title><link>https://blog.youkuaiyun.com/chinley/article/details/95404282</link><guid>https://blog.youkuaiyun.com/chinley/article/details/95404282</guid><author>chinley</author><pubDate>Thu, 11 Jul 2019 00:54:06 +0800</pubDate><description><![CDATA[Qt开发中触发鼠标悬停事件
比如我有一个tableWidget，需要在鼠标悬停时，显示一些信息或者打印一些信息，可如下操作：
ui-&gt;tableWidget-&gt;setAttribute(Qt::WA_Hover,true);//开启悬停事件
ui-&gt;tableWidget-&gt;installEventFilter(this);       //安装事件过滤器

//事件过滤器...]]></description><category></category></item><item><title><![CDATA[Qt5.12.4编译MySQL驱动备忘]]></title><link>https://blog.youkuaiyun.com/chinley/article/details/94397974</link><guid>https://blog.youkuaiyun.com/chinley/article/details/94397974</guid><author>chinley</author><pubDate>Mon, 01 Jul 2019 17:17:23 +0800</pubDate><description><![CDATA[Qt5.12.4编译MySQL驱动备忘
背景
Qt5.12.4发布，本想不去理会，但changelog中提到 QFile::copy() 的一处bug，恰是当前一个小项目上用到的，虽然也可以想办法规避，但犹豫了一下，还是跟风安装了新版，安装完成后，才发现Qt5.12.4中并没有默认自带 qsqlmysql.dll ，这可叫我头大了，Qt5.12.3时期尝试过自己编译这个驱动，然而并没有成功。现在想...]]></description><category></category></item><item><title><![CDATA[QCustomPlot自定义Y轴数字格式]]></title><link>https://blog.youkuaiyun.com/chinley/article/details/93985018</link><guid>https://blog.youkuaiyun.com/chinley/article/details/93985018</guid><author>chinley</author><pubDate>Fri, 28 Jun 2019 12:27:33 +0800</pubDate><description><![CDATA[QCustomPlot自定义Y轴数字格式需求背景自定义途径
需求背景
某个项目需要显示一长串曲线图，其Y轴坐标范围变化幅度很大，用了默认的配置，由于坐标轴刻度标签长度不一，曲线总体表现得很难看。
自定义途径
QCustomPlot 源码版本是：2.0.1
经过仔细研读QCustomPlot的源码，发现设置标签格式的函数是：
QString QCPAxisTicker::getTickLabel(d...]]></description><category></category></item><item><title><![CDATA[基于CMSIS-RTOS2的闪灯序列控制]]></title><link>https://blog.youkuaiyun.com/chinley/article/details/86252295</link><guid>https://blog.youkuaiyun.com/chinley/article/details/86252295</guid><author>chinley</author><pubDate>Thu, 10 Jan 2019 20:06:36 +0800</pubDate><description><![CDATA[控制灯的基本函数：
#include &amp;quot;stdbool.h&amp;quot;
void aplRunLedOn(bool on)
{
    HAL_GPIO_WritePin(GPO_RUN_LED_GPIO_Port,GPO_RUN_LED_Pin,on ? GPIO_PIN_SET : GPIO_PIN_RESET);
}

LED灯的闪烁序列如下：
typedef struct
{
	uint16_t b...]]></description><category></category></item><item><title><![CDATA[STM32L071硬件I2C读取AM2320数据]]></title><link>https://blog.youkuaiyun.com/chinley/article/details/85943858</link><guid>https://blog.youkuaiyun.com/chinley/article/details/85943858</guid><author>chinley</author><pubDate>Sun, 06 Jan 2019 19:16:39 +0800</pubDate><description><![CDATA[STM32L071硬件I2C读取AM2320数据
直接上代码
// 2019-01-06 19:11:36 Mony:返回值除以10得到实际的温度、湿度值
void fmlAm2320GetValue(int16_t *pTemperature,uint16_t *pHumidity)
{
    #define AM2320_ADDRESS  0xB8
    
    uint8_t IIC_...]]></description><category></category></item><item><title><![CDATA[win 10 1809 下 qtcreator_process_stub 中文乱码的问题]]></title><link>https://blog.youkuaiyun.com/chinley/article/details/84893321</link><guid>https://blog.youkuaiyun.com/chinley/article/details/84893321</guid><author>chinley</author><pubDate>Sat, 08 Dec 2018 15:37:08 +0800</pubDate><description><![CDATA[win10 更新到1809后，调试Qt程序，发现qtcreator_process_stub中打印的中文都成了???这样的。
网上找到有说法，修改注册表HKEY_CURRENT_USER\Console\ 下对应的codepage为65001可以解决，实测并没有效果。
我这边的解决方法是，修改命令提示符的默认属性：

使用旧版控制台

...]]></description><category></category></item><item><title><![CDATA[Qt样式表（QSS）相关的几个链接]]></title><link>https://blog.youkuaiyun.com/chinley/article/details/80673140</link><guid>https://blog.youkuaiyun.com/chinley/article/details/80673140</guid><author>chinley</author><pubDate>Wed, 13 Jun 2018 00:14:52 +0800</pubDate><description><![CDATA[Styles and Style Aware Widgets 
解释了Qt Widgets的样式实现层级

Qt Style Sheets 
其子链接详细介绍了QSS的符号、使用以及示例]]></description><category></category></item><item><title><![CDATA[STM32F302CB使用HAL库采集PWM频率和占空比]]></title><link>https://blog.youkuaiyun.com/chinley/article/details/80163286</link><guid>https://blog.youkuaiyun.com/chinley/article/details/80163286</guid><author>chinley</author><pubDate>Wed, 02 May 2018 10:35:50 +0800</pubDate><description><![CDATA[单片机运行在36MHz，以TIM2CH2为输入通道，做如下配置：


/* TIM2 init function 由CubeMX生成，定时器初始化*/
void MX_TIM2_Init(void)
{
    TIM_MasterConfigTypeDef sMasterConfig;
    TIM_IC_InitTypeDef sConfigIC;

    htim2.Instance =...]]></description><category></category></item></channel></rss>