第63篇Chrome扩展蓝牙开发(三) 及PHP研究

来源:互联网 发布:js 设置dialog button 编辑:程序博客网 时间:2024/05/22 15:14

一、php

1.1 乘法口诀表

程序如下:

结果如下:

隔列变色,修改程序如下:

运行结果如下:

1.2 break

break是退出循环,而continue是继续循环。

break可以定义退出几层循环,默认是退出一层循环。

看下面例子:

这个例子,没有进行break控制,$i输出1到11,$j输出1到6;记住:$i++,$j++都是先赋值后加1的。

下面用break退出1层循环,程序及运行结果如下:

可以看出,就是$j=2没输出,只是退出一层内循环($j循环),下面我们修改程序,让其退出两层循环,程序及运行结果如下:

可以看出,当$j==2时,不但内层$j循环退出了,而且外层$i循环也退出了,只输出$i=1;$j=1;

二、蓝牙chrome插件开发

2.1 通过接口,可以获得16个设备信息,分别为:address、name、deviceClass、vendorldSource、vendorld、productID、deviceId、type、paired、connected、connecting、connectable 、uuids、inquiryRssi、inquiryTxPower;

   console.log('qhz5.1->device.address:',device.address);

         console.log('qhz5.2->device.name:',device.name);

         console.log('qhz5.3->device.deviceClass:',device.deviceClass);

         console.log('qhz5.4->device.vendorldSource:',device.vendorldSource);

         console.log('qhz5.5->device.vendorld:',device.vendorld);

         console.log('qhz5.6->device.productID:',device.productID);

         console.log('qhz5.7->device.deviceId:',device.deviceId);

         console.log('qhz5.8->device.type:',device.type);

         console.log('qhz5.9->device.paired:',device.paired);

         console.log('qhz5.10->device.connected:',device.connected);

         console.log('qhz5.11->device.connecting:',device.connecting);

         console.log('qhz5.12->device.connectable:',device.connectable);

         console.log('qhz5.13->device.uuids:',device.uuids); 

         console.log('qhz5.14->device.inquiryRssi:',device.inquiryRssi);

         console.log('qhz5.15->device.inquiryTxPower:',device.inquiryTxPower); 

分别解析:

1)device.address:指设备的Mac地址。比如:00:07:CF:63:D8:EA

2)device.name:设备的名字,比如:ADP-601RS

3)device.deviceClass:整型,比如:9472,定义通过:

https://www.bluetooth.com/specifications/assigned-numbers/baseband

4)device.vendorldSource:设备的厂商标识来源.

5)device.vendorld:设备的厂商标识。

6)device.productId:设备的产品编号。

7)device.deviceId: 设备ID。

8)device.type:设备的类型,比如:peripheral(外围设备)

9)device.paired:返回布尔值,判断设备是否与系统匹配。

10)device.connected:返回布尔值,判断当前设备是否与系统相连接。

11)device.connecting:返回布尔值,判断当前设备是否与系统正在连接。

12)device.connectable:返回布尔值,判断当前设备是否是可连接的。

13)device.uuids:返回一个数组,设备支持的协议、配置文件和服务的 UUID。对于传统蓝牙设备来说,这一列表可以从 EIR数据和 SDP 表中获取。对于低功耗设备,可以从 AD GATT 主服务获取。对于双模式设备,可以从这两者获取。

14)device. inquiryRssi:返回一个整型,记录收到的信号长度在dBm中。这个字段仅在发现设备时可用,发现结束,将显示未定义。

15)device.inquiryTxPower:返回一个整型,来鉴定能量级别,这个字段仅对低能设备可用,它会包含在AD中,它仅在发现设备时可用。

2.2 发现一个中文官方文档

https://crxdoc-zh.appspot.com/apps/app_bluetooth

通过以上截图中的文字,要与蓝牙设备进行交流,需要更改清单文件,目前清单文件如下:

这种写法:“bluetooth“:{}只能用于访问适配器状态、发现附近的设备、获取设备的基本信息。要进行接收数据,需要修改清单文件,修改如下:

运行提示:无效的uuids,更换uuids为:

"00001124-0000-1000-8000-00805f9b34fb" 及"00001200-0000-1000-8000-00805f9b34fb"

报另一个错误如下:Bluetooth L2CAP protocal is not supported

首先解释下:L2CAP(英文名:Logical Link Control and Adaptation Protocol)也称为逻辑链路控制和适配协议,是蓝牙系统中的核心协议。

更换的uuids必须在manifest.json中,否则会提示权限禁止。

观察以上两个uuids可知,除前8位之外,都相同,而前8位中,前四位也相同,所以,manifest.json中可以这样写:

程序中可以这样写:

 

三、测试bug

3.1以下三个都是输出deviceClass但结果不同,一个9472,一个2500.

从以下程序可以看出,9427是十进制,而下面的程序加了.toString(16),即转化为了16进制,验证:16进制的2500转化为10进制为0*16*0+0*16+5*16*16+2*16*16*16=9472,验证完毕。

3.2 连接套接字失败

 提示:BluetoothL2CAP protocal is not supported

解决办法:暂时还没找到。

 

3.3 推荐两个蓝牙关键接口的中文官方文档

a) chrome.bluetooth 中文官方文档

https://crxdoc-zh.appspot.com/apps/bluetooth

b)bluetooth 中文官方文档

https://crxdoc-zh.appspot.com/apps/app_bluetooth

3.4 更改描扫时间

更改之后运行程序,发现已变为10s,代码所在程序名字为:main.js

3.5 当进行多行注释时,Dreamwear不行,可以用sublime打开进行注释。

2016年10月9日星期日


0 0
原创粉丝点击