一、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日星期日