自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 bluez inquiry 流程梳理--从代码层面理解bluez架构

从代码层面更好的去梳理bluez架构

2023-11-28 17:11:45 1243

原创 mgmt接口调用

在bluetoothd启动时,会进行初始化,在这里会获取mgmt句柄来进行和内核之间的通信。

2023-11-28 17:07:55 492

转载 bluetoothd的启动流程

梳理bluetoothd的启动流程,总结一下。

2023-11-28 17:06:27 194

原创 HFP协议分析

HFP 全称为Hands-Free Profile,通俗的说就是蓝牙电话协议,可以通过指定好的AT command来控制通话的接听、挂断、拒接等。

2023-10-26 11:00:11 192

原创 RK3568适配RTL8723 蓝牙驱动

RK3568适配RTL8723

2023-06-26 17:08:26 888

原创 Ubuntu 20.04编译安装BlueZ-5.6

BlueZ是Linux官方的蓝牙协议栈。可以通过BlueZ提供的接口,进行蓝牙相关的开发。

2023-05-12 16:26:02 2031

原创 蓝牙启动流程梳理

android bluetooth启动流程

2022-09-20 17:40:26 337

原创 BLE batch scan流程

由于公司手机经常出现android.bluetooth.cts.BluetoothLeScanTest#testBatchScan测试项fail的问题,对BatchScan流程进行分析。

2022-08-19 16:59:46 839

原创 主动扫描和被动扫描 connect request携带参数 LE Connection Update Parameter

主动扫描和被动扫描-connect request携带参数-LE Connection Update Parameter对于 passive scanning,它仅在 LL 上安静地接收空中飘过的各种 advertising PDUs,绝不会主动发送其他数据。因此 passive scanning 很隐蔽,不会暴露 scanner 的任何信息。对于 active scanning,它除了像 passive scanning 一样接收空中的 advertising PDUs,还会主动向 advertiser

2022-07-11 20:10:32 601

原创 BLE 扫描参数

(LL) 控制设备的射频状态,有五个设备状态:待机、广播、扫描、初始化和连接。广播 为广播数据包,而 扫描 则是监听广播。GAP通信中角色,中心设备(Central - 主机) 用来扫描和连接 外围设备(Peripheral - 从机)。大部分情况下外围设备通过广播自己来让中心设备发现自己,并建立 GATT 连接,从而进行更多的数据交换。也有些情况是不需要连接的,只要外设广播自...

2022-07-08 16:24:04 2264

原创 扫描设备响应流程

第一种模式:标准返回格式,Standard Inquiry Result event format第二种模式:查询结果返回带有RSSI格式,Inquiry Result format with RSSI第三种模式:查询结果带有RSSI的格式或者额外的查询结果格式,Inquiry Result with RSSI format or Extended Inquiry Result format。

2022-05-05 11:35:30 506

原创 demo grpc+http

protoc生成go代码#protoc -I [目标路径] [目标文件] --go_out=plugins=grpc:[编译至路径] protoc -I ./ ./user.proto --go_out=plugins=grpc:.#生成的go代码以 文件名.pb.go命名 如上面命令生成的就是user.pb.go protoc -I/usr/local/include -I. -I$GOPATH/src -Igoogleapis/ --go_out=plugins=grpc:. use

2020-10-28 16:27:17 229

转载 sscanf的用法

sscanf的用法一、有关描述[1]sscanf() 是从一个字符串中读进与指定格式相符的数据.scanf()是从终端输入读进与指定格式相符的数据1.sscanf()格式:int sscanf(const char *str, const char format, …) - str:为C 字符串,是函数检索数据的源; - format:为C 字符串,包含了以下各项中的一个或多个:空格字符、非空格字符 和 format 说明符。format 说明符形式为 [=%[][width][modifi

2020-08-31 10:48:42 6940 1

原创 googletest系列文章(0)安装运行

1.安装源代码在ubuntu的桌面上,右键选择打开终端,在终端中输入如下命令:$ sudo apt-get install libgtest-dev下载源码后,apt将会在目录/usr/src/生成gtest文件夹来存放源码.2. 编译源代码接着刚才的命令,我们继续再刚才打开的终端中输入:$ cd /usr/src/gtest来进入源码存放的地方,里面的文件很简单(使用ls查看),一个源码 文件夹,一个cmake文件夹和一个cmake的配置文件(CMakeLists.txt).继续输入命

2020-08-18 22:21:18 396

转载 googletest系列文章(二)用法

1 TEST()宏TEST() 宏的第一个参数是 Test Case 的名称,第二个参数是(隶属于第一个Test Case参数的)Test 的名称。一个测试的完整名称包括 Test Case 名称及 Test 的名称,不同 Test Case 的 Test 名称可以相同。googletest 根据 test case 对测试结果进行分组,所以一些相关的 test 应当放入同一个 test case 中。使用 TEST() 宏来编写一个测试程序,示例代码(gtest_test1.cpp)如下:#inc

2020-08-18 22:18:17 525

转载 googletest系列文章(一)googletest介绍

关于 Google Test(有时也称为gtest)的介绍,会分为两篇文章。本文主要介绍 google test 的相关知识,另外一篇则会演示一些示例程序。1 Why googletest此处引用 google test 在 GitHub 上的介绍:googletest helps you write better C++ tests.googletest is a testing framework developed by the Testing Technology team with Goo

2020-08-18 22:15:05 946

原创 shell脚本书写

shell笔记赋予shell脚本可执行权限chmod u+x hello.sh#!/bin/bash 必须加这个,后面才是脚本内容

2020-08-17 19:27:50 180

原创 git 操作

https://www.bootcss.com/p/git-guide/git操作

2020-07-29 18:30:41 203

原创 freemarker出现 Cannot resolve MVC View 'index'

使用freemarker出现 Cannot resolve MVC View ‘index’问题Cannot resolve MVC View ‘index’Inspection info:Checks if Spring MVC View references are resolved correctly.解决方法在application.properties中加上spring.fr...

2020-03-26 14:19:01 3138 2

原创 java连接Oracle数据库

java连接Oracle数据库首先需要ojdbc.jar的包,拖入项目中之后右击选择add buildpath之后建立JDBCUtil类,代码如下package com.oracle.jdbc.util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;pub...

2020-03-24 21:03:47 252

原创 Springboot yaml属性注入

spring boot yaml属性注入方式首先我们先建立一个spring boot 项目接下来在resources目录下新建一个application.yml的文件,并删去原来的application.properties配置文件。首先建立一个两个类,如下所示,我这里用了类嵌套的形式,等下展示yml的嵌套用法@Component@ConfigurationProperties("re...

2020-03-24 15:40:55 617

原创 Spring boot属性注入

spring boot 属性注入首先我们在spring boot项目里新建一个book类,添加属性和方public class Book { private Long id; private String name; private String author; public Long getId() { return id; ...

2020-03-24 11:37:36 202

原创 halo踩的坑 ThemePropertyMissingException 没有说明文件

halo踩的坑 ThemePropertyMissingExceptionThemePropertyMissingException C:\Users\Administrator.halo\templates\themes\anatole:没有说明文件解决方案,halo官网下载anatole主题,解压后重命名替换原来的anatole文件夹,再次运行即可...

2020-03-03 15:17:15 1675 4

原创 java与eclipse的安装及配置

我提供一个百度网盘下载链接,里面有我自己用的两个安装包,如果不用也可以自己去官网下载java-jdk1.10https://pan.baidu.com/s/1bCc9q_GY_xfPkfNWP_l4UQeclipsehttps://pan.baidu.com/s/1X7ZGwE1-5YtDj_0m8uA7qg下载解压之后,点击java安装包,会出现如下图指示,...

2020-01-12 12:10:05 1497 1

原创 输出char*的指针时为什么会发生段错误

#include <stdio.h>int main(){ char* p1 = 1; char* p2 = '1'; printf("p1 = %c\n", *p1); //段错误 printf("p2 = %c\n", *p2); //段错误 return 0;}这里这两个的用法表示的信息是 p1指针指...

2019-10-22 22:30:57 984

原创 void和void*的区别和用法

void用在函数前面表示无返回值,用在函数里面表示无参数void func(void){} //表示无返回值且无参数的func()函数void func(){} //注意这里的参数没有设置,表示接收任意个参数,所以当不需要参数时应该写为func(void)才准确void*表示无类型指针,这个指针的作用就是可以转换为任意类型的指针int* p;char* c;void* ...

2019-10-20 21:54:28 755

原创 用make实现的小型c/c++可复用编译器

目录结构源码实现.PHONY : all cleanDIR_BUILD := buildDIR_SRC := src #源代码文件夹名DIR_INC := inc #头文件文件夹名TYPE_INC := .hTYPE_SRC := .c #当为C++文件是改为.cppTYPE_OBJ := .oCC := gcc #编...

2019-10-01 20:17:24 246

原创 make中VPATH与vpath的区别

VPATHVPATH用于指定make如何查找文件用法VPATH := 文件夹名1,文件夹名2 #分隔符可用逗号,空格和分号具体代码实现OBJS := func.o main.oINC := inc #存放.c的文件夹SRC := src #存放.h的文件夹VPATH := $(INC) $(SRC)CFLAGS := -I $(INC)hello.ou...

2019-10-01 18:39:42 341

原创 make的模式替换

本学习笔记学习自狄泰软件学院

2019-09-14 15:57:08 1017

原创 make的简单使用

make的目标和依赖makefile的结构targets : prerequisites command //注意前面必须是‘\t’制表符,而不是空格makefile中的元素含义目标(targets)通常是需要生成的目标文件名make所需执行的命令名称依赖(prerequisities)当前目标所依赖的其他目标或文件或文件c...

2019-09-14 13:51:33 396

原创 智能指针的原理与模板应用

智能指针概念及工程意义智能指针实质上是一种能自动释放堆空间的类对象,能避免内存泄露的问题。实现原理通过函数重载技术对->和*进行重载操作,使得类对象的操作和指针相同。代码实现#ifndef SMARTPOINTER_H#define SMARTPOINTER_H/** *原理:堆栈空间的区别,当使用的指针生成对象时,在堆空间生成对象,需自己释放空间,而智能指针是通过栈区生成...

2019-03-26 13:01:57 237

原创 替换对话框的逻辑实现,基于前两篇查找对话框

查找对话框与替换对话框是一对同时出现的对话框组件,在本程序中,替换对话框继承自查找对话框,增加了替换功能。程序设计继承图如下:下面我们来看看查找对话框的设计图,来进一步理解查找替换对话框的设计思想接着我们来看查找替换对话框具体的排版方式(图一查找对话框,图二替换对话框)图-1图-2可以看出,替换对话框在查找替换框原有只是基础上增加了几个组件,也就是替换功能。排版方式并没有变化,接...

2019-03-18 23:09:10 338

原创 Qt中调色板QPalette的使用

QPalette对象QPalette对象中包含三个状态的颜色描述1.激活颜色组(Active): 组件获得焦点也就是选中时使用的夜色搭配方案。2.非激活颜色组(Inactive): 组件失去焦点时使用的颜色方案(比如选中其他程序)。3.失效颜色组(Disabled): 组件处于不可用状态使用的颜色方案。调色板调色板是存储组件颜色信息的数据结构,组件的外观所使用的颜色都是定义在调色板当...

2019-03-18 22:47:04 848

原创 查找对话框的逻辑实现

查找对话框的查找逻辑查找对话框的核心逻辑获取当前光标的位置并作为起始点向后(向前)查找目标第一次出现的位置通过目标位置以及目标长度在文本框中进行标记功能查找的实现QString类中提供了子串查找的相关函数indexOf(value, index)从指定位置向后查找子串的下标位置lastIndexOf(value, index)从指定位置向前查找子串的下标位置,向前查找ind...

2019-03-15 23:28:04 429

原创 Qt查找对话框的创建

查找对话框需要用到的头文件#include &lt;QWidget&gt;#include &lt;QGridLayout&gt;#include &lt;QHBoxLayout&gt;#include &lt;QLabel&gt;#include &lt;QLineEdit&gt;#include &lt;QGroupBox&gt;#include &lt;QPushButto...

2019-03-14 22:20:29 656

原创 linux文本文件内容替换

cat filename | tr [被替换内容] [替换内容] &gt;&gt; filename1mv filename1 filename cat用于查看文本文件(内容较少的): cat [选项] [文件] tr 用于替换文件内容 &gt;&gt;filename1 把替换过后的内容输出到filename1,之后再用剪切命令剪切到原文件,完成文件内容替换 c...

2019-01-07 23:11:15 9116

原创 make学习第三章——make的变量

赋值符号: 简单赋值(:=):只对当前语句有效,赋值改变的值不会传递递归赋值(=):一个地方值改变,所有与这个变量相关的值都会变条件赋值(?=):变量未定义,赋值有效,变量没有定义,赋值无效。追加赋值(+=):在原变量后面加上一个新的值,用空格隔开 注意:makefile变量的值都属于文本数据,makefile里面用$(变量)来表示变量的值 代码实例: ...

2018-12-22 11:35:09 525

原创 make学习第二篇——makefile语法及其简单应用

makefile伪目标:默认情况下makefile目标对应一个文件,声明为伪目标之后就不对应文件,即使有这一个文件,命令总会执行,和文件没有联系,和依赖关系也没联系。伪目标本质是make中特殊目标.PHONY的依赖。先声明后执行的语法顺序。 代码示例.PHONY : clean    //声明伪目标cleamclean :    rm *.o hello.out...

2018-12-22 11:32:22 246 1

原创 make学习第一篇

* make实质上是一个应用程序    * 用于解析源程序之间的依赖关系    * 根据依赖关系自动维护编译的工作    * 执行宿主操作系统的各种命令    * make命令        * make -f &lt;file&gt; &lt;目标&gt;,可简化为make &lt;目标&gt; 或者直接make * Makeflile是一个描述文件    * 定...

2018-12-22 11:30:12 204

原创 用QFileSystemWatcher实现简易的文件监控程序

QFileSystemWatcher类用于监控文件或目录的变化--当文件或目录发生变化时触发信号--通过信号与槽机制捕捉触发信号 代码如下://main.cpp#include &lt;QtCore/QCoreApplication&gt;#include "Watcher.h" int main(int argc, char *argv[]){    ...

2018-12-22 11:28:10 678

空空如也

空空如也

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

TA关注的人

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