自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(114)
  • 资源 (6)
  • 收藏
  • 关注

原创 C++ 多线程错误整理随笔

解决办法:在线程创建过程中第二参数传递函数对象this。解决办法:使用std::ref将参数转化成引用类型对象。1. 线程函数参数未使用引用类型类型。2.线程创建时未传递类对象。

2024-02-28 10:10:29 236

原创 Camera2 request处理结果上报源码分析

在openCamera流程Camera3Device#initialize过程中,会将this对象作为参数传递给CameraProviderManager#openSession方法,而CameraProviderManager在查找到对应的CameraDevice后执行open操作创建session并传递callback参数,然后在创建camera session的过程中作为参数传递给CameraDeviceSession,最后赋值给ResultBatcher中的mCallback变量。

2024-02-20 17:54:33 627

原创 Camera2 setRepeatingRequest源码分析

在submitRequestsHelper方法中,首先会检查Camera3Device中流程配置状态是否正常,接着通过convertMetadataListToRequestListLocked方法初始化RequestList,然后再通过RequestThread#setRepeatingRequests进行camera stream命令配置,最后等待request配置完成。CaptureRequest创建完成后,会调用prepareHalRequests方法完成request进一步配置。

2024-02-20 17:52:49 706

原创 Camera2 createCaptureSession源码分析

3)检查需要创建的camera stream属性,调用Camera3Device#createStream完成camera stream的创建,保存camera stream id对应的outputConfiguration信息和创建的surface;在这个流程中,主要完成camera stream命令请求的重置,并根据应用传递的camera surface参数重新创建和配置camera stream(input和output)。3)根据1)中获取的结果,更新camera stream通路;

2024-02-20 17:50:47 727

原创 Camera2 openCamera源码分析

在CameraService中makeClient流程中,主要根据设备版本号和camera api的版本号来创建camera相关的设备。在CameraDeviceImpl的setRemoteDevice流程中,主要完成的是将底层binder对象封装成ICameraDeviceUserWrapper并注册死亡通知,然后通过执行器在线程中完成camera设备打开的状态回调,最终camera应用获取到打开的camera对象,后续可以通过这个camera对象来完成camera命令的调用。

2024-02-20 17:46:14 552

原创 Camera2 getCameraList源码分析

接下来分析CameraService中的addListener流程。在这个方法中,通过ServiceManager获取“media.camera”对应的binder对象用来初始化CameraService实例,然后调用CameraService的addListener接口,获取CameraService本地保存的Camera设备和状态信息,并通过onStatusChangedLocked接口更新mDeviceStatus保存的设备和状态,最后保存获取到的CameraService实例用于下次交互。

2024-02-20 17:41:55 748

原创 Android Camera相关类功能整理

camera3_callback_ops:Hal层回调结构体,Hal层处理结果通过当前类回调给Native,定义参考camera.cpp文件中的camera3_callback_ops定义。CameraDevice:CameraDevice Hal实现类,调用CameraModule/CameraDeviceSession和Hal层交互。CameraDeviceClientBase:CameraDeviceUser的实际实现类,向上对接CameraDevice。

2023-12-26 17:07:49 1095

原创 Android studio库移植到Android源码

1.Android studio中依赖的库格式通常为xxxx.xxxx.xxx:版本号。2.转换成Android源码中依赖的库格式为xxxx.xxxx_xxx。

2023-12-19 17:27:41 360

原创 Android源码下载流程

1.使用repo方式:

2023-12-10 09:48:45 600

原创 Android源码导入Jar总结

3.动态导入系统Jar包(暂无)2.静态导入系统Jar包。1.导入第三方Jar包。

2023-12-08 09:17:38 414

原创 Android 新增系统Apk/Service总结

1.在AndroidMainfest.xml配置系统权限。3. 添加编译模块,如apk_name,触发编译。2.在Android.bp文件中设置系统签名。

2023-12-06 11:17:23 556

原创 Android预加载Apk时注意事项

1.对于Apk中存在依赖的so库时,编写预加载库mk文件时需要将Apk解压的库链接过来,否则就会出现找不到so或者找到so库但是无法正常使用的情况。具体添加方法可以使用LOCAL_PREBUILT_JNI_LIBS属性来添加。

2023-11-29 19:21:55 526

原创 Android Camera Surface显示相关问题总结

2.调用ANativeWindow的dequeueBuffer出错,返回值为-19(NO_INIT),错误信息为“requestBuffer: BufferQueue has no connected producer”。3.执行添加/移除/添加同一Surface界面时,出现-22(BAD_VALUE),错误信息为“connect: already connected (cur=%d req=%d)”。1.默认创建的Preview Surface填充RGBA数据显示异常。

2023-11-27 10:37:41 923

原创 Android AIDL中使用Surface问题

实际上我们定义AIDL时需要使用的是Surface.aidl,但是执行Import android.view.Surface时导入的Surface.java类,因此需要在构建文件中包含相关路径。android.view.Surface中包含两个Surface类,一个是Surface.java,路径在源码。另一个是Surface.aidl,路径在源码/4.Android,bp/Android.mk文件设置。1.构建ITest.aidl文件。3.Surface源码分析。

2023-11-21 11:10:30 293

原创 Native/Hal层处理GraphicBuffer数据

2.Hal层使用GraphicBufferMapper处理GraphicBuffer对应的buffer_handle_t结构体。1.Native层从ANativeWindowBuffer中获取GraphicBuffer,然后再处理数据。

2023-10-25 09:56:58 160

原创 使用libyuv将UYVY格式转换成NV21和RGBA

1.UYVY转换成NV21。2.UYVY转换成RGBA。

2023-10-24 17:19:33 254

原创 Android mk文件拷贝第三方库到系统编译目录

@TOC#1.修改当前目录的Android.mk文件#2.新增mk文件并添加到系统编译文件欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Comm

2023-10-19 16:56:39 593

原创 UYVY422和RGBA8888格式转换

UYVY422格式转换RGBA8888。查看源文件和转换后的文件。1.使用ffmpeg命令行进行转换。2.C++方法进行格式转换。

2023-09-06 14:44:12 797

原创 Qt中槽函数触发两次的两种场景分析

在Qt开发中,有两种情况能够触发槽函数被触发两次,第一种情况是必现的,属于错误的写法,是指信号和槽关联两次;第二种情况是偶然出现的,是指对信号没有正确理解导致的。1.信号与槽关联两次 通常这种情况下发生在混合编程的情况下,即既使用了UI来进行布局,又使用来代码来关联信号,使得信号和槽关联两次。不妨以QPushButton中的button为例,通常在使用ui文件布局中自动生成的文件中会调用这样一句话:QMetaObject::connectSlotsByName();这样则代表...

2020-06-08 23:40:52 2517 2

原创 Qt中QLabel的背景图片设置问题

在Qt开发的过程中,经常会遇到设置Label的背景图片问题,通常可以有一下两种方法设置: 方法1:通过setScaleContents来设置(有时候会出现svg图片无法自适应label大小的问题)QPixmap pixmap("***.svg");label->setFixSize(80, 80);label->setPixmap(pixmap);label->setScaleContents(true); 方法2:通过QSvgRender来设置...

2020-06-06 18:03:54 3931 1

原创 Qt 编译错误 LINK2001:无法解析的外部符号 public: virtual struct QMetaObject const thiscall Widget::metaObject

对于Qt来说,signal和slots是Qt的核心,而对于信号来说,只有继承了QObject的类,并且在类中添加Q_OBJECT宏,信号才能有效地和槽建立连接。可是在Qt开发的前期,可能预测不到需要在类中添加信号(也就是说没有添加Q_OBJECT宏),但是在后期开发加上Q_OBJECT宏和对应的信号时,重新执行qmake和build流程后,却会出现错误,错误代号是LINK2001:无法解析的外部符号 "public: virtual struct QMetaObject const * __this...

2020-06-06 17:47:10 2636

原创 Qt控件大小自适应电脑分辨率问题

在最近的Qt工具开发工程中,发现一个问题:在自己电脑(分辨率是1366*768)上开发出来的工具,发布给同事(分辨率1920*1280)使用的过程中却出现了空间字体,边框等变形的问题,最后发现原因是因为在样式设计中,混合使用pt和px设置样式。 pt,全称是point,确切的来说它是一个专用的印刷单位“磅”,大小为1/72英寸,它是自然界的一个标准长度单位,属于绝对长度。 px,全称是pixel,确切的来说它不是自然界的长度单位,它可以很大,也可以很小。如果pixel很小,也就是...

2020-06-06 09:42:55 3943 2

原创 Qt中的QByteArray和自定义结构体之间的相互转换

在Qt项目开发中,经常会碰到自定义结构体和字符数组之间的转换问题,不妨假设结构体名字为custom_struct, 字符数组名字为array_data1. QByteArray转换为自定义结构体custom_struct *struct_data = reinterpret_cast<custom_struct *>(array_data.data());2. 自定义结构...

2020-05-07 22:22:16 8490 17

原创 QString转化为const char *出现乱码问题

对于Qt项目开发中,常常会遇到QString和const char*的转化问题,Qt也提供了响应的API接口,可以把QString转化为QByteArray,然后再转化为const char *,具体代码如下:QString string("helloWorld");const char *str = string.toLatin1().data(); 但是调用接口才发...

2020-04-11 10:08:57 2190 4

原创 Qt编译错误:无法解析的外部符号 __imp__CloseServiceHandle __imp__OpenSCManager

在项目开发的过程,我在Qt的pro工程文件中添加了一个静态库,编译工程后报了这个错误,一开始以为是静态库有问题,验证之后发现静态库是正确的,最后才发现CloseServiceHandle和openSCManager这几个API都保存在系统库Advapi这个系统库中,Advapi32是一个高级API应用程序接口服务库的一部分,包含的函数与对象安全性,注册表的操控以及事件日志有关,而我添加的这...

2020-04-11 09:39:42 1101

原创 Qt eventFilter实现信号与槽

对于Qt来说,信号与槽机制是其通信的一大亮点,但是Qt中也提供了其他的方法实现数据间的通信,如invokeMethod反射机制实现通信(https://blog.csdn.net/xx18030637774/article/details/105017306),另外Qt还提供了使用eventFilter来实现数据通信,具体实现如下:1)首先使用eventFilter来进行数据通信的对象...

2020-03-21 22:16:42 361

原创 Qt使用invokeMethod反射机制实现线程间的通信

对于Qt来说,UI线程是主线程,对于同一UI线程中对象的通信可以通过connect进行信号与槽关联来实现,但是当UI中对象A中的子线程B需要和另外UI对象C进行通信的时候,如果这个时候使用connect来进行通信的话,需要B对象和A对象进行关联将信号发送到主线程中,然后A对象和C对象再建立联系,这样处理起来会比较繁琐。Qt提供了invokeMethod反射机制,就可以实现任何线程中的数......

2020-03-21 21:52:23 3110 4

原创 Qt自定义数据类型注册meta-object system

在Qt项目开发过程中,有时候会碰到需要使用自定义数据类型作为信号或者槽的参数进行数据传输,由于信号或者槽中的参数必须为Qt meta-object 系统中能够识别的参数,但是自定义数据类型仅仅只是程序代码编写者自己知道,编译器在编译的过程中并不知道这种参数类型,但是Qt中提供了Q_DECLARE_METATYPE和qRegisterMetaType来实现具体的功能,具体实现如下:...

2020-03-21 20:54:52 779

原创 Qt自定义对话框中边框阴影实现

1. 对于Window系统或者Unix系统,QDialog有一个默认的边框(样式看起来有点复古),不过Qt可以提供自定义的边框设计,通过设置对话框相关属性:setWindowFlags(Qt::Dialog | Qt:: FramelessWindowHint); //设置不适应默认边框setAttribute(Qt::WA_TranslucentBackground); ...

2020-03-15 10:01:59 1710

原创 解决QTreeWidget中item无法整行同时显示相同颜色

对于QTreeWidget来说,继承自QTreeView,因此设计QTreeWidget中的样式设计,归根结底是对QTreeView的样式设计,而对于QTreeView中item样式设计,可以分为对branch和item设计,另外QT Style Sheet可以通过设置show-docoration-selected的值来提供精细化样式设计,具体样式代码如下:QTreeWidget {...

2020-03-15 09:14:57 1345

原创 Qt实现对json文件的解析

json是一种轻量级的数据结构,其内部的结构是一种键值对(key-value)的组合,最外层是{ }。key是带双引号的字符串常亮,用于获取和存储;value的值可以是bool变量,字符串常量,对象或数组(也是一个key-value的组合,以 [ 开头,以 ] 结尾),具体json格式介绍可参考博客:https://www.cnblogs.com/hwtblog/p/8483573....

2020-03-08 18:38:32 929

原创 Qt中的四种信号与槽的连接方式

1. UI界面右键点击控件,选择“转到槽“,系统会在cpp中自动添加这个组件对应的槽函数2.在Ui界面的下面 siga如l & slot editor栏中手动添加3.在代码中使用connect显示添加4. 使用on_对象名_事件名隐式连接,以QPushButton为例QPushButton *button = new QPushButton(this);bu...

2020-03-07 16:40:32 3239

原创 QQuickWidget + QML编程实现酷炫动态动画效果

1.具体需求:当Qt开发项目中需要实现简单的动态酷炫动画效果时,我们可以使用Qt中的QQuickWidget来实现,同时还可以使用QML编程来实现具体的动画效果,具体实现的效果如下所示:2.具体操作和实现效果图: 1)按下start按钮,音乐播放界面开始播放,然后出现旋转界面(界面的变化可以通过QML编程来具体实现); 2) 按下stop按钮,音乐播放界面停...

2020-03-07 16:12:24 3217 1

原创 QTextEdit实现图片和文本同行显示

1.开发环境:Qt 4.7.3 + MinGW 32bit (MSVC2015 32bit)2.实现大纲: 1)实现图片和文本在同一行显示,且能够设置字体大小和颜色 2)能够手动设置行的宽度和间距 3)设置字体样式,然后添加图片,字体样式重置成默认状态3.具体实现: 1)QTextEdit支持文本和图片显示,通过将图片...

2020-03-01 23:41:07 4106

原创 QT自定义MainWindow

1.开发环境:Qt 4.7.3 + MinGW 32bit (MSVC2015 32bit)2.实现大纲: 1)自定义边框,标题栏,工具栏,内容栏,状态栏(后面三个代码中没有实现实现) 2)重写鼠标事件来控制可以自由移动框体 3)样式文件使用qss实现,UI设计/数据/控制分离,方便二次开发3.具体实现: ...

2020-02-29 17:37:19 3351

原创 Qt使用qss文件管理stylesheet

内容总结简介:1)使用.qss后缀的文件来管理Qt中每个类的具体组件的stylesheet设置。2)在类中使用具体.qss文件中的设置。3)解决控件中多个相同组件不同设置或者同一个控制不同子控制或者伪状态的问题。1.新建后缀名为.qss的文件管理stylesheet设置1)右键单击工程名字,add new ->Qt->Qt resource file,将文件名字取为res.q...

2019-12-16 16:51:20 714

原创 linux/windows上STM32固件烧写工具的开发demo

1.主要实现功能:完成对HEX和DFU文件的烧写,显示烧写的进度等功能2.开发工具:Qt creator4.9.03.开发系统平台:windows系统和linux系统两套平台4.具体开发步骤:1)设计整体的界面,包括文件选择界面(dfu和hex文件),擦除和烧写环形进度界面,烧写成功界面2)由于在公司的电脑系统安装的是linux系统,因此首先考虑的linux平台的开发,移植dfu-uti...

2019-12-16 16:42:25 827 2

原创 使用touch更新文件的时间

#!/bin/bashfunction read_dir() { for file in 'ls $1' do if[-d $1"/"$file] then read_dir $1"/"$file else echo $1"/"$file touch $1"...

2019-10-16 22:05:50 340

原创 《C++ Primer 第五版》(第1~6章总结)

1.C++采用标准库文件iostream定义的两个对象来实现IO机制。2.代码注释应解释关键数据的变量含义和代码完成了什么功能,力求简洁易懂。3.正确理解初始化和赋值,声明和定义的含义?初始化是在定义对象的时候同时赋值,赋值是定义对象和赋值不在同一个时间段。声明是向编译器说明存在这样一个名字,定义是声明名字同时说明名字执行的功能。4.正确理解指针和引用的含义?指针是一个对象,引用是对象...

2019-05-25 15:54:33 230

原创 《C++ Primer 第五版》(第6.3~6.7节)——返回指向数组/函数的指针,函数重载,默认形参、inline函数和constexpr函数

1.返回指向数组/函数的指针 顾名思义,就是函数返回值为指向数组/函数的指针。 数组的性质:不能被拷贝,函数也不能返回数组。但可以返回数组指针/引用,声明一个返回数组指针的函数,有四种方式,一种是直接声明,格式为: int (*func(int i) [10]; //函数声明 ...

2019-05-23 21:07:59 293

quickwidget.7z

QQuickwidget的简单运用,使用QML编程结合Qt中的QQuickWidget实现酷炫的动态动画效果

2020-03-07

CustomMainWindow.7z

本内容提供使用者一个mainwindow的通用模板,可以满足大部分情况下的应用开发,其中代码之间的耦合度较低,可支持二次开发

2020-02-29

androidUsbSerialApp.7z

移植github库https://github.com/mik3y/usb-serial-for-android代码在android studio上实现android usb serial数据读写

2019-10-30

BLDC DTC Simulink仿真(采用形状函数得到电机反电动势)

仿真中采用形状函数得到电机的反电动势,进而计算电机转矩。直接转矩控制中采用转矩单环控制,没有采用电机模型和逆变器模型,采用的是电压和运动方程搭建电机模型,mosfet搭建逆变器模型,效果较好。

2019-04-26

BLDC DTC 滑模观测器Simulink仿真模型

该文件为BLDC DTC Simulink仿真模型,采用滑模观测器计算转矩,经验证模型可以运行!

2019-04-22

PMSM DTC Simulink仿真代码

在袁雷编辑所写的《现代永磁同步电机控制原理及MATLAB仿真》一书中,关于PMSM DTC模型中开关表和模型存在一些小小的问题,再此给出袁雷编辑所著2019新版《现代永磁同步电机控制原理及MATLAB仿真》内容,代码真实有效!

2019-04-22

空空如也

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

TA关注的人

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