大连网站设计案例办公oa系统大概多少钱

diannao/2026/1/19 17:06:16/文章来源:
大连网站设计案例,办公oa系统大概多少钱,2021国内新闻大事20条,淘宝网页制作教程视频继续蓝牙系列的研究。 在上篇博客#xff0c;通过阅读BTStack的源码#xff0c;大体了解了其框架#xff0c;对于任何一个BTStack的应用程序都有一个main函数#xff0c;这个main函数是统一的。这个main函数做了某些初始化之后#xff0c;最终会调用到应用程序提供的btst…继续蓝牙系列的研究。 在上篇博客通过阅读BTStack的源码大体了解了其框架对于任何一个BTStack的应用程序都有一个main函数这个main函数是统一的。这个main函数做了某些初始化之后最终会调用到应用程序提供的btstack_main在btstack_main里面首先做一些初始化然后调用hci_power_on函数去打开蓝牙模块。 一. 数据类型 运行BTStack程序时会生成hci_dump.pklg文件可以使用WireShark打开此文件截图如下 怎么理解上图中的数据呢 BTStack中涉及的数据有2类 1从硬件上获得的数据、发给硬件的数据 2为更新系统状态而虚构的数据 1. 跟硬件相关的数据有4类 ① 发送给蓝牙控制器的Command ② 从蓝牙控制器获得的Event蓝牙控制器收到Command后会回复Event ③ ACL数据这涉及收、发两个方向 ④ SCO数据这涉及收、发两个方向 注意ACL、SCO数据的含义以后再讲。 这4种数据类型用一个头部信息来表示参考bluetooth.h #define HCI_COMMAND_DATA_PACKET 0x01 #define HCI_ACL_DATA_PACKET       0x02 #define HCI_SCO_DATA_PACKET       0x03 #define HCI_EVENT_PACKET           0x04 但是在程序中单凭这4个数值无法分辨数据的流向比如ACL数据的类型是0x03我们单凭0x03无法知道这数据是发给硬件、还是从硬件读到。 为了便于调试BTStack在打印Log信息时把这些硬件数据类型转换为新数值 参考函数: hci_dump_packetlogger_setup_header 1. Command :  0x00 2. Event:       0x01 3. ACL out     0x02 4. ACL in      0x03 5. SCO out    0x08 6. SCO in     0x09 7. Log Message 0xfc 我们可以使用WireShark打开Log文件hci_dump.pklg时观察里面原始数据。 2. 为更新系统状态而虚构的数据 有很多种虚构的数据下面举几个例子 ① 提示状态发生了变化 在BTStack中可能有很多层对hci_stack-state感兴趣所以当hci_stack-state发生变化时可以使用hci_emit_state发送一个虚拟的Event数据包这会导致这些层的处理函数被调用。 BTStack中使用下面函数发送state信息 在WireShark中看到的原始数据为01 60 01 xx 第1个01表示Event60表示BTSTACK_EVENT_STATE第2个01表示数据长度为1, xx表示数据即state值。 ② 当一个数据包已经成功发给硬件之后我们要通知上层你可以继续发送数据给硬件了。这通过hci_emit_transport_packet_sent函数来实现 在WireShark中看到的原始数据为01 6e 00 第1个01表示Event6e表示HCI_EVENT_TRANSPORT_PACKET_SENT00表示后续数据长度为0。 二、状态机 我们常说初始化好蓝牙模块后就可以使用它了。 仔细琢磨这句话蓝牙模块至少有这2个状态 1. 初始化状态HCI_STATE_INITIALIZING 2. 工作状态HCI_STATE_WORKING 当然还有其他状态在代码中如下表示(hci_cmd.h) 在HCI_STATE_INITIALIZING状态下需要跟蓝牙模块多次交互才可以完成蓝牙模块的初始化。使用“子状态”来表示这些多次交互在代码中如下表示(hci.h) 举个例子子状态中有“HCI_INIT_SEND_RESET”和“HCI_INIT_W4_SEND_RESET” 1当子状态为HCI_INIT_SEND_RESET时 我们发送复位命令给蓝牙模块然后子状态变为HCI_INIT_W4_SEND_RESET它的意思是“wait for”等待收到复位命令的回复信息。 2收到该回复信息后子状态变为HCI_INIT_SEND_READ_LOCAL_VERSION_INFORMATION 于是继续给蓝牙模块发送“read loacal version”命令然后子状态变为HCI_INIT_W4_SEND_READ_LOCAL_VERSION_INFORMATION表示等待回复信息 如此继续直到子状态变为“HCI_INIT_DONE”初始化才结束蓝牙模块的“状态”才放为HCI_STATE_WORKING。 代码中有一个结构体 static hci_stack_t * hci_stack hci_stack-state表示“状态”hci_stack-substate表示“子状态”。 BTStack的代码有函数hci_run它就是根据hci_stack结构体中的这些状态、其他值来收发数据的。 注意hci.c中的hci_run是核心函数它根据hci_stack的状态进行不同的处理。 举例说明 1例子1hci_power_control(HCI_POWER_ON); hci_stack-state初始值为0即HCI_STATE_OFF 调用hci_power_transition_to_initializing后各状态值如下 // set up state machine hci_stack-num_cmd_packets 1; // assume that one cmd can be sent hci_stack-hci_packet_buffer_reserved 0; hci_stack-state HCI_STATE_INITIALIZING; hci_stack-substate HCI_INIT_SEND_RESET; 接着调用如下代码 // trigger next/first action hci_run(); hci_run函数中在hci_stack-state等于HCI_STATE_INITIALIZING时调用hci_initializing_run(); hci_initializing_run()函数内部会根据hci_stack-substate等于HCI_INIT_SEND_RESET而发出复位命令并令substate等于HCI_INIT_W4_SEND_RESET这表示等待收到该命令的回复信息。 在等待过程中程序休眠。 当收到数据时程序的主循环继续执行根据上节内容将会调用hci.c中的event_handler函数来处理 该函数有如下代码 // handle BT initialization if (hci_stack-state HCI_STATE_INITIALIZING){ hci_initializing_event_handler(packet, size); } …… hci_run( ); 模块的当前状态仍为HCI_STATE_INITIALIZING进而调用hci_initializing_event_handler(packet, size)。 hci_initializing_event_handler将调用hci_initializing_next_state()把subsate设置为HCI_INIT_SEND_READ_LOCAL_VERSION_INFORMATION。 后续的hci_run会根据这个substate发出READ_LOCAL_VERSION_INFORMATION的命令。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/90278.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业网站界面风格设计描述wordpress视频云解析

本文收录于专栏:精通AI实战千例专栏合集 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 每一个案例都附带关键代码,详细讲解供大家学习,希望可以帮到大家。正在不断更新中~ 一. 利用深度学习进行手势识别与控制 …

好的网站设计题目鞍山站

用VC修改注册表----让我们踏出第一步(适合初学者)转载自:www.csdn.net 开场白 你是不是非常期待通过自己的双手,写出一个有模有样的"系统修改(维护)工具软件"?我想答案应该是肯定的&…

威海外贸建站自豪的由wordpress驱动

场景:现有环境已经使用Java 8在运行业务,安装Jenkins后启动报错。 原因:因为Jenkins-2.396 依赖于Java 11 版本才能启动。 解决方法: yum 安装Java11 yum install java-11-openjdk-devel java-11-openjdk 或者二进制安装java11修…

广州市口碑好的网站制作排名wordpress微信服务号登录

必须要做的事情是: 考过GRE和TOEFL 准备推荐信 个人CV 联系导师一般就是发邮件 转载于:https://www.cnblogs.com/zhulinmails/p/5078695.html

外包网站建设优化搜狗排名

大家好,我是若川。持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列Rollu…

网站开发的业内人士更多标签的适用场景

写在前面 上一篇文章讲了如何构建业务大图,看到有评论说这和设定 OKR 差不多啊。希望其他读者不要被类似的看法带偏。业务大图是业务顶层设计,是战略目标、业务长期价值、业务维度拆分、业务组织设计、业务长期发展方向、关键业务战役、短期重点事项的综…

菏泽哪里做网站基于o2o的旅游网站建设

第三章 数据链路层 数据链路层在五层体系结构中处于第二层 链路层的任务是,把下面不可靠的物理层(信道)改成相对可靠的逻辑信道,把网络层提供的数据封装成数据帧交给物理层进行传递。 透明传输问题:不要因为封装成帧导…

宣威做网站建设的公司网站开发完后部署到网上

《工作分析与设计》作业 单选题 1、工作分析最初产生于( )的工业企业中。 A.英国 B.德国 C.美国 D.日本 2、( )是组织中最基本的活动单元。 A.任务 B. 部门 C.工作 D.岗位 3、同一职系中职责繁简、难易、轻重及任职条件充分相似的…

上海营销型网站建设平台昆明网站制作服务商

这是一篇对什么是C的The Rule of Three的错误更正和详细说明。阅读时间7分钟。难度⭐⭐⭐虽然上一篇文章的阅读量只有凄惨的两位数,但是怀着对小伙伴负责的目的,必须保证代码的正确性。这是大厨做技术自媒体的态度。前文最后一段代码是这样的&#xff1a…

php网站开发教程下载广州好的做网站公司

小猪的Android入门之路 Day 1 Android相关背景与开发环境的搭建 ------转载请注明出处:coder-pig 本节引言: 随着社会经济的发展,移动互联网的越来越热,手机APP开发显得格外火爆, 作为一名快要毕业的IT屌丝,自然要趟一趟这一浑水啦,当前主流的手机系统 IOS(苹果),Android(安卓)…

临海手机网站上海4a广告公司排名

Docker 入门使用说明 Docker 安装 Docker 官网:Docker Docker 安装说明:Docker 安装说明 这里由于 Docker 在实时更新,所以每次安装 Docker 用来导入 key 的链接可能会有变化,这里就参考官方的安装方法即可 Docker 常用命令说…

做网站有骗子平面设计找图网站

参考 一文学会如何做电商数据分析(附运营分析指标框架) 电子商务该如何做数据分析?如何数据分析入门(从各项指标表象进入) https://www.processon.com/outline/6589838c3129f1550cc69950 数据分析步骤 什么是数据分析…

自己怎么拍做美食视频网站百度域名值多少钱

摘要 如果要判断某一脚本是否在运行,可以通过psutil库获取所有进程的cmdline,并判断指定的文件名是否在cmdline中。 目录 1.psutil库简介 2.检查代码及说明 2.1检查思路 2.2异常捕获 2.3执行方法 1.psutil库简介 psutil 是一个跨平台(…

用dw做音乐网站wordpress中文二次元

1.原因:出现了特殊字符 SpringBoot 2.0.0 以上都采用内置tomcat8.0以上版本,而tomcat8.0以上版本遵从RFC规范添加了对Url的特殊字符的限制,url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~四个特殊字符以及保留字符( ! * ’ ( ) ; : &…

电子商务网站建设复习题哪有网站建设明细报价表

uni-app 微信小程序:启用组件按需注入 文章目录 uni-app 微信小程序:启用组件按需注入一、官方文档按需注入注意事项 二、HBuilder X 设置三、效果 一、官方文档 https://developers.weixin.qq.com/miniprogram/dev/framework/ability/lazyload.html 按…

城乡建设部网官方网站网站群建设招标

说一说vue钩子函数 钩子函数是Vue实例创建和销毁过程中自动执行的函数。按照组件生命周期的过程分为:挂载阶段 -> 更新阶段 -> 销毁阶段。 每个阶段对应的钩子函数分别为:挂载阶段(beforeCreate,created,befor…

上的网站app创建网站容易吗

转自:http://www.cnblogs.com/-Lei/archive/2012/09/04/2670942.html 下面是对socket操作的封装,因为在Linux下写中文到了windows里面会乱码,所以注释用英文来写,有空再查下解决方法吧 socket.h #ifndef SOCKET_H #define SOCKET_…

西安网站建设动力无限移动关闭流量自动续费

1 概述 单例模式就是保证一个类只有一个对象实例。 为了保证无法创建多余的对象实例,单例类中需要自己创建对象实例,并把自己的构造方法私有化以防止其他地方调用创建对象,且需要提供一个公共的方法给其他类来获取该单例类的实例。 同时单例…

吉林移动网站长沙微商城网站建设

关系数据库的几种设计范式介绍1、第一范式(1NF) 在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。 所谓…

手把手教你实现电商网站开发做静态网站接单

Mycat核心教程--ZooKeeper集群搭建 八、 ZooKeeper集群搭建8.1.ZooKeeper简介8.2.数据复制的好处8.3.Zookeeper设计目的8.4.zookeeper集群包括3种角色8.4.1.Leader角色8.4.2.Follower 角色8.4.3.Observer 角色 8.5.zookeeper集群工作流程8.6.zookeeper集群节点数量为奇数&#…