- 博客(70)
- 资源 (9)
- 问答 (1)
- 收藏
- 关注
原创 SOUI Combobox 实现半透明弹出下拉框
这样上面就和控件离开了10像素(PS:需要更新到最新的SOUI4,老版本对)inset 和margin没有处理会导致大小显示异常。listbox一个bug,也会导致无法点击。SOUI默认情况下combobox的弹出框不是半透明的,这个时候如果背景透明时,滚动条会出现黑色背景,这个时候只需要在在combobox下添加一个子节点。另外默认弹出框是和你控件位置无偏移的,如果需要偏移可以结合半透明+皮肤+margin来实现偏移效果。这样一个窗口默认即实现了半透明效果。
2024-06-02 10:19:29
399
原创 SOUI4里使用字体回退
在新版本的SOUI里render-skia导出了一个新的函数用于字体回退功能。然后在合适的地方定义一个SFontFallback nonameFontFallback;即可实现显示藏文功能。使用前后对比图(优快云上传自动加了水印,但是仔细看还是可以看到效果的,不使用回退将显示方框,使用后正确显示)因为我的工程是使用动态库,这里可以直接获取到这个导出函数来实现字体回退功能。这里使用一个粗制实现显示藏文的功能。
2024-05-13 20:45:43
243
原创 MsgWaitForMultipleObjects用法
其中m_DoThread为std::thread,如果直接用的API,些里直接给句柄即可。
2024-03-04 10:18:04
234
原创 MFC实现拖动文件到控件
2、定义一个消息将拖动事件转发到窗口上执行。(非必须,但是我们一般的逻辑都在主窗口上)3、添加继承控件的消息处理函数 ON_WM_DROPFILES。4、使用DDX_Control关联控件。1、继承需要实现的拖动功能的控件。5、在窗口处理转发过来的事件。这里以定义一个List为例。
2024-02-24 09:36:03
757
原创 ESP32:物联网时代的神器
随着物联网技术的不断发展,ESP32作为一种功能强大的微控制器,在物联网时代发挥着越来越重要的作用。其低功耗、高性能、可编程性和丰富的外设和接口等特点,使得ESP32在智能家居、智能城市、工业物联网、医疗健康等领域具有广泛的应用前景。未来,随着物联网技术的不断发展和普及,ESP32有望在更多领域发挥重要作用,成为物联网时代的重要神器。ESP32是一种低功耗、高性能的Wi-Fi和蓝牙芯片,具有丰富的外设和接口。2.高性能:ESP32具有强大的处理能力和高速度的Wi-Fi和蓝牙连接,可满足各种应用需求。
2023-11-29 09:54:13
3482
原创 esp8266替代产品
然而,随着技术的不断发展,一些新的芯片已经开始取代ESP8266,成为更受欢迎的替代产品。其中,ESP32是一款比ESP8266更强大的芯片,具有更多的功能和更高的性能。总之,随着技术的不断发展,ESP8266的替代产品越来越多,选择合适的芯片对于开发物联网设备至关重要。更快的处理速度:ESP32采用更快的处理器,可以更快地处理数据,提高设备的响应速度和性能。更低的功耗:ESP32采用了更先进的制程技术,具有更低的功耗,可以让设备更加持久地工作。
2023-11-09 06:48:26
962
原创 ESP使用webserver实现本地控制
因为使用云服务有时候不可靠,那么离线控制就很重要。本文使用webserver实现本地网页控制。这样不需要再单独开发APP,有浏览器就可以控制。本文所有测试是靠ESP32。使用USE_8266控制。
2023-11-08 11:14:38
310
原创 ESP8266:物联网时代的连接神器
ESP8266作为物联网时代的重要连接神器,凭借其低功耗、Wi-Fi连接、易于开发和高度的集成性等优势,在各个领域都展现出了强大的应用潜力。它的低功耗、Wi-Fi连接、易于开发和高度的集成性使得其在各个领域都有广泛的应用。随着物联网技术的不断发展,我们有理由相信,ESP8266将在未来的物联网应用中发挥更加重要的作用。高度集成:ESP8266集成了丰富的功能,包括ADC、DAC、USB接口、SPI、I2C等,使得工程师可以更高效地进行设计和开发。这意味着在电池供电的设备中,它能保证更长的续航时间。
2023-11-07 08:00:00
1960
1
原创 利用vsc+py+巴法云实现带版本号的OTA自动更新检测
在巴法云上传OTA之前的文章已经有介绍,这里不在多说,巴法云提供了https://api.bemfa.com/api/device/v1/bin的地址获取OTA固件的地址.它使用GET接口完整的地址为https://api.bemfa.com/api/device/v1/bin?uid=xxxx&topic=xxxx&type=xxx这几个名字都可以望文生意,这里只说type MQTT设备=1 TCP设备=2 图云=3.具体可以参考。
2023-07-22 21:27:11
590
原创 在Visual Studio Code里导出8266固件
1.编辑 .vscode目录下 arduion.json 添加 一个配置项output即输出目录.当然你不设置其它软固件一样会生成,只是就不知道你能不能找到了.我的配置如下。即可在上面设置的目录下找到生成的 xxxx.bin 文件即是你需要的固件,当然如果代码有错误你就需要先处理好,才能正确生成固件.2. 切换到 arduion的项目文件 xxxx.ino.点击vsc右上的验证。我这里pcbtn.ino.bin即是我的固件.当然这个路径你想写什么 就是什么 .
2023-07-11 22:08:13
943
原创 8266使用巴法云OTA
这里就是需要的URL,这个URL是和当前主题绑定的,即这个主题的OTA url始终是这个.所以你可以写死在代码里,也可以像我一样保存是EEPROM.CConfigMgr::getSingleton().OTAURL()返回OTA的URL.这个地址可以从巴法云的主题处获取。这里的CConfigMgr是一个单例类它保存了一些从eeprom读取的配置信息其中。点击 这里的OTA即可上传固件.上传以后。为了使用方便把OTA封装一下为以下类。当接收到ota命令时直接。
2023-07-11 21:53:27
586
原创 ESP8266使用EEPROM的正确方式
中间的read和write其实都是操作的缓存内存,也就是说这个写并没保存下来,如果断电,那么信息会丢失。在end里能过判断标志位来确定是否需要commit,commit里才会写回数据到flash,另外它提供了getDataPtr和getConstDataPtr来直接操作那块缓存。另外begin需要传入缓存大小,这里begin也就是你读写的大小,它先会缓存flash的数据到内存,接着你的所有操作都是针对它来。对于这个类的实现其实很简单,但是通过阅读代码,其实它总是被缓存的。也就是说你的读写总是在内存进行的。
2023-02-14 12:41:47
1599
原创 使用nvml获取n卡温度
之后就可以遍历 nvmlDeviceGetHandleByIndex 来获取设备的handle.此处类型为nvmlDevice_t。有了这个nvmlDevice_t就可以调用nvmlDeviceGetTemperature来获取温度了。使用 nvmlDeviceGetCount 获取安装的显卡数量。使用nvml获取显卡温度相当简单,只需要几个API即可。最后 nvmlShutdown 退出nvml;使用nvmlInit初使化nvml库。
2023-01-26 12:57:29
826
原创 SOUI自定义控件(3)
上一节内容已经搭好了主框架,本章就在这个框架下添砖加瓦了。这一节主要讲SOUI的消息映射,在SOUI里使用了WTL的消息映射方式,当主窗口收到消息后会根据情况转发消息给SOUI的控件,在控件里我们使用本//消息映射列表 SOUI_MSG_MAP_BEGIN() SOUI_MSG_MAP_END()来处理消息。在这之前添加关心的消息即可,所有可用消息查看msgcrack.h即可查看。对于一大多数消息直接 MSG_WM_XXXX(XXXX代表消息名比如MSG_WM_SIZE即可处理WM
2022-05-30 13:19:49
453
原创 SOUI自定义控件(2)
本系列文章基于VS2022+SOUI4,对于SOUI4相对于SOUI3来说主要是添加了导出C接口的能力,对应的代码上也比较多的采用了宏,当然原理上和SOUI3并没有太大差别。一面来具体实现我们的图表控件类。一、创建控件类。下面新建一个控件类。我把它叫 SCharts这个控件基于SWindow。代码如下:#pragma once#include <core\SWnd.h>SNSBEGINclass SCharts : public SWindow{ D
2022-05-25 17:09:27
540
原创 SOUI自定义控件(1)
本文内容旨在完成一个供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。的类echars控件!SOUI目前几乎没有提供任何图标控件,而对于UI来说如何更好的展示数据显然是很重要的!在SOUI里默认提供了两个渲染器,GDI和skia.由于GDI本身没有提供对透明通道的支持!所以需要特别处理加上本身速度比较慢,而且很多
2022-05-23 20:32:28
2408
原创 SOUI皮肤浅谈
对于SOUI来说皮肤对象是一个很重要的对象。SOUI内置一了套常用皮肤,祥见soui-sys-resource\theme_sys_res\sys_xml_skin.xml。这里定义了几乎所有常用的皮肤。对于SOUI来说皮肤就是一个绘制对象,它可能是图片,也可能是色彩或者其它方法绘制的图形图像。皮肤和控件关系就像灵与肉,控件一方面实现功能,另一方面调用皮肤装饰自己让它看起来是某个控件。但是另一方面皮肤又是一个独立的组件,也就是说皮肤完全可以把一个button装扮成一个img。而让用户无知无觉。所以如果要控件
2022-05-13 21:27:59
766
原创 C++检测自己是否被调试
要检测自己是否被调试主要有调用API和获取PEB标志PEB标志主要检测BeingDebugged 和NtGlobalFlag ,当然检测一个就行了,一般来说如果一个被调试器的反检测调试功能修改那另外的一般也跑不了,对于x86 PEB读取 fs[0x30]即可,对于x64读取gs[0x60]即可,BeingDebugged的偏移为固定的0x002,NtGlobalFlag因为两者结构不一样所以偏移也不一样x86:0x68 x64:0xbc。NtGlobalFlag如果被调试其值为0x70。而API有.
2022-05-11 11:02:30
3262
原创 由sendmessage引发的血案
某项目里使用了soui的通知中心的SRUNONUISYNC实现ui和后台线程之间的同步!发现窗口关闭时后台线程小概率出现随机join后死锁现象!由于这个现象出现的几率很小十分难调试,在我本机甚至无法复现,只得研究代码过程!好在代码量不大,排除几处可能得情况,最后锁定在SRUNONUISYNC上!因为它的原理就是使用SendMessage来实现同步!那么为什么它会发生死锁呢?首先这个关闭动作发生在一个消息处理过程中即鼠标点击事件,这个时候如果SendMessage的情况则分两种,一是来自本ui线程,这个时候它
2022-05-07 00:16:22
374
原创 C++获取CPUID
#include <intrin.h> std::array<int, 4> cpuid; __cpuid(cpuid.data(), 1); char cpuid_buf[17]; sprintf_s(cpuid_buf, "%08X%08X", cpuid[3], cpuid[0]); std::cout << cpuid_buf << std::endl;经测试__cpuid(cpuid.data(), 1); 和__cpuide
2022-05-05 09:18:51
2638
原创 使用8266做串口调试工具二
上一文已经做好了8266部分,这部分做好服务APP。窗口设计如下:代码如下:using System;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading;using System.Windows.Forms;namespace ComTo8266{ public partial class MainDlg : Form { .
2022-04-21 13:37:14
618
原创 使用8266做串口调试工具一
日常有做工控的同学,一定有过这个经历,有的机器或设备使用串口通讯但是调试实物太麻烦或者成本太高。这个时候如果有一个能够模拟设备的东西将会事半工倍。一般来说使用串口通讯过程协议都比较简单,一般是简单的收发。网上找一圈软件串口一般都收费且使用驱动,兼容性和使用成本都比较高。手里正好有一CH340的USB串口和8266,而8266又支持网络,那么如果用一个程序使用网络连接到8266。8266负责转发串口和网络的工具不是可以完美调试。当然展开来说还以的扩展出直接远程调试设备的效果,而且8266+340成本不过1
2022-04-19 13:16:21
3351
原创 一个8266崩溃
8266这种没法实时调试,只能通过打印错误信息来确认问题。当连接串口时,它如果崩溃会打印出错误可以参考这个博客ESP8266/ESP32 程序崩溃 (crash) 时的定位方法一:寄存器和调用栈 (backtrace)_乐鑫科技 Espressif的博客-优快云博客_esp32 寄存器我这里也有一遇到一个崩溃,错误有可能不一致,感觉是堆栈被破坏,反复检查代码似乎没错误。注释了不少代码,仍然崩溃。最后发现居然是因为定义了返回类型,但是实际没有返回。。。。这个错误很低级,但也很常见,因为很多API设计的时候可
2022-03-21 14:55:33
629
原创 8266获取18B20温度
8266获取18B20温度,网络同步到巴法云。最后通过手机软件或天猫精灵就可以获取实时温度。这里我使用的8266是ESP01S。这个板子导出接口太少,如果大家有多操作需求最好买其它型号,在这里顺带说一下,8266不是一个具体的板子,它只是一个芯片型号。一般板子的区别也就是用的flash和导出的io口多少不一样,当然有的板子还自带了USB转串口芯片,这样直接使用数据线接电脑USB口便可下载程序更方便,如果是学习个人觉得这种串品芯片它更方便,flash也最好选大点的,以免有的例子跑不了。1、打开ardu
2022-02-18 20:00:36
2090
4
原创 使用Visual Studio Code开发Arduino
据说Visual Studio也有插件支持,但是我在vs2019里并未搜索到这个插件,可能停止开发了。使用Arduino开发没有提示,并且如果是它自己提供的类和函数不加头文件也不出错。没有自动提示,代码着色也有等于没有。也没有跳转定义的功能,这基本就是一个配置好了Arduino编译选项的文本编辑器。对于写代码的来说实在说不上友好。新手更是无从下手。翻源码?自己在目录下找是不是对于9102的时代还太落后了,况且新手可能都不知道它在哪个文件下,还得使用全文搜索。好在Visual Studio Code提
2022-02-17 10:43:40
2024
原创 ESP01S搭配arduino开发环境
esp8266是一个低成本的芯片,做物联网开发练习挻好的。硬件:某宝网购的es-01s+CH340下载器,当然直接使用电脑串口也是可以,但是现在的新电脑可能没有串口即使有也不太方便,不如USB的方便。...
2022-02-13 12:27:32
7846
8
原创 树莓派读取18B20温度
一、修改/boot/config.txt最后一行加上 dtoverlay=w1-gpio或者使用GUI操作关机以后插上模块,默认模块读取为GPIO.7,即BCM的4脚,如果一切正常则可以在这个路径下看到一个28-开对的设备。读取个设备下的文件即可获取温度值,此处不再细说。#pragma once#include <fstream>#include <iostream>#include <filesystem>namespace fs .
2022-02-11 13:34:17
519
原创 解码ios syscefdata 核心代码
int CSysCfgData::ParseSysCfg(const char* data, uint64_t size){ KeyList.clear(); m_bValid = false; struct syscfg_hdr* hdr; struct syscfg_key* key; if (!data) { return NULL; } if (!size) size = DATALEN; if (size < sizeof(struct syscfg_hdr.
2022-02-01 22:07:02
1937
2
原创 VCPKG使用入门
关于VCPKG编译和使用基本方法,其它文章已经说得很清楚。我也是依照各位大佬的文章学习了不少东西。下面说说我的使用发现。一、库和它支持库都是一直更新的,所以一般用一段时间就可以更新一次,以便获取新加入的库的支持。二、怎么知道它支持哪些库,查看 子目录下的 ports。这个每个文件夹就对应一个库。vcpkg install 加上这个目录的名字即可安装对应的库。三、部分库会提供一些选项提供一些编译和库特性。这个参数使用方法如下:vcpkg install 库名[选项]:版本选项库名,已经在上
2022-02-01 22:01:09
1931
原创 利用巴法云控制电脑
官方网站地址https://cloud.bemfa.com/上面地址有详细说明。如果自己有服务器也可以自己利用各种语音平台提供有SDK来接入。我自己只有一个天猫精灵,所以我这里接入的天猫精灵,没有服务器所以使用现成的。就是上面的巴法云,当然这种平台其实还是挻多的。我是随便选择的一个。对于巴法云来说接入很简单。第一步:注意一个巴法云帐号第二步:登陆以后找到控制台,这里有私钥。这个就是接入时的验证。第三步:建立一个主题,当然它不是你想建立什么就建立什么的,巴法云物联网平台默认接入天猫精灵控.
2022-01-31 20:49:37
5654
2
原创 std::stoi stol stoul stoll stof stod
std::stoi stol stoul stoll stof stod 一系列函数为C++提供的转换string/wstring的方法,但是对于第二个参数网上说的是从第N个位置开始,其实并不是,不知道发这个有没有测试过。这个其实返回的是数字的位数,比如 1返回的就是1,10返回的就是2 100返回的就是 3。此外当转换失败是它会异常一定要处理,而不再是atoi这个C函数转换失败时会返回0的套路。...
2022-01-26 21:26:11
1038
arduino 8266开发工具链
2022-02-13
apktool.zip
2021-02-14
Microsoft Visual Studio International Feature Pack 2.0
2010-04-04
CancelIo后不到ERROR_OPERATION_ABORTED
2021-02-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人