自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(509)
  • 资源 (8)
  • 收藏
  • 关注

原创 嵌入式UI开发-lvgl+wsl2+vscode系列:8、控件(Widgets)(一)

这里将介绍一系列控件,了解后就可以开始基础的开发了。按钮在最开始的三大控件那里已经介绍过了。这里把原来的LV_FONT_MONTSERRAT_18改成LV_FONT_MONTSERRAT_14,lv_font_montserrat_18也改成lv_font_montserrat_14。模拟环境一些依赖库没有。可以在lv_conf.h中开启对应扩展:#define LV_USE_VECTOR_GRAPHIC 1不开启矢量图扩展会提示:

2024-07-01 10:45:29 647

原创 嵌入式UI开发-lvgl+wsl2+vscode系列:7、滚动(Scrolling)

lvgl的教程中将滚动单独放出来做了介绍,可能确实由于嵌入式设备显示屏较小,出现需要滚动的情况比较多,所以滚动也就显得比较重要。接下来我们了解并总结一下各式各样的控件。

2024-07-01 10:43:55 295

原创 嵌入式UI开发-lvgl+wsl2+vscode系列:6、布局(Layouts)

这节总结一下整体页面的布局方式,lvgl的布局方式比较少,目前只有flex和grid两大类布局,即弹性布局和网格布局,弹性布局一般就是指定相对位置,网格布局就是将整个页面划分为网格状,我们做其它的UI开发虽然可能有更多的方式,但是基本这两类的布局方式已经足够灵活,满足我们的页面布局要求。基本上布局就这些了,我们设计的页面也都根据网格或者弹性布局做组合和划分。

2024-07-01 10:42:47 503

原创 嵌入式UI开发-lvgl+wsl2+vscode系列:5、事件(Events)

这节进行事件的总结,通过事件回调方式将用户和ui的交互行为绑定组合起来。基本上前三种事件就足够大多数场景用了,嵌入式场景一般不会使用特别复杂的UI设计,但是也需要对绘制事件有一个印象,说不定有独特的设计会需要这种事件来支持,特别是实现一些复杂炫酷动画的时候。

2024-07-01 10:41:27 552

原创 嵌入式UI开发-lvgl+wsl2+vscode系列:4、动画(Animations)

接下来我们进行动画的总结。掌握动画能让交互更加吸引人,看起来更加炫酷,让用户加深印象,爱不释手。接下来我们了解下事件,基本上动画效果的切换以及前后台的交互都会借助于事件方式来处理。

2024-05-28 16:52:09 532

原创 嵌入式UI开发-lvgl+wsl2/macOS+vscode系列:3、style(样式)熟悉及MacOS模拟环境搭建及编译问题解决(‘SDL2/SDL.h‘ file not found)

之前的基础控件已经熟悉了,接下来我们进行样式的熟悉,并且尝试搭建macos的模拟开发环境。常见的样式就这些了,api使用比较简单,常用的一些需求也基本都满足了,接下来来学习总结一下动画。

2024-05-28 16:51:19 1072

原创 嵌入式UI开发-lvgl+wsl2+vscode系列:2、label(标签)+button(按钮)+slider(滑块)控件熟悉及其示例demo运行

上节我们主要了解了lvgl以及在Windows上搭建基于wsl2和vscode的lvgl模拟运行环境,其demo程序已经成功运行起来,接下来我们根据其框架将lvgl的一些常用控件demo和示例提取出来在模拟环境下都跑一跑,熟悉一下对应的接口和比较常用的label、button、slider三个控件。基本常用的几个基础控件就先总结到这里,接下来总结一下样式的相关使用。

2024-05-27 12:10:53 566

原创 嵌入式UI开发-lvgl+wsl2+vscode系列:1、资料收集以及Windows下WSL2模拟环境运行示例demo

UI界面开发我除了开发Qt比较多之外,就只针对Android的界面开发做过简单了解做了一些demo app,鉴于本人嵌入式Linux和mcu目前使用较多,所以目前来接触一些更加适合mcu、嵌入式Linux等使用的嵌入式ui框架,比如这里的lvgl,以此契机,总结部分lvgl的使用经验,便于以后回顾,也希望达到一个和大家分享交流的目的,只有这样我觉得才能进步的更快。LVGL(轻量级和通用图形库)是一个免费和开源的图形库,它提供了创建嵌入式GUI所需的一切,具有易于使用的图形元素,美丽的视觉效果和低内存占用。

2024-05-27 12:07:45 697

原创 STM32CubeMX+MDK通过I2S接口进行音频输入输出(全双工读写一个DMA回调)续-音质问题解决总结

后续音质问题解决了,目前测试下来48khz的双声道使用效果很好,由于比较重要,这里单独补充总结一下可能音质原因(包括杂音),这对于调试stm32的i2s录放音很有帮助,不管stm32作为i2s从模式还在作为i2s主模式都是有用的,上述总结的全双工DMA回调处理接口是不需要变的。1、是采样率匹配问题,采样率设置不对一定会导致杂音、快进慢放等问题;2、一个是单双声道问题,生成wav文件时如果声卡设备转换为双声道但是按照单声道处理就会有问题,数据量是双声道的,但是存储时处理了一半;

2024-04-29 22:43:54 1809

原创 电池管理协议SMBus/I2C在STM32CubeMX配置使用-读取SN8765电池组

目前有个电源组需要通过i2c进行读取,获取一些电池信息,采用SMBus协议进行读取,其可以看作i2c的子集,可以直接通过i2c的接口进行读写。SMBus建立在被广泛采用的I2C总线之上,并定义了OSI(开放系统互连)模型的链路和网络层。PMBus™使用SMBus作为其物理层,并添加了命令定义和其他新特性。大多数新特性都属于OSI模型的中到高层次。读取的电池组控制芯片为SN8765,属于定制的。

2024-04-29 22:39:48 1152 8

原创 STM32CubeMX+MDK通过I2S接口进行音频输入输出(全双工读写一个DMA回调)

目前有一个关于通过STM32F411CEUx的I2S总线接口控制SSS1700芯片进行音频输入输出的研究。SSS1700 是具有片上振荡器的 3S 高度集成的USB音频控制器芯片。SSS1700 功能支持96 KHz 24 位采样率,带外部音频编解码器(24 位/96KHz I2S 输入和输出)并具有内置立体声16/24位ADC、立体声16/24位DAC、耳机驱动、五段硬件均衡器、音频 PLL、USB 时钟振荡器和 USB FS 控制器加上 PHY。

2024-04-07 21:56:51 2302 3

原创 智能变电站协议系列-5、IEC 104协议细化解读(IEC 60870以及如何获取对应国标和行标)

通过之前整体性的协议分析,目前确定先基于IEC104做深入分析,来结合分析电网常见的业务,以此从协议侧关联深入到业务侧。在国内该标准也应用比较稳定和广泛了,所以研究104协议相关资料也会更全一些。步骤 3规定域元素的数据类型。数据类型为整数型、布尔型等。注 :一个域元素可由几种数据类型组成。在一个具体协议集中 建议只用一种数据类型定义数据单元标识符的各域元素。例:定义下列数据类型〔图 14)。

2024-04-07 21:50:24 1771

原创 stm32学习总结:6、Proteus8+STM32CubeMX+MDK仿真蜂鸣器及ADC读取电压(Proteus标签整理原理图)

接下来我们在上一节的基础上增加一个蜂鸣器,当按下开机按钮时蜂鸣器滴响一声,关机时蜂鸣器滴滴滴响三声,并且通过ADC方式读取一下电压值。于此同时,我们发现线路变的越来越复杂了,线再怎么改,原理图都显得比较杂乱,因此我们需要调整一下原理图,通过Proteus的标签功能整理一下原理图,让它显得整洁一些。接下来学习一下I2C总线,利用其控制一下显示屏,就可以做一些带屏的项目了。

2024-01-05 19:52:36 2307 4

原创 stm32学习总结:5、Proteus8+STM32CubeMX+MDK仿真串口并使用串口打印日志(注意重定向printf到串口打印的问题)

上一节模拟实现了串口收发打印,一般我们裸机打印日志通过串口或者JLINK工具等带的RTT打印,对于仿真,我们选择使用串口打印再合适不过了,这里总结一下重定向printf到串口打印日志的过程;期间,尝试了CLion+arm gcc的方式,发现stm32f10x的flash还是支撑不起来未裁剪的标准库,只要使用stdio相关标准库编译时就很容易flash超标。

2024-01-03 19:28:58 1762

原创 智能变电站协议系列-4、IEC 101、IEC 104协议(IEC 60870)

IEC 101和IEC 104对于智能变电站来说已经属于旧的协议了,其属于IEC 60870,但目前在电力自动化中仍然流行,对于IEC 61850和IEC 60870混用的场景也存在,目前官方赞助商似乎在推一些转换网关来将对应的协议做转换以此解决这种协议兼容问题,国内似乎也有在做这块的网关的企业。IEC 101为串行模式,而IEC 104走TCP/IP。对比一下IEC 60870相较于IEC 61850确实感觉会功能相对少一些,扩展性稍微差一些,但理解上相对简单一些。

2023-12-26 09:03:23 2933 4

原创 智能变电站协议系列-3、MMS协议示例(IEC61850)

接下来我们来分析一下MMS协议,该协议比较抽象,从定义上和理解上都比较抽象,只能在实际使用中去熟悉了,这里我们以操作文件的demo示例来理解和分析整个协议。MMS协议的分析暂时就到这里了,接下来我们再去分析下IEC 101和IEC 104协议。

2023-12-25 19:26:11 2701 6

原创 智能变电站协议系列-2、SV/SMV协议示例(IEC61850)以及5G专网下的电力方案分析

之前我们对IEC61850协议有了整体的了解,对一些概念有了一定的认识,并针对GOOSE协议做了进一步的尝试和了解,接下里我们针对SV协议也做进一步的了解和尝试,并基于libiec61850对SV协议做一些分析,比如运行其demo来进行SV协议抓包分析等。(Sampled Measured Value采样测量值,也称为SV (Sampled Value)或SMV,一种用于实时传输数字采样信息的通信服务,所以有的时候也可以搜索SMV)接下来我们再分析下MMS协议。

2023-12-24 20:02:59 1993

原创 智能变电站协议系列-1、GOOSE、SV、MMS协议简介及GOOSE示例运行问题(IEC61850)

目前有一个新的研究,关于电网使用的GOOSE、SV、MMS协议,并使用相关库来做一下测试。由于goose、sv、mms等都属于IEC61850,因此,需要对IEC61850相关内容有一些了解,都是国际标准,属于电气自动化的一部分,对于自动化或者电气相关领域有接触的专业应该或多或少有一些了解。IEC61850目标是用于变电站自动化、分布式能源、水力和天然气发电厂、风力发电厂、电动汽车作为分布式能源等领域,目前似乎在变电站自动化方面的推广和使用更加广泛。

2023-12-22 19:02:32 7059 5

原创 stm32学习总结:4、Proteus8+STM32CubeMX+MDK仿真串口收发

前面我们已经实现点灯,下面就做一些数据交互的内容,先搞一下串口让数据可以用串口打印以及通过虚拟终端显示出来(就相当于有个显示屏可以显示数据了)。这样子基于串口通信的STM32应用开发基本就入门了,串口通信由于比较常见,所以这里先简要总结了一下,后续的内容就可以通过串口来打印日志了,STM32F103有两组串口,一组我们可以用来打印日志,一组用来和外部通信做交互。接下来我们接着去总结一下按键、蜂鸣器、定时器、看门狗等内容,再考虑继续往下总结I2C、ADC、SPI等接口来读取一些传感器信息以及读写flash等。

2023-12-20 19:11:12 2317

原创 推荐一个免费虚拟串口工具HHD Software Virtual Serial Port Tools

对于软件开发串口协议相关内容时虚拟串口是很方便进行串口模拟的工具,结合串口工具上位机就可以先根据协议自行模拟调试了,同理对于下位机也是一样,虚拟串口可以提高上位机和下位机开发者的自测联调效率;此外,在某些时候仿真设备也需要这样的虚拟串口工具来仿真串口调试,后续我们进行Proteus仿真就会用到。

2023-12-18 19:08:00 5211 6

原创 protobuf、protobuf-c、protobuf-c-rpc在Linux(Ubuntu18.04)编译安装及交叉编译arm\aarch64版本

如下介绍c语言的protobuf+rpc的开源库protobuf-c和protobuf-c-rpc,其适合于嵌入式分布式场景,利用protobuf协议的可扩展性比较方便进行协议兼容升级,利用rpc接口的网络易用性,不需要再从头到尾实现一遍socket通信、通信接口设计,只需要实现C函数接口设计和开发以及利用proto设计好交互协议即可,并且具备一定的跨编程语言交互特性,每个具备联网能力的嵌入式设备都可作为rpc客户端和服务端,可以快速进行嵌入式设备业务组网开发(此外,还有一些适合于stm32的protobu

2023-12-13 20:01:38 727

原创 stm32学习总结:3、Proteus8+STM32CubeMX+MDK很有搞头

前阵子用codesys的软PLC方案来仿真测试了PLC,以此研究了一阵子PLC和profinet,感触颇深,这种仿真软件还真是挺好用的,硬件软件化真的很方便。最近stm32上有个使用 ADAU1361进行录放音的研究,正好找到了仿真stm32的方案:Proteus,这个时候我发现这个不就是我们大学仿真C51的时候用的软件吗,时间太长不搞这块的开发感觉都快忘的差不多了,实际软件开发做多了感觉这类电子控制类的开发也变得有意思了,PLC、C51搞的有点返祖的感觉了。

2023-12-11 19:49:29 1704

原创 使用Go快速开发TCP公共服务

之前使用的公共TCP服务无法使用了,想了一下整个实现原理不是很复杂,就利用Go快速开发了一个,利用公网服务器可以快速部署起来。如上为demo演示,作为小工具够用了,实际项目可以做更多的扩展,比如多用户展示及使用,历史测试数据存储及展示,端口可配置,hex数据收发展示,通信方式扩展等等。

2023-12-06 19:53:52 291

原创 Windows下使用AndroidStudio及CMake编译Android可执行程序或静态库动态库

之前在Android Studio中编写NDK C/C++相关代码,通过Gradle和CMake编译成动态库,然后再利用JNI的方式进行调用。现在需要编译Android C/C++可执行程序,通过运行程序做一些小实验,而这些小实验都是纯C/C++编写,不包含任何Java代码,那么是否可以利用现成的环境进行开发呢?

2023-12-05 20:01:23 1760

原创 CoDeSys系列-4、基于Ubuntu的codesys运行时扩展包搭建Profinet主从环境

我们之前已经在windows机上运行起了基于codesys的软PLC,并且其作为主站和跑在虚拟机上的p-net从站进行了简单的IO操作,但是跑在Windows上的运行时PLC会影响网卡,而不跑运行时的则由于实时性不足导致一些超时的问题,因此我们这里在Ubuntu18.04上更换实时Linux内核,然后利用codesys的for Linux扩展包将该实时的Ubuntu18.04改造运行软PLC作为主站来和树莓派从站做profinet交互,也熟悉一下更换Linux实时内核的过程。

2023-11-04 11:36:14 2489 11

原创 CoDeSys系列-3、Windows运行时软PLC主站和p-net从站IO设备组网测试

前面CODESY下载安装并熟悉了,p-net搭建从站也已经跑在虚拟机树莓派上了,我们只需要快速搭建一个profinet主站来和从站进行交互即可,这里我们直接用Windows下带的软PLC搭建profinet主站并和p-net的demo从站程序进行IO交互。评估是否进行Windows下的运行时PLC前先看一下注意事项,Windows下安装配置会需要修改boot及防火墙等,可能会影响Windows电脑的正常使用,所以创建项目时的设备可以选择非RTE的。

2023-10-25 19:58:31 3052 10

原创 CoDeSys系列-2、CoDeSys安装及Windows下创建项目测试

目前CODESYS在国内也有很多城市有办事处,且有国内的网站,所以通过国内的官网下载相关软件会方便很多,对应的一些扩展包也比较方便下载,一些安装教程对应的论坛也比较详细,对于入门CODESYS很有帮助,国内的一些芯片的推广也可以按照这种模式来,官网、IDE、文档、论坛、高速下载网址都是推广芯片很重要的一环。

2023-10-21 18:26:56 1798

原创 CoDeSys系列-1、CoDeSys了解及资料收集

这里对CoDeSys的总结主要是用于Profinet的组网,因此相对较浅,但收集的资料也支持深入的学习和研究CodeSys及PLC编程,CodeSys对于学习研究PLC很有帮助。

2023-10-21 18:07:35 537

原创 工业自动化控制通信协议Profinet系列-3、CoDeSys软PLC方案介绍

之前在树莓派desktop上已经成功编译运行测试程序,但是还需要主站去和其交互才能看到比较完整的profinet交互过程,因此这里我们需要搭建运行profinet主站,并和之前的从站程序交互运行,这里一番查找后最终确认先使用软PLC方案来搭建主站验证,等到实际场景可以买PLC硬件设备做进一步验证。

2023-10-21 18:06:18 780

原创 工业自动化控制通信协议Profinet系列-2、编译p-net在虚拟机树莓派上运行示例

之前已经对Profinet做了一些基础的了解,接下来进行简单的Profinet组网,并利用开源库p-net的示例程序和plc基于profinet网络进行交互,以此抓包分析整个profinet协议交互过程,便于我们进一步开发基于profinet协议的应用。

2023-10-19 19:56:44 1882 22

原创 工业自动化控制通信协议Profinet系列-1、了解Profinet协议及收集资料

最近需要对profinet协议进行测试,获取对应协议的网络环境信息,比如带宽、时延等信息,在了解了一些资料后发现profinet主要使用在工业自动化领域,最终牵扯到一些PLC的内容,这让我回忆起大学学习PLC的一些场景,禁不住有一些感慨,一晃已经差不多有10年光景了,不由有些恍惚,时间过的真快。言归正传,已经记不得当时用的哪家的PLC了,只依稀记得使用梯形图编程的,做了可视化的界面控制电机,课程时间大概是一个学期,学完就做了一些实验项目,在毕业后就基本再没有接触过PLC的项目。

2023-10-19 19:46:33 1977

原创 ipv6进行ping6测试报错connect: Invalid argument解决方法

ens33,增加%,然后添加网卡,比如我这里是ens33,也可能是eth0,wlan0等。

2023-10-18 21:00:00 836

原创 C调用Objective-C的类和方法

最近有一个C提供回调接口调用Objective-c接口来传递数据的需求,研究了很久,最终通过bing的AI对话查到了需要的内容,这里记录一下,算是给基于C的IOS开发开了一个头。在Objective-C中,你可以创建一个全局的类方法,并在C语言中通过Objective-C运行时(Runtime)id为对象类型,int、double、long等类型也支持,字符串等类型也需要通过id对象来调用。另外,Objective-C的代码可以直接调用C的函数,直接引入C的头文件,不需要额外改动。

2023-10-17 21:00:00 1596

原创 Qt利用QTime实现sleep效果分时调用串口下发报文解决串口下发给下位机后产生的粘包问题

当有多包数据需要连续下发给下位机时,比如下载数据等,下发后下位机发现数据包粘在一起了,如果没有设计包尾且包长度不固定,那么就会出现粘包问题,即一包数据实际包含了一部分下一包的数据。1:增加包头包尾,下位机一个字节一个字节去读,然后根据包头和包尾去组成完整的一包,否则不做处理;2:上位机发包间隔增加一定的延时,下位机在一段时间内读取到的所有数据当成完整的一包;

2023-09-04 19:17:47 910 2

原创 CLion远程Linux开发环境搭建及找不到Linux头文件的解决方法

在某些时候我们的交叉编译环境已经部署在服务器上,本地资源不足,编译环境就算搭建起来也编译比较慢,这种情况下我们仍可以在CLion上配置远程开发并添加一键编译和调试功能,此外,大多数情况下我们都是在Windows下开发Linux下的程序,因此Windows下的CLion配置关联Linux虚拟机或Linux编译机器进行编译调试是很有必要的。如果程序在远程服务器直接运行的话则可以直接远程gdb调试,如果程序还要部署在设备上调试的话则单独配置远程gdb在编译完成之后。

2023-09-04 18:38:49 1556

原创 浏览器播放rtsp视频流:4、jsmpeg+go实现局域网下的rtsp视频流web端播放

之前的rtsp转webrtc的方案存在如下缺陷:1.只支持h264;2.受限于webrtc的理解难度以及搭建turn/stun的p2p服务等问题,对于局域网下的业务需求来说有些杀猪用牛刀的意思;3.ios不支持webrtc。基于以上原因,我又找到了一些其它的方案进行了测试,目前看jsmpeg的方案更加适合我们的需求,而且普通压缩大小为135kb,gzip方式压缩后仅仅42kb,在嵌入式场景下也可以使用。

2022-10-31 20:38:12 3141 5

原创 Windows下安装及卸载程序可用的添加和删除当前路径到环境变量的bat脚本以及如何和inno setup结合使用的实例

这样打包的exe程序在安装后就可以将当前路径添加到环境变量了,卸载时还可以自动删除环境变量中的路径以及删除对应的文件。

2022-10-30 21:07:25 2674

原创 CLion常用插件及c文件模板配置

其实我们还可以将这些模版开发成插件上传到插件市场(Java就可以开发),这些留给以后折腾吧,感兴趣的可以自行先研究一下。

2022-10-01 11:18:52 8151 1

原创 Go实战学习笔记-1.3流程控制

这里还是再总结一下流程控制,和其它语言相比做了一些优化,比如相比c增加了迭代器类型的for循环,switch针对c中容易出问题的地方做了一些修改,避免出现缺少break时存在的常见问题,此外,和Java类似也存在跳出循环和多层嵌套的方法,C中容易造成使用不当的goto也同样支持,在解决比较麻烦的go错误处理时goto有奇效,但基本上还是不太建议使用。......

2022-08-29 20:35:43 379

原创 Go实战学习笔记-1.2基础语法:变量、常量、包、指针等

这里总结一下Go中变量、常量、包、函数、指针、输入输出及基础数据类型转换的基础用法,便于回顾。虽然官方不建议使用其它语言类比着学习Go,但是学习语言的过程中抽象通用的部分学习起来会快一些。常量、变量、指针可以当成简化的C来学习,基本上快捷声明和赋值的方式比较新颖,但是也更加简单了,看到指针也不会那么头疼害怕内存泄漏了,包的概念和Java、python等包的概念和使用基本类似,只是为了区分标准库的包和非标的包引入了weburl方式的包导入,这点也不是很难理解和使用。

2022-08-25 10:11:16 507

go读取Linux下cpu占用率、cpu温度、内存占用率及磁盘占用率

go读取Linux下cpu占用率、cpu温度、内存占用率及磁盘占用率

2021-08-27

tableSqlQueryModelTableviewTest.zip

Qt下tableview和sqlqueryModel集合使用示例

2021-04-03

g711测试音频

g711测试音频。

2019-03-25

ps格式测试文件

ps封包格式的测试音频文件。

2019-03-25

测试音视频及播放器大放送

包括h265、h264、aac、mp4等一系列文件及potPlayer等播放器

2019-03-25

SourceInsight4插件.c和.h跳转

sourceInsight的进行.c和.h的跳转插件,配置快捷键后一键跳转,还是很好用的。

2019-01-22

SourceInsight4配置

SourceInsight4配置文件,背景等均为护眼颜色,很好用,欢迎大家尝试。。。。。。。。。。。

2019-01-18

空空如也

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

TA关注的人

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