as······asp0ssibleas as中间加比较级跟什么词

博客访问: 843170
博文数量: 389
博客积分: 2180
博客等级: 大尉
技术积分: 1740
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: 系统运维
1、var&a&=&Math.abs(-7);&//&求绝对值(这里是求-7的) & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &&2、function&myFunction(myNum)&{
阅读(1466) | 评论(1) | 转发(1) |
相关热门文章
给主人留下些什么吧!~~
一个好的习惯决定了一切!
请登录后评论。博客访问: 202949
博文数量: 177
博客积分: 0
博客等级: 民兵
技术积分: 1273
注册时间:
认证徽章:
我本仁慈,奈何苍天不许
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: 嵌入式
原文地址: 作者:
XXX:\Keil_v5\ARM\Pack\NordicSemiconductor\nRF_Examples\9.0.0\ble_central& 下有官方提供的主从连接的demo.
官方的demo中实现的是主机通过名字来判断
周围的设备是否是自己要寻找的设备,如果是就发起来接。 并且连接建立后可以继续保持侦听,一共可以连接8个设备。 连接上后,从机可以通过按键button1 来让主机的对应的led亮。这个例子是要在官方板pca10028上才可以看到现象的,其他的板子如果不兼容需要自己修改button和led的引脚。
这里就在这个 central的例子上做一个简单的侦听器。
官方demo里面的main函数很简单如下图所示
app_trace_init用来初始化打印模块,工程默认是关闭打印宏的,所以这个函数你右击找到的定义是空的。需要通过定义ENABLE_DEBUG_LOG_SUPPORT 来打开打印功能。
然后就是LED初始化,按键初始化(这个按键初始化是用来设置一个从深度睡眠中唤醒的引脚)。 协议栈初始化。
Client_handling_init初始化主要是用来注册自己想要找到的服务。比如你注册了服务A和对应的处理函数, 那么等主从机连接上后,并且服务发现完成后,就会判断发现的服务中是否有你之前注册的想要找的服务A有就会执行对应的回调处理函数。这个例子中我们没有用到,暂时不用关心。
Device_manager_init 用来初始化设备管理了,管理绑定信息之类的,这里也不需要用到
初始化完成后,调用 scan_start就可以进行广播了。
前面一部分是判断 是否有正在处理的flash访问操作。如果有就暂时不启动广播,没有才会启动广播。& 如果前面真的做了flash访问操作,并且没有完成岂不是不能广播了?
如果真有,广播会在flash操作完成后进行。相关代码如下
Flash操作完成首先会进入下面代码
在判断到flash访问完成后,清除正在访问flash的标志,并且调用启动广播函数scan_start。
scan_start最终调用如下协议栈API
uint32_t sd_ble_gap_scan_start
p_scan_params
找到m_scan_param参数定义
值的意义依次为:
0,表示只侦听广播,不主动发起scan_req请求。
0,表示侦听所有广播包,不做过滤。
NULL,没有白名单
扫描间隔,和扫描窗口。(比如1s的间隔和0.5s的窗口,那么每1s就会启动侦听,但是只侦听0.5s,只会休眠。等待下一个1s到来)
0,表示没有扫描超时,即设备会一值侦听除非主动关闭扫描
启动广播之后,设备就会不断侦听其他设备的广播。
当收到广播数据后,协议栈会上抛一个BLE_GAP_EVT_ADV_REPORT事件给上层,所以实现一个简单的侦听器,我们直接在事件处理中添加一个 BLE_GAP_EVT_ADV_REPORT事件的分支,并在该分支中提取收到的广播数据就可以了。
官方的例子里面已经有针对 BLE_GAP_EVT_ADV_REPORT这个事件的处理了。
代码中就是从广播数据中提取了 设备名 然后判断是不是自己要连的那个设备。
我们不需要动这些代码,直接在前面添加广播数据的打印就可以了。如图所示
打印结果如图所示
& & 关于adv data的数据怎么解析,参考
教程 ble广播数据解析。
广播数据结构体中还有一个scan_rsp 没有使用
这个为是用来区分 当前的广播数据是普通广播数据,还是收到的扫描响应数据(扫描者发送了scan_req,如果广播者可以响应则会回复scan_rsp)。
如果需要区分自己判断一下就行了
阅读(378) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。博客访问: 473246
博文数量: 106
博客积分: 0
博客等级: 民兵
技术积分: 3491
注册时间:
认证徽章:
不能不写?
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: 嵌入式
当手机和设备连接上后,设备端可以通过获取RSSI来
在一定程度上判断手机离设备的相对距离的远近。
获取函数很简单直接调用sd_ble_gap_rssi_get 接口函数就行了,传入连接句柄和buff就能获取到 最近一次连接事件中的 接收信号强度。
调用该函数之前需要先调用sd_ble_gap_rssi_start &函数,该函数有三个参数,第一个为连接句柄,第二个为 改变阈值, 第三个为忽略次数。
该函数有两种用法, 一种就是 将阈值参数设置为, 忽略次数参数设置为0。那么每次直接调用sd_ble_gap_rssi_get 函数获取最近一次连接事件中的RSSI值就行了。
如下图所示
另一种使用方式是, 设置第二个参数为一个有效的域值, 当rssi与上一次收到的rssi差值大于等于这个阈值时就会& 事件,同时也可设置第三个阈值来防抖动,即忽略次数,比如设置 阈值为5,忽略次数为3。如果前一次收到的rssi 为1 ,那么只有rssi差值大于等于5超过
三次,第四次才会产生 事件
下面实际用代码来实现两种方式。
第一种不使用阈值和事件的简单方式: 即直接启动,然后调用函数主动获取。
我们设置一个定时器,在设备连接上后,启动定时器开始周期获取RSSI.
在main 函数中 创建一个定时器
&&&&&& app_timer_create(&rssi_timer,
APP_TIMER_MODE_REPEATED, rssi_timeout_handler);
定时处理函数很简单,就是 获取RSSI
void rssi_timeout_handler(void *p_context){
&&&&&& int8_
&&&&&& sd_ble_gap_rssi_get(m_conn_handle,
&&&&&& printf("rssi:
%d\r\n",rssi);
然后在连接事件产生的地方添加 sd_ble_gap_rssi_start 并且启动 上面创建的定时器。
如下图所示
运行程序,当手机连接上设备后,就能看到串口周期打印RSSI值了,手机变动距离可以看到RSSI值的变化。
第二种方式: 使用阈值和事件方式
在on_ble_evt 事件处理函数中,添加当收到连接事件后rssi 测量启动代码,和BLE_GAP_EVT_RSSI_CHANGED事件处理代码
代码中我们定义rssi变化值大于5时才产生BLE_GAP_EVT_RSSI_CHANGED事件,然后在事件处理中打印rssi值
如下图所示:
运行程序查看输出打印可以发现 RSSI的差值都是大于等于5的
阅读(1040) | 评论(2) | 转发(1) |
相关热门文章
给主人留下些什么吧!~~
:请问楼主函数“sd_ble_gap_rssi_get()”在哪可以找到?
协议栈提供的api接口 |
请问楼主函数“sd_ble_gap_rssi_get()”在哪可以找到?
请登录后评论。SSI接口的绝对值角度编码器值的读出方法研究_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
SSI接口的绝对值角度编码器值的读出方法研究
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 keras 中间层输出 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信