自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

caicai6b6

精简的语言,写一段易懂易操作的代码

  • 博客(34)
  • 收藏
  • 关注

原创 LE audio 规范概述

https://www.bluetooth.com/learn-about-bluetooth/recent-enhancements/le-audio/le-audio-specifications/https://www.bluetooth.com/learn-about-bluetooth/recent-enhancements/le-audio/le-audio-specifications/SIG 官网 关于LE Audio 的专栏Spec 学习总览LE Audio 下一代蓝牙语音 !

2021-10-10 22:08:32 898 1

原创 LE Audio 蓝牙协议规范(3)-EA,PA详解

LE Audio 蓝牙协议规范LE Audio 蓝牙协议规范(1)-LE 状态LE Audio 蓝牙协议规范(2)-物理信道及PDULE Audio 蓝牙协议规范(3)-EA,PA详解文章目录LE Audio 蓝牙协议规范前言弄清楚三个问题EAPAhost adv 数据发送PA 理解periodic advertising train总结前言文章写到第三篇,都是一些基础内容梳理,不断向LE Audio Spec靠近,只为对LE 感兴趣的同学,能够整体了解LE Aduio规范,如果有LE 基

2021-10-03 14:35:00 3185 2

原创 LE Audio 蓝牙协议规范(2)--物理信道及PDU

系列文章目录xxxxx提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言1.advertising2.periodic3.isochronous4.data总结前言上篇提到了ble的几种状态,是从宏观层面对ble 有个初步理解。这章主要看一下数据发送的载体 物理信道及其所用的数据包格式如spec所规定,le在2.4GHz频段定义了40个RF信道,这些信道又重新抽象到了四种LE 物理信道。分别是advertising, periodic, isochr

2021-09-28 23:43:59 4106

原创 LE Audio 蓝牙协议规范(1)--LE 状态

>在思考,通过怎么样的角度能够深入浅出的弄清楚LE audio spec相关的内容。不断总结,不断完善自己的知识结构体系按照自己的理解,整理一下ble audio 相关的知识点# 系列文章目录LE Audio 蓝牙协议规范(1)--ble状态前言 状态是从宏观角度了解ble,spec将状态分为划分为7种状态,这些状态又可以分属于非连接状态和连接状态 。不同状态下,链路层都会有对应的PDU格式定义,不同的PDU对应不同的物理信道,这些知识点可以继续衍生首先了解这些状态之间的切换,对

2021-09-28 00:10:37 3961

原创 python 爬全网基金信息(2)

改进版本1,根据基金公司检索相关信息,减少遍历的基金代码数量当前一共有62家基金公司,演示代码选取了前五大基金公司演示功能运行结果:# coding=utf-8import requestsimport timeimport execjsimport xlwtimport xlrdimport reDATA = ["代码","名称","期数","规模(亿)","单位净值","近三天涨幅","近七天涨幅","近一月收益率","近三月收益率"]LEN = len(DATA)def

2021-02-27 10:57:39 218

原创 python 爬全网基金信息(1)

最近基金比较火,写一个全网基金抓取脚本,过滤查找全网所有基金历史数据,可以根据自己需求修改基金有风险,投资需谨慎!当前实现功能:从天天基金网抓取原始数据,根据基金6位数代码,提取基金名称,规模,单位净值,近一周增幅等等信息基金遍历逻辑,根据6位数代码,从000000-999999全遍历过滤资金规模小于0.5亿过滤债基过滤小于7期历史数据的新基金将搜索结果保存到excel当前一直缺陷:遍历逻辑太粗犷,耗时太长,只适合小规模遍历,并不实用抓取信息和写到excel 单进程,不支持断点续

2021-02-21 13:29:33 260

原创 python 自动识别并连接串口

这个属于我项目中一个函数,跟大家分享一下我的思路及最终实现在编写串口通信工具中,需要实现一个函数,自动找到对应com 口,并且连接该com口,保证后续通信正常作为初始化过程的一部分。思路在win 设备管理器中,经常会出现多个com 口,但并不是每个com 口都是目标设备所链接的。尝试打开每个com 口,输入enter 按键, 正确的com 口,会有ack log 返回,表明通信 正常否则,没有任何log 返回,则判断为非目标设备所连接的com 口。实现尝试去打开所有com 口,然后发送en

2020-05-26 22:24:55 6609 6

原创 HOGP/HID 设备 新增自定义按键

起因经常听客户反馈, 怎么这个按键不响应?? 怎么RC 部分按键 scan code不正确?netflix key 怎么不能唤醒app? 怎么新增一个特殊的功能按键?或者遇到一个更加鲜活的情形,某天,你手上有一个非常nice的蓝牙遥控器,你想好好利用起来,用来控制你的平台,该如何实现呢?HID 设备的映射信息针对 一个陌生的设备,可能你无法提前获得到该设备设计规范,但是仍有几种方法可以在使用期间获得到映射信息(report description)HOGP/HID设备需要遵守 USB-HID

2020-05-26 22:08:09 2452

原创 BQB PTS dongle不识别问题

BQB PTS dongle从SIG官渠道购买初次使用需要安装dongle 驱动,未安装驱动Generic Bluetooth Radio会有黄色感叹号驱动路径手动安装成功之后重启PTS会检测到dongle address

2020-05-11 18:18:55 1940

原创 pyserial 实现串口log过滤

经常遇到下位机平台大量输出log,导致快速刷屏,看不清自己所关注的信息写了一个脚本,可以设置white list 和black list,根据关键字,实现过滤log,清爽屏幕的功能代码#!/usr/bin/python# -*-coding: utf-8 -*-import serialimport serial.tools.list_portsimport threadingi...

2020-05-04 10:12:34 973 2

原创 python 虚拟串口通信

准备着手写一个串口工具,当前编程环境,并没有办法接好下位机平台,需要模拟出一个串口,不断发送信息,方便调试串口工具。1.win 下载虚拟串口https://sourceforge.net/projects/com0com/files/latest/download下载安装完成后,会在设备管理器中新增两个com。这两个串口是互相接通的,一个com 可以当作上位机,一个com可以当作下位机...

2020-05-02 12:13:46 7193 4

原创 ble -蓝牙地址及RPA详解

蓝牙地址public address一般写在 固件中,不能改变的地址BR/EDR也同样使用该地址在log 中为BD_ADDR参数random address另一种类型的地址,可以分为两种,static address和private addressrandom static address 一般是开机自动产生,有host通过set random address传递给contro...

2020-04-14 23:36:11 8132 6

原创 ble pairing空中包分析

ble 抓取空中包的工具有两种,这里使用更加广泛的ellisys 工具(同时支持ble 和br/edr蓝牙分析)为例,说明ble配对过程在空中包的体现流程。平常工作中,对细致的知识点可能并没有做过全面的统计,由于负责产品线单一,常常仅关注某一个部分的内容,说到底还是蓝牙协议知识不够扎实。Advertise 广播包在配对之初,service 端需要从host 配置广播包参数,将连接必要的...

2020-04-13 15:00:42 2495

原创 ble - GATT 协议详解

GATT 是ble 的另一个 基本协议,总结了gatt 一些定义,最后通过一份hci log,说明一下GATT在实际应用中如何运作欢迎有兴趣的朋友留言,有描述不清或者有错误的地方,也欢迎指正GATT OverViewGatt 是在ATT基础上的封装,定义了一些服务发现的框架。整体框架图如上, GATT DataBase主要分为三个部分,service,include,ch...

2020-04-13 00:33:37 12981

原创 ble- ATT profile详解

闲话熟视无睹的东西,更需要更加深入的研究,ATT作为最基本的ble常识,很多时候并没有深刻的总结专精自己熟悉的领域,其次了解更多周边领域,要足够体现自己的专业性,而不是浮于表面沟通的前提,是要思路清晰,明白对方的意图,有待加强从数据格式了解ATTOpcode总体分为6种大类型的Opcoderequest / responseindicate / confirmc...

2020-04-11 20:16:20 2632

原创 Ble - mesh浅析(未完善)

灵魂拷问:你懂mesh吗?先从一张拓扑结构图说起数据传递有两种方式ADV 和GATT, 属于bear layer低功耗模式低功耗节点跟友元节点成对出现low power node:主动向friend node 发生msg reuqestfriend node: 存储和转发mesh 网络中的到low power node的信息relay node 通过adv,向周围设备...

2020-04-10 00:19:42 530

原创 Ble - SMP 协议详解

SMP overview0x0006 LE SMP(secure manager protocol)主要是使用在LE 配对过程中, key的产生及分发, 故名思意安全管理。解决蓝牙通信过程中的安全问题。在固定信道0x0006中,传输数据。SMP 命令格式如果支持LE security connect , L2CAP MTU = 65否则 L2CAP MTU = 23所有的交互从...

2020-04-09 16:13:41 10999

原创 ble mesh-Proxy protocol详解(2)

举栗子ble mesh 中存在一类代理节点(proxy node),其作用是通过GATT,将接受到的数据,发送给mesh 网络中,不具备gatt 能力的设备。例如:天猫精灵需要wifi 配网,需要获取到wifi 网络的账号和密码,这个时候需要用手机app ,通过bt gatt 连接到天猫精灵,发送数据,然后如果mesh 网络中,其他节点需要这个账号和密码信息,天猫精灵可以通过adv转发这些信息...

2020-02-20 12:45:37 2565

原创 ble mesh-provisioning组网流程详解(1)

组网过程(provisioning)是ble 核心流程,先从宏观上了解整个组网过程,再深入到协议的算法,个人认为更加容易接受一些组网流程图总结为五个步骤:beaconing 信标邀请入网,交换设备能力信息(support feature,io cap)交换public key加密,分发组网数据初步印象,整个过程跟ble smp 流程非常相似。Beaconning一个全新的设...

2020-02-18 16:55:00 4286

原创 BLE-hid report descriptor解析

redsc文件redsc 文件,反应的是按键的映射信息,获取这个文件大致有三个途径hid 设备供应商提供相关设计规范文件,vendor spec通过hci log 提取(本文以这个为例)通过kernel log 提前(路径:sys/kernel/debug/hid/[device id]/redsc), add device 阶段,bt 写到kernel 的,设备连接成功后,肯定会生成这...

2020-02-07 13:54:19 3119 1

原创 GAP层协议浅析

overview为什么这篇博文GAP协议不加一个ble修饰?因为这个协议太重要了,有必要从蓝牙整体面详细整理一下相关东西。记得之前一个前辈,新人培训时,用到了三个词总结什么是GAP?“发现,连接,安全” 太深刻。引用core spec一张图,无论br/edr何时还是ble 都绕不开GAP协议。DiscoverabiltyConnectionSecurity...

2020-02-03 13:54:14 2808

原创 BLE-L2CAP层协议浅析

架构L2CAP = LOGICAL LINK CONTROL AND ADAPTATION PROTOCOL SPECIFICATIONhost 最底层协议,主要作用是逻辑信道的分配,ble和传统蓝牙都需要实现

2020-02-02 14:28:03 916 3

原创 BLE大纲

LOW ENERGY CORE CONFIGURATION在武汉疫情期间,闲来无事,根据最近更新Bluetooth core spec v5.2,整理一下ble相关知识Host part:LayerRequired FeaturesL2CAP ([Vol 3] Part A)If the GAP Peripheral or Central role is support...

2020-02-02 13:09:06 490

原创 padding与margin区别

android布局文件中经常出现这两个属性,做一个小结。先从单词含义区别: margin [ˈmɑ:dʒɪn] n. 边缘,范围; 极限; 利润,盈余; (版心外) 的空白; padding [ˈpædɪŋ] n. 衬垫; 衬料; 赘语; 废话;属性区别: padding属性:用于设置控件内容相对控件边缘的边距; margin属性:控件边缘相对父控件的边距(父控件控制); 来张

2017-07-27 20:43:29 362

原创 Android用户界面_输入控件

通用输入控件:Button、EditText、AutoCompleteTextView、CheckBox、RadioGroup 、RadioButton、ToggleButton、Spinner 、TimePicker、DatePicker**Button** 继承自类 android.widget.TextView - setClickable(boolean clickable)

2017-07-14 16:47:37 516

原创 Android用户界面_布局

推荐:在XML 中声明布局。如果您对在运行时实例化 View 对象布局相关原理:当您编译应用时,每个 XML 布局文件都会编译到一个 View 资源中。每个视图对象和 ViewGroup 对象都支持各自的各类 XML 属性。任何视图对象都可能具有关联的整型 ID,此 ID 用于在结构树中对 View 对象进行唯一标识。可以在代码中动态设置布局参数,位置,内边距,尺寸,外边距。常见布局:1.

2017-07-14 16:12:59 424

原创 Android用户界面_UI概述

Android 应用中的所有用户界面元素都是使用 View 和 ViewGroup 对象构建而成。View 对象用于在屏幕上绘制可供用户交互的内容。ViewGroup 对象用于储存其他 View(和 ViewGroup)对象,以便定义界面的布局。Android 提供了一系列 View 和 ViewGroup 子类,可为您提供常用输入控件(如按钮和文本字段)和各种布局模式(如线性布局或相对布局)

2017-07-14 15:06:14 632

原创 java回调初步理解_(七)

Class A实现接口CallBack callback——背景1 class A中包含一个class B的引用b ——背景2 class B有一个参数为callback的方法f(CallBack callback) ——背景3 A的对象a调用B的方法 f(CallBack callback) ——A类调用B类的某个方法 C 然后b就可以在f(CallBack callback)方法中调用A

2017-07-08 20:18:06 200

原创 Android_View类_基础(六)

public class View implements Drawable.Callback, KeyEvent.Callback, AccessibilityEventSource {……} 学习自定义控件时遇到View问题,以上是View官方定义。

2017-07-08 20:09:26 274

原创 Android自定义控件_基础(五)

Android开发中难免遇到需要自定义控件的需求,有些是产品的要求在Android标准控件库中没有满足要求的,有些是开发过程中没有代码的可复用,自己定义的。Android已经提供了一系列基础控件和xml属性来帮助你创建自定义控件。1. View的子类View在Android是最基础的几个控件之一, 所有的控件均继承自View,你也可以直接继承View也可以继承其他的控件比如ImageView等。

2017-07-08 19:49:37 258

原创 Android组件service_基础(四)

直接上图 两种启动方式startService()和bindService(),前者的特点是“单带不参团”,后者是“不求同生,但求同死”。 具体用法稍后再详细阐述。

2017-06-28 09:39:40 170

原创 Android组件activity_基础(三)

Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。很清晰的一张图,体现了activity的各个流程

2017-06-24 13:54:19 186

转载 java多线程_基础(二)

一,Java线程具有五中基本状态:新建状态(New):当线程对象对创建后,即进入了新建状态就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不是说执行了t.start()此线程立即就会执行;运行状态(Running):当CPU开始调度处于就绪状态的线程时,此时线程才

2017-06-22 21:13:27 164

原创 Android蓝牙初体验(一)

Android蓝牙初体验项目需要使用android上位机与HC-04蓝牙模块通信,现总结一下app接受蓝牙模块信号的几个核心要点。1. private static String address=”98:D3:37:90:B8:83”;// MAC掩码,类似与电脑的固定ip,每个蓝牙模块有个固定的mac,可以通过手机蓝牙设置查看到 2. private static final String

2017-06-21 11:09:04 363

空空如也

空空如也

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

TA关注的人

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