自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 资源 (9)
  • 问答 (1)
  • 收藏
  • 关注

原创 MsgWaitForMultipleObjects用法

其中m_DoThread为std::thread,如果直接用的API,些里直接给句柄即可。

2024-03-04 10:18:04 104

原创 MFC实现拖动文件到控件

2、定义一个消息将拖动事件转发到窗口上执行。(非必须,但是我们一般的逻辑都在主窗口上)3、添加继承控件的消息处理函数 ON_WM_DROPFILES。4、使用DDX_Control关联控件。1、继承需要实现的拖动功能的控件。5、在窗口处理转发过来的事件。这里以定义一个List为例。

2024-02-24 09:36:03 465

原创 ESP32:物联网时代的神器

随着物联网技术的不断发展,ESP32作为一种功能强大的微控制器,在物联网时代发挥着越来越重要的作用。其低功耗、高性能、可编程性和丰富的外设和接口等特点,使得ESP32在智能家居、智能城市、工业物联网、医疗健康等领域具有广泛的应用前景。未来,随着物联网技术的不断发展和普及,ESP32有望在更多领域发挥重要作用,成为物联网时代的重要神器。ESP32是一种低功耗、高性能的Wi-Fi和蓝牙芯片,具有丰富的外设和接口。2.高性能:ESP32具有强大的处理能力和高速度的Wi-Fi和蓝牙连接,可满足各种应用需求。

2023-11-29 09:54:13 1843

原创 esp8266替代产品

然而,随着技术的不断发展,一些新的芯片已经开始取代ESP8266,成为更受欢迎的替代产品。其中,ESP32是一款比ESP8266更强大的芯片,具有更多的功能和更高的性能。总之,随着技术的不断发展,ESP8266的替代产品越来越多,选择合适的芯片对于开发物联网设备至关重要。更快的处理速度:ESP32采用更快的处理器,可以更快地处理数据,提高设备的响应速度和性能。更低的功耗:ESP32采用了更先进的制程技术,具有更低的功耗,可以让设备更加持久地工作。

2023-11-09 06:48:26 375

原创 ESP使用webserver实现本地控制

因为使用云服务有时候不可靠,那么离线控制就很重要。本文使用webserver实现本地网页控制。这样不需要再单独开发APP,有浏览器就可以控制。本文所有测试是靠ESP32。使用USE_8266控制。

2023-11-08 11:14:38 161

原创 ESP8266:物联网时代的连接神器

ESP8266作为物联网时代的重要连接神器,凭借其低功耗、Wi-Fi连接、易于开发和高度的集成性等优势,在各个领域都展现出了强大的应用潜力。它的低功耗、Wi-Fi连接、易于开发和高度的集成性使得其在各个领域都有广泛的应用。随着物联网技术的不断发展,我们有理由相信,ESP8266将在未来的物联网应用中发挥更加重要的作用。高度集成:ESP8266集成了丰富的功能,包括ADC、DAC、USB接口、SPI、I2C等,使得工程师可以更高效地进行设计和开发。这意味着在电池供电的设备中,它能保证更长的续航时间。

2023-11-07 08:00:00 1285 1

原创 使用工具+迅雷解决ESP32配置下载问题

因为一些原因下载git上内容相当缓慢或都根本无法下载所以写了一个工具获取链接并使用迅雷下载。

2023-11-01 09:21:35 155

原创 ESP32模拟鼠标键盘

当然如果只需要模拟鼠标或键盘则定义其中一个即可。

2023-10-16 20:44:48 1246

原创 利用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 345

原创 在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 797

原创 8266使用巴法云OTA

这里就是需要的URL,这个URL是和当前主题绑定的,即这个主题的OTA url始终是这个.所以你可以写死在代码里,也可以像我一样保存是EEPROM.CConfigMgr::getSingleton().OTAURL()返回OTA的URL.这个地址可以从巴法云的主题处获取。这里的CConfigMgr是一个单例类它保存了一些从eeprom读取的配置信息其中。点击 这里的OTA即可上传固件.上传以后。为了使用方便把OTA封装一下为以下类。当接收到ota命令时直接。

2023-07-11 21:53:27 417

原创 ESP8266使用EEPROM的正确方式

中间的read和write其实都是操作的缓存内存,也就是说这个写并没保存下来,如果断电,那么信息会丢失。在end里能过判断标志位来确定是否需要commit,commit里才会写回数据到flash,另外它提供了getDataPtr和getConstDataPtr来直接操作那块缓存。另外begin需要传入缓存大小,这里begin也就是你读写的大小,它先会缓存flash的数据到内存,接着你的所有操作都是针对它来。对于这个类的实现其实很简单,但是通过阅读代码,其实它总是被缓存的。也就是说你的读写总是在内存进行的。

2023-02-14 12:41:47 1266

原创 ESP8266使用EERPOM保存配置

ESP8266使用EERPOM保存配置

2023-02-04 19:30:07 640

原创 ESP8266实现联网配置

使用ESP8266WebServer实现网页配置设备。

2023-02-04 18:54:28 2117 2

原创 使用nvml获取n卡温度

之后就可以遍历 nvmlDeviceGetHandleByIndex 来获取设备的handle.此处类型为nvmlDevice_t。有了这个nvmlDevice_t就可以调用nvmlDeviceGetTemperature来获取温度了。使用 nvmlDeviceGetCount 获取安装的显卡数量。使用nvml获取显卡温度相当简单,只需要几个API即可。最后 nvmlShutdown 退出nvml;使用nvmlInit初使化nvml库。

2023-01-26 12:57:29 566

原创 SOUI控件之weight使用

SOUI控件weight属性的应用实例

2022-10-07 11:03:33 189

原创 在SOUI里使用真窗口时使用SOUI的滚动条

在SOUI里使用真窗口时使用SOUI的滚动条

2022-06-30 10:04:59 362

原创 SOUI自定义控件(4)

SOUI自定义控件属性

2022-06-06 09:30:50 293

原创 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 382

原创 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 404

原创 SOUI自定义控件(1)

本文内容旨在完成一个供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。的类echars控件!SOUI目前几乎没有提供任何图标控件,而对于UI来说如何更好的展示数据显然是很重要的!在SOUI里默认提供了两个渲染器,GDI和skia.由于GDI本身没有提供对透明通道的支持!所以需要特别处理加上本身速度比较慢,而且很多

2022-05-23 20:32:28 2325

原创 EXE检查自己是否被修改

EXE检查自己是否被修改

2022-05-14 20:12:31 753

原创 SOUI皮肤浅谈

对于SOUI来说皮肤对象是一个很重要的对象。SOUI内置一了套常用皮肤,祥见soui-sys-resource\theme_sys_res\sys_xml_skin.xml。这里定义了几乎所有常用的皮肤。对于SOUI来说皮肤就是一个绘制对象,它可能是图片,也可能是色彩或者其它方法绘制的图形图像。皮肤和控件关系就像灵与肉,控件一方面实现功能,另一方面调用皮肤装饰自己让它看起来是某个控件。但是另一方面皮肤又是一个独立的组件,也就是说皮肤完全可以把一个button装扮成一个img。而让用户无知无觉。所以如果要控件

2022-05-13 21:27:59 632

原创 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 3080

原创 由sendmessage引发的血案

某项目里使用了soui的通知中心的SRUNONUISYNC实现ui和后台线程之间的同步!发现窗口关闭时后台线程小概率出现随机join后死锁现象!由于这个现象出现的几率很小十分难调试,在我本机甚至无法复现,只得研究代码过程!好在代码量不大,排除几处可能得情况,最后锁定在SRUNONUISYNC上!因为它的原理就是使用SendMessage来实现同步!那么为什么它会发生死锁呢?首先这个关闭动作发生在一个消息处理过程中即鼠标点击事件,这个时候如果SendMessage的情况则分两种,一是来自本ui线程,这个时候它

2022-05-07 00:16:22 283

原创 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 2364

原创 使用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 444

原创 使用8266做串口调试工具一

日常有做工控的同学,一定有过这个经历,有的机器或设备使用串口通讯但是调试实物太麻烦或者成本太高。这个时候如果有一个能够模拟设备的东西将会事半工倍。一般来说使用串口通讯过程协议都比较简单,一般是简单的收发。网上找一圈软件串口一般都收费且使用驱动,兼容性和使用成本都比较高。手里正好有一CH340的USB串口和8266,而8266又支持网络,那么如果用一个程序使用网络连接到8266。8266负责转发串口和网络的工具不是可以完美调试。当然展开来说还以的扩展出直接远程调试设备的效果,而且8266+340成本不过1

2022-04-19 13:16:21 3225

原创 一个8266崩溃

8266这种没法实时调试,只能通过打印错误信息来确认问题。当连接串口时,它如果崩溃会打印出错误可以参考这个博客ESP8266/ESP32 程序崩溃 (crash) 时的定位方法一:寄存器和调用栈 (backtrace)_乐鑫科技 Espressif的博客-CSDN博客_esp32 寄存器我这里也有一遇到一个崩溃,错误有可能不一致,感觉是堆栈被破坏,反复检查代码似乎没错误。注释了不少代码,仍然崩溃。最后发现居然是因为定义了返回类型,但是实际没有返回。。。。这个错误很低级,但也很常见,因为很多API设计的时候可

2022-03-21 14:55:33 522

原创 8266获取18B20温度

8266获取18B20温度,网络同步到巴法云。最后通过手机软件或天猫精灵就可以获取实时温度。这里我使用的8266是ESP01S。这个板子导出接口太少,如果大家有多操作需求最好买其它型号,在这里顺带说一下,8266不是一个具体的板子,它只是一个芯片型号。一般板子的区别也就是用的flash和导出的io口多少不一样,当然有的板子还自带了USB转串口芯片,这样直接使用数据线接电脑USB口便可下载程序更方便,如果是学习个人觉得这种串品芯片它更方便,flash也最好选大点的,以免有的例子跑不了。1、打开ardu

2022-02-18 20:00:36 1851 2

原创 使用Visual Studio Code开发Arduino

据说Visual Studio也有插件支持,但是我在vs2019里并未搜索到这个插件,可能停止开发了。使用Arduino开发没有提示,并且如果是它自己提供的类和函数不加头文件也不出错。没有自动提示,代码着色也有等于没有。也没有跳转定义的功能,这基本就是一个配置好了Arduino编译选项的文本编辑器。对于写代码的来说实在说不上友好。新手更是无从下手。翻源码?自己在目录下找是不是对于9102的时代还太落后了,况且新手可能都不知道它在哪个文件下,还得使用全文搜索。好在Visual Studio Code提

2022-02-17 10:43:40 1883

原创 ESP01S搭配arduino开发环境

esp8266是一个低成本的芯片,做物联网开发练习挻好的。硬件:某宝网购的es-01s+CH340下载器,当然直接使用电脑串口也是可以,但是现在的新电脑可能没有串口即使有也不太方便,不如USB的方便。...

2022-02-13 12:27:32 5225 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 480

原创 解码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 1821 1

原创 VCPKG使用入门

关于VCPKG编译和使用基本方法,其它文章已经说得很清楚。我也是依照各位大佬的文章学习了不少东西。下面说说我的使用发现。一、库和它支持库都是一直更新的,所以一般用一段时间就可以更新一次,以便获取新加入的库的支持。二、怎么知道它支持哪些库,查看 子目录下的 ports。这个每个文件夹就对应一个库。vcpkg install 加上这个目录的名字即可安装对应的库。三、部分库会提供一些选项提供一些编译和库特性。这个参数使用方法如下:vcpkg install 库名[选项]:版本选项库名,已经在上

2022-02-01 22:01:09 1738

原创 利用巴法云控制电脑

官方网站地址https://cloud.bemfa.com/上面地址有详细说明。如果自己有服务器也可以自己利用各种语音平台提供有SDK来接入。我自己只有一个天猫精灵,所以我这里接入的天猫精灵,没有服务器所以使用现成的。就是上面的巴法云,当然这种平台其实还是挻多的。我是随便选择的一个。对于巴法云来说接入很简单。第一步:注意一个巴法云帐号第二步:登陆以后找到控制台,这里有私钥。这个就是接入时的验证。第三步:建立一个主题,当然它不是你想建立什么就建立什么的,巴法云物联网平台默认接入天猫精灵控.

2022-01-31 20:49:37 4584 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 891

原创 SOUI中屏蔽右键菜单

目前SOUI里只有文本控件有右键菜单。但是一般来说可能都不需要它显示。即使要显示可能也需要美化一下之类的。下面就介绍如何处理它。第一步:在事件处理加上处理所有控件的右键事件。EVENT_MAP_BEGIN() 。。。 EVENT_HANDLER(EVT_CTXMENU, OnCtxMenu)EVENT_MAP_END()第二步:处理事件,将bCancel设置为TRUE。即可取消右键菜单。当然也可以通过ID或名称来部分禁用或启用。void OnCtxMenu(Even

2021-12-24 21:44:18 1254

原创 xlslib使用

xlslib是一个开源免费的xls生成库。不需要安装office。编译:在windows下编译是比较简单的,直接定位到目录xlslib\build下找对应VS版本,如果使用新版本可以使用旧版本的升级。当然些项目文件有些坑,编译不过的对应修改,还有就是配置不对,比如2012的目录还是2010导致后面找不到文件。这些都要仔细修改一下。此外它本身没有使用def也没有在头文件定义__declspec(dllexport)导出之类,所以只生成dll是没有lib文件的。它提供了一个createDLL的项目,大.

2021-12-24 11:57:24 1890 2

原创 zlib实现流式解压

#define CHUNK_SIZE 4096class CZipFileStream { // zlib支持. z_stream m_stream; int m_last_inflate_; // 解压缓冲. char m_zlib_buffer[CHUNK_SIZE]; // 输入的字节数. std::size_t m_zlib_buffer_size; std::ifstream& m_fs; bool m_auto_close_fs;public: /// &lt.

2021-09-17 19:40:26 971

esp32使用网页实现本地控制

使用本地访问ESP网页控制ESP。实现离线控制设备。

2023-11-07

使用迅雷下载开发板工具

使用迅雷下载开发板工具

2023-11-01

arduino 8266开发工具链

开发8266系列开发板的arduino工具,解决github无法下载的问题。此版本为3.0.2 下载好后放入C:\Users\【你的用户名】\AppData\Local\Arduino15\staging\packages。即可。

2022-02-13

keyboardtest.zip

键盘测试程序

2021-03-26

KeyboardTest.zip

键盘测试软件,UI基于SOUI。仅提供可执行文件。

2021-03-10

apktool.zip

最新apktool 2.5 已经修改了bat版本号,并且添加了一个install.bat直接安装,可以放在任意目录。注意:本软件安装需要先正确安装jre.并且在环境变量里已经正确设置了JAVA_HOME.如果提示错误请查看是否没有正确设置它。

2021-02-14

Img2icon.zip

SOUI 图片转换为HICON

2021-02-11

WpfApp1.zip

可以播放微信语音文件。些demo集天地灵气而生。是你播放微信语音不可多得的资源。C# WPF项目文件。拖动到界面即可播放。

2020-03-20

SOUI截图Demo

SOUI最新版本截图Demo by 2018-8-31更新。已基本完成截图所有功能

2018-08-31

基于WTL的DNS自动更新程序源码

基于WTL的DNS自动更新程序源码,WTL请自行配置,也可以直接使用其源码修改。

2017-11-28

Microsoft Visual Studio International Feature Pack 2.0

说明 Visual Studio International Feature Pack 2.0 是对 1.0 版本( 1.0 版的产品名是 Microsoft Visual Studio International Pack 1.0 SR1) 的扩展,包含一组控件和类库,设计用来帮助.NET开发人员创建国际化程序。 •Yomigana Framework 包含了类库和控件。 ◦类库:Yomigana 类库容许对串(string)类型加注 Yomigana,同时也支持对一般类型的注解功能,任何实现了IEnumerable接口的对象都可以被串类型和泛型的实例注解。为了简化复杂的注解字符串比较特设计了支持各种日文比较选项的比较类型。 ■通用的一些类,用泛型实现对一个可枚举的类型注音。 ■特殊目的的一些类,用以上泛型实现对一个字符串用某种类型中注音。 ■特殊目的的一些StringAnnotation 类,用以上泛型实现对一个字符串用字符串注音,包括解析和格式化功能。 ■一个比较器类,使用以上类实现比较字符串。 ■一个实现了 IEnumerable <string> 的数据结构,把一个字符串分成枚举的字符串段,并用 IEnumerator <string> 输出。 ◦控件: ■增强的Ajax/WPF/WinForm 文本框(TextBox)控件 用来根据用户的输入捕获读音。 ■一个增强的使用Ruby标签的ASP.NET Label控件。 •Chinese Text Alignment Class Library and TextBox Controls 包含支持简体中文文本对齐的WinForm 和 WPF 的TextBox控件, 以及供帮助开发人员很容易地按中文文本对齐显示字符串的一个类库。 •Chinese Auto Complete Class Library and TextBox Controls 包含支持感知简体中文和繁体中文输入法并自动完成的WinForm 和 WPF 的TextBox控件, 以及供开发人员很容易地向标准控件添加感知输入法并自动完成功能的一个类库。 •Korean Auto Complete Class Library and ComboBox Controls 包含支持感知韩语输入法并自动完成的WinForm 和 WPF 的ComboBox控件, 以及供开发人员很容易地向标准控件添加感知输入法并自动完成功能的一个类库。 •Numeric Formatting Class Library 包含支持五种语言的数字格式化成文字的类, 2.0 版支持格式化阿拉伯数字为阿拉伯文字。

2010-04-04

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除