本文从功能需求的角度分析一般蓝牙BLE单芯片的应用框架(SDK Framework)的接口设计过程,并以TI CC2541为例说明BLE的应用开发方法. 一.应用框架(Framework) 我们熟知的Framework包括Android Framework.Linux QT.Windows MFC.应用框架抽象并封装实现了一般应用场景的需求,完成应用开发的80%,剩下的20%则以回调(callback)和接口的方式供应用开发人员调用以完成具体的需求. 一般Framework完成的工作包括:任务分…
Repository层设计的文章见:[http://www.cnblogs.com/yomho/p/3297042.html]   一.概要设计 上面Reposity 应该为 Repository 特此更正,也不打算作图更正了.   二.业务Server层 业务层Server是承Repository层,启UI层的重要层, UI层的数据和Repository层的数据传递必须经过它 业务层的扩展非常必要 所以采用IServer<TEntity>的设计方式 接口设计如下: namespace Yom…
经过了上篇IRepository和IRepository<T>的讨论[文章地址为:http://www.cnblogs.com/yomho/p/3296759.html] 我选择了IRepository作为我重构框架的仓储接口 一.接口定义   新的IRepository接口设计如下: namespace Yom.NFramework2_0 { public interface IRepository<TCompositeKey> where TCompositeKey : IEq…
本文将介绍在本人JOS中实现的简单图形界面应用程序接口,应用程序启动器,以及一些利用了图形界面的示例应用程序. 本文主要涉及以下部分: 内核/用户RW/RW调色板framebuffer共享区域 8bit颜色深度BMP格式图片读取与绘制 读BMP头总是出现问题?不合理的数据? 为啥读出来的图片颜色怪怪的!! 为啥是倒的,还有的运气不好出错了 如果是想绘制多个图片在一页上,调色板问题?? 如果读到一个32位色的图片咋办? 图形化界面数据结构,框架以及接口设计 利用图形化接口实现应用程序: 日历程序(…
背景 在深入BLE协议帧之前,我们先看一下BLE协议栈整体架构. 转载自:<深入浅出低功耗蓝牙(BLE)协议栈> 架构 如上图所述,要实现一个BLE应用,首先需要一个支持BLE射频的芯片,然后还需要提供一个与此芯片配套的BLE协议栈,最后在协议栈上开发自己的应用.可以看出BLE协议栈是连接芯片和应用的桥梁,是实现整个BLE应用的关键.那BLE协议栈具体包含哪些功能呢?简单来说,BLE协议栈主要用来对你的应用数据进行层层封包,以生成一个满足BLE协议的空中数据包,也就是说,把应用数据包裹在一系列…
背景 在学校内就用过蓝牙技术参加过比赛(并拿了奖):而蓝牙作为物联网中比较常见的协议,有必要进行深入的学习.此后的文章会以 ble(v4.0) 进行学习. 介绍 蓝牙技术最初由电信巨头爱立信公司于 1994 年创制,当时是作为 RS232 数据线的替代方案.蓝牙可连接多个设备,克服了数据同步的难题.随着蓝牙耳机.蓝牙鼠标.蓝牙音箱等蓝牙设备渐渐充斥着我们的生活,蓝牙早已不单纯是数据线的替代方案. 如今蓝牙由蓝牙技术联盟(Bluetooth Special Interest Group,简称 SI…
1 平台框架简介 微信蓝牙BLE由三个模块组成,分别是蓝牙设备.微信和第三方服务器,如下图: 蓝牙设备与微信之间的通信是通过蓝牙GATT协议进行. 微信与第三方服器之间的通信是通过网络http 接口进行. 调试流程: 2蓝牙BLE固件调试 2.1 需要的资料和工具 <微信蓝牙外设协议> 微信蓝牙协议调试工具AirSyncDebugger <微信蓝牙计步Profile协议> Nordic nRF51822接入教程芯片源代码v0.2 以上资料都可以在下面网址下载:http://iot.…
深入浅出低功耗蓝牙(BLE)协议栈 BLE协议栈为什么要分层?怎么理解蓝牙"连接"?如果蓝牙协议只有ATT没有GATT会发生什么? 协议栈框架 一般而言,我们把某个协议的实现代码称为协议栈(protocol stack),BLE协议栈就是实现低功耗蓝牙协议的代码,理解和掌握BLE协议是实现BLE协议栈的前提.在深入BLE协议栈各个组成部分之前,我们先看一下BLE协议栈整体架构. 如上图所述,要实现一个BLE应用,首先需要一个支持BLE射频的芯片,然后还需要提供一个与此芯片配套的BLE协…
一.蓝牙4.0简介 蓝牙4.0标准包含两个蓝牙标准,准确的说,是一个双模的标准,它包含传统蓝牙部分(也有称之为经典蓝牙Classic Bluetooth)和低功耗蓝牙部分(Bluetooth Low Energy).这两个部分适用于不同的应用或者应用条件.传统蓝牙是在之前的1.0.1.2,2.0+EDR,2.1+EDR,3.0+EDR等基础上发展和完善起来的,低功耗蓝牙是Nokia的Wibree标准上发展起来的. 传统蓝牙可以用与数据量比较大的传输,如语音,音乐,较高数据量传输等,低功耗蓝牙这样…
详解BLE连接建立过程https://www.cnblogs.com/iini/p/8972635.html 详解BLE 空中包格式—兼BLE Link layer协议解析https://www.cnblogs.com/iini/p/8977806.html 开发你的第一个BLE应用程序—Blinkyhttps://www.cnblogs.com/iini/p/8996025.html 手把手教你开发BLE数据透传应用程序.https://www.cnblogs.com/iini/p/90956…
ATT(Attribute Protocol)属性层是GATT和GAP的基础,它定义了BLE协议栈上层的数据结构和组织方式. 属性(Attribute)概念是ATT层的核心,ATT层定义了属性的内容,规定了访问属性的方法和权限.以编程的眼光来看,属性是一个数据结构,它包括了数据类型和数据值,就如同C语言结构体的概念,开发者可以设计独特的结构,来描述外部世界实体. 属性包括三种类型:服务项.特征值和描述符.三者之间存在树状包含关系,服务项包含一个或多个特征值,特征值包含一个或多个描述符,多个服务项…
蓝牙协议是通信协议的一种,一般而言,我们把某个协议的实现代码称为协议栈(protocol stack),BLE协议栈就是实现低功耗蓝牙协议的代码,理解和掌握BLE协议是实现BLE协议栈的前提.当前的蓝牙协议分为基础率/增强数据率(BR/EDR)和低耗能(LE)两种技术类型,本文将重点介绍BLE(Bluetooth Low Energy). 1.BLE低功耗蓝牙协议栈框架 要实现一个BLE应用,首先需要一个支持BLE射频的芯片,然后还需要提供一个与此芯片配套的BLE协议栈,最后在协议栈上开发自己的…
ESP32:蓝牙BLE控制M3508电机 先给各位朋友拜个年,祝大家新春快乐,事事顺利,身体健康啊! 还是熟悉的3508,内容概述: ESP32主控 蓝牙BLE通信 使用实时系统(FreeRTOS) 使用ESP32的TWAI总线(CAN) ESP32使用ESP-IDF v4.3开发,仓库地址放在文末. 目录 目录 ESP32:蓝牙BLE控制M3508电机 目录 ESP32的TWAI(CAN) 概览与对比 反馈的获取 蓝牙BLE GAP GATT ESP32 API 实际上手 总结 ESP32的T…
                              目       录 前言 前言 刚参加工作,使用过VB.VC开发软件,随着C#的崛起,听说是C++++,公司决定以后开发软件使用C#,凭借在书市5块钱买C#编程入门书籍,开始了职业生涯.开发C/S.B/S结构的软件是必不可少的,又涉及到Remoting.WebService.线程.异步等不知所云的技术.到现在为止,不敢妄称精通,却也使用熟练:研读Framework源代码,不敢说全部搞懂,却对技术提高有很大帮助. 身在传统行业,确实感觉到…
目       录 第十一章     调试器设计... 2 11.1         调试接口... 2 11.2         界面方式调试... 3 11.3         命令行方式调试... 5 11.4         小结... 6 第十一章      调试器设计 SuperIO 框架平台设计.开发完毕后,想把代码编译成程序集(DLL),二次开发都通过引用DLL实现接口.继承类库来实现驱动和插件的开发,SuperIO框架的代码不会轻易去改变.这是框架设计最终要达到的效果,但是在二…
[连载]<C#通讯(串口和网络)框架的设计与实现>- 0.前言 目       录 第一章           通讯框架介绍... 2 1.1           通讯的本质... 2 1.2           框架简介... 3 1.3           解决现实问题... 4 1.4           应用场景... 5 1.5           框架应用特点... 6 1.6           框架设计特点... 7 1.7           插件式应用框架... 9 1.8…
目       录 C#通讯(串口和网络)框架的设计与实现... 1 (SuperIO)- 框架的总体设计... 1 第二章           框架总体的设计... 2 2.1           宿主程序设计... 2 2.2           通讯机制设计... 7 2.2.1    串口通讯机制... 8 2.2.1.1   轮询模式... 9 2.2.2    网络通讯机制... 9 2.2.2.1   轮询模式... 9 2.2.2.2   并发模式... 10 2.2.2.3  …
目       录 第五章           串口和网络统一IO设计... 2 5.1           统一IO接口... 2 5.1.1    串口IO.. 4 5.1.2    网络IO.. 7 5.1.3    扩展应用... 12 5.2           IO管理器... 12 5.2.1    串口I O管理器... 13 5.2.2    网络IO管理器... 15 5.2.2.1   网络侦听... 16 5.2.2.2   连接远程服务器... 17 5.2.2.3  …
目       录 第三章           设备驱动的设计... 2 3.1           初始化设备... 4 3.2           运行设备接口设计... 4 3.3           虚拟设备接口设计... 6 3.4           协议驱动设计... 7 3.5           命令缓存设计... 17 3.6           数据持久化设计... 24 3.7           IO数据交互设计... 26 3.8           通讯状态设计..…
1.引言 本文主要讲解Mybatis的整体程序设计,理清楚框架的主要脉络.后面文章我们再详细讲解各个组件. 2.整体设计 2.1 总体流程 (1)加载配置并初始化       触发条件:加载配置文件 配置来源于两个地方,一处是配置文件,一处是Java代码的注解,将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置.执行的SQL语句.结果映射配置),存储在内存中. (2)接收调用请求       触发条件:调用Mybatis提供的API       传入参数:…
蓝牙BLE实用教程 Bluetooth BLE 欢迎使用 小书匠(xiaoshujiang)编辑器,您可以通过 设置 里的修改模板来改变新建文章的内容. 1.蓝牙BLE常见问答 Q: Smart Ready 和 Smart 以及传统蓝牙之间是什么关系? Q: 双模(dual-mode)和单模(single-mode)有什么区别? Q: There is a confusion between Server-Client vs Master-Slave vs Central-Peripheral.…
在Web API接口的开发过程中,我们可能会碰到各种各样的问题,我在前面两篇随笔<Web API应用架构在Winform混合框架中的应用(1)>.<Web API应用架构在Winform混合框架中的应用(2)--自定义异常结果的处理>也进行了总的介绍,在经过我的大量模块实践并成功运行后,总结了这篇随笔,希望对大家有所帮助. 1.在接口定义中确定MVC的GET或者POST方式 由于我们整个Web API平台是基于MVC的基础上进行的API开发,因此整个Web API的接口,在定义的时…
推荐一篇好的文章介绍java日志系统框架的设计的文章:http://soft.chinabyte.com/database/438/11321938.shtml 文章内容总结: 日志系统对跟踪调试.程序状态记录.数据恢复等功能有重要作用 日志系统一般作为服务进程或者系统调用存在,我们一般程序中使用系统调用 常用日志系统包括log4j的简单介绍 日志系统的系统架构 日志系统的信息分级 日志输出的设计 下面是全文的引用: 在Java领域,存在大量的日志组件,open-open收录了21个日志组件.日…
转载自:http://www.cnblogs.com/llzgzljl/p/3356108.html activiti5.13 框架 数据库设计说明书 1.结构设计 1.1.    逻辑结构设计 Activiti使用到的表都是ACT_开头的. ACT_RE_*: ’RE’表示repository(存储),RepositoryService接口所操作的表.带此前缀的表包含的是静态信息,如,流程定义,流程的资源(图片,规则等). ACT_RU_*: ‘RU’表示runtime,运行时表-Runtim…
从事web开发已经10年时间,近几年也一直从事微博应用产品的研发.从原生php写网站到使用cms bbs整合的大型站点,从使用各种流行的开源开发框架到成熟稳定的平台级框架下做研发.这期间对应用型web开发框架设计有一些自己的理解和见解,在这里和大家一起分享交流一下. 为了让大家对框架的各个模块有较深的理解,我对模块职能角色匹配了三国人物,在这里纯属为了增加大家的趣味性理解,如有不同见解可以在后面使劲得拍砖:). 一个较成熟的框架图如下: 三国人物和各个模块角色匹配如下: 一.单一入口(index…
一.关键概念: Generic Attribute Profile (GATT) 通过BLE连接,读写属性类小数据的Profile通用规范.现在所有的BLE应用Profile都是基于GATT的.   Attribute Protocol (ATT) GATT是基于ATT Protocol的.ATT针对BLE设备做了专门的优化,具体就是在传输过程中使用尽量少的数据.每个属性都有一个唯一的UUID,属性将以characteristics and services的形式传输.   Characteri…
原文网址:http://www.cnblogs.com/savagemorgan/p/3722657.html 一.关键概念: Generic Attribute Profile (GATT) 通过BLE连接,读写属性类小数据的Profile通用规范.现在所有的BLE应用Profile都是基于GATT的.   Attribute Protocol (ATT) GATT是基于ATT Protocol的.ATT针对BLE设备做了专门的优化,具体就是在传输过程中使用尽量少的数据.每个属性都有一个唯一的…
[Yom框架]漫谈个人框架的设计之[是IRepository还是IRepository<T>]? 前言                                                                                                                  对于仓储Repository的设计,其实很多人都很纠结,因为从广义来说,Repository有两种类型: IRepository和IRepository<T>…
前言: 我看了下shiro好像默认不支持复杂表达式的权限校验, 它需要开发者自己去做些功能扩展的工作. 针对这个问题, 同时也会为了弥补上一篇文章提到的支持复杂表示需求, 特地尝试写一下解决方法. 本文主要借助groovy脚本来实现复杂表达式的计算, 其思想是借鉴了Oval支持复杂表达式(groovy/javascript/ruby)的实现方式. 文章系列: 1. springmvc简单集成shiro  2. 类Shiro权限校验框架的设计和实现  3. 权限系统(RBAC)的数据模型设计 目标…