123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522 |
- var bleCode = require("./JLZJConfig.js");
- var onfire = require("./onfire.js");
- var dataTool = require("./dataTool.js");
- var successCode = bleCode.bleSuccessCode();
- var errorCode = bleCode.bleErrorCode();
- var serviceId = "FEE7";
- var charact_serviceId = serviceId;
- var deviceId;
- var serviceId;
- var characticId;
- var dev;
- export function scan_StartScanBleDevice(nameFlag, callBack) {
- var devs = [];
- initBluetoothAdapte(function(res) {
- if (res.code == bleCode.bleSuccessCode()) {
- wx.startBluetoothDevicesDiscovery({
- services: ["FEE7"],
- success: function(res) {
- wx.onBluetoothDeviceFound(function(res) {
- var scandevices = res.devices;
- for (var i = 0; i < scandevices.length; i++) {
- var scan_dev = scandevices[i];
- if (nameFlag != null) {
- if (scan_dev.name.indexOf(nameFlag) != -1) {
- devs.push(scan_dev)
- }
- } else {
- if (scan_dev.name.length > 0) {
- devs.push(scan_dev)
- }
- }
- }
- if (devs.length > 0) {
- callBack.call(this, {
- code: successCode,
- msg: "搜索设备成功",
- data: devs
- })
- }
- })
- },
- fail: function(err) {
- var msg = "";
- if (err) {
- msg = bluetoothErrMsg(err.errCode)
- }
- callBack.call(this, {
- code: bleCode.bleErrorCode(),
- msg: msg,
- data: null
- })
- }
- })
- } else {
- callBack.call(this, res)
- }
- })
- };
- export function scan_stopScanBleDevice(callBack) {
- wx.stopBluetoothDevicesDiscovery({
- success: function(res) {
- callBack.call(this, {
- code: successCode,
- msg: "停止扫描成功",
- data: null
- })
- },
- fail: function(err) {
- var msg = "";
- if (err) {
- msg = bluetoothErrMsg(err.errCode)
- }
- callBack.call(this, {
- code: errorCode,
- msg: msg,
- data: null
- })
- }
- })
- };
-
- function initBluetoothAdapte(callBack) {
- wx.openBluetoothAdapter({
- success: function(res) {
- wx.getBluetoothAdapterState({
- success: function(res) {
- if (res.available == true && res.discovering == false) {
- callBack.call(this, {
- code: successCode,
- msg: "初始化蓝牙模块成功",
- data: null
- })
- }
- if (res.available == false) {
- callBack.call(this, {
- code: errorCode,
- msg: "蓝牙适配器不可用",
- data: null
- })
- }
- if (res.discovering == true) {
- callBack.call(this, {
- code: errorCode,
- msg: "正在搜索设备",
- data: null
- })
- }
- },
- fail: function(err) {
- var msg = "";
- if (err) {
- msg = bluetoothErrMsg(err.errCode)
- }
- callBack.call(this, {
- code: errorCode,
- msg: msg,
- data: null
- })
- }
- })
- },
- fail: function(err) {
- var msg = "";
- if (err) {
- msg = bluetoothErrMsg(err.errCode)
- }
- callBack.call(this, {
- code: errorCode,
- msg: msg,
- data: null
- })
- }
- })
- }
-
- function closeBluetoothAdapte(callBack) {
- wx.getBluetoothAdapterState({
- success: function(res) {
- wx.closeBluetoothAdapter({
- success: function(res) {
- callBack.call(this, {
- code: successCode,
- msg: "关闭蓝牙模块成功",
- data: null
- })
- },
- fail: function(err) {
- callBack.call(this, {
- code: errorCode,
- msg: err.errmsg,
- data: null
- })
- }
- })
- },
- fail: function(err) {
- var msg = "";
- if (err) {
- msg = bluetoothErrMsg(err.errCode)
- }
- callBack.call(this, {
- code: errorCode,
- msg: msg,
- data: null
- })
- }
- })
- }
- export function connectDevice(device, callBack) {
- dev = device;
- getConnectedDevice(function(res) {
- if (res.code == bleCode.bleSuccessCode()) {
- wxConnectDevice(function(res) {
- callBack.call(this, res)
- })
- } else {
- callBack.call(this, res)
- }
- })
- };
- export function disConnectDevice(callBack) {
- wxDisConnectDevice(function(res) {
- callBack.call(this, res)
- })
- };
- export function onDeviceConnectStateChange(callBack) {
- wx.onBLEConnectionStateChange(function(res) {
- if (res.connected == true) {
- callBack.call(this, {
- code: bleCode.successCode(),
- data: res.deviceId,
- msg: "设备连接"
- })
- } else {
- callBack.call(this, {
- code: bleCode.ondisConnect(),
- data: res.deviceId,
- msg: "设备断开"
- })
- }
- })
- };
-
- function wxConnectDevice(callBack) {
- console.log("连接设备对象:" + JSON.stringify(dev));
- wx.createBLEConnection({
- deviceId: dev.deviceId,
- success: function(res) {
- callBack.call(this, {
- code: bleCode.bleSuccessCode(),
- msg: "蓝牙物理连接成功",
- data: dev
- })
- },
- fail: function(err) {
- var msg = "";
- if (err) {
- msg = bluetoothErrMsg(err.errCode)
- }
- callBack.call(this, {
- code: bleCode.bleErrorCode(),
- msg: msg,
- data: null
- })
- }
- })
- }
-
- function getConnectedDevice(callBack) {
- wx.getConnectedBluetoothDevices({
- services: ["fee7"],
- success: function(res) {
- if (res.devices.length > 0) {
- callBack.call(this, {
- code: bleCode.bleErrorCode(),
- msg: "蓝牙被占用",
- data: res.services[0]
- })
- } else {
- callBack.call(this, {
- code: bleCode.bleSuccessCode(),
- msg: "可连接设备",
- data: null
- })
- }
- },
- fail: function(err) {
- var msg = "";
- if (err) {
- msg = bluetoothErrMsg(err.errCode)
- }
- callBack.call(this, {
- code: bleCode.bleErrorCode(),
- msg: msg,
- data: null
- })
- }
- })
- }
-
- function wxDisConnectDevice(callBack) {
- if (dev != null) {
- wx.closeBLEConnection({
- deviceId: dev.deviceId,
- success: function(res) {
- wx.closeBluetoothAdapter({
- success: function(res) {
- callBack.call(this, {
- code: bleCode.bleSuccessCode(),
- msg: "设备断开连接成功",
- data: null
- })
- },
- fail: function(err) {
- callBack.call(this, {
- code: bleCode.bleErrorCode(),
- msg: "设备断开连接成功," + err.errmsg,
- data: null
- })
- }
- })
- },
- fail: function(err) {
- var msg = "";
- if (err) {
- msg = bluetoothErrMsg(err.errCode)
- }
- callBack.call(this, {
- code: bleCode.bleErrorCode(),
- msg: msg,
- data: null
- })
- }
- })
- } else {
- callBack.call(this, {
- code: bleCode.bleSuccessCode(),
- msg: "暂无设备连接",
- data: null
- })
- }
- }
- export function findDeviceServices(device, callBack1, callBack2) {
- getDeviceService(device, function(res) {
- getDeviceCharacteristics(device, res.data, function(res1) {
- callBack1.call(this, res1)
- }, function(res2) {
- if (res2.code == bleCode.bleSuccessCode()) {
- wx.onBLECharacteristicValueChange(function(res) {
- console.log("接收数据<<=============:" + dataTool.bufferTohex(res.value).toLocaleUpperCase());
- callBack2.call(this, {
- code: bleCode.bleSuccessCode(),
- msg: "特征值发生变化",
- data: {
- value: dataTool.bufferTohex(res.value).toLocaleUpperCase()
- }
- })
- })
- } else {
- callBack2.call(this, res2)
- }
- })
- })
- };
-
- function getDeviceService(device, callBack) {
- wx.getBLEDeviceServices({
- deviceId: device.deviceId,
- success: function(res) {
- var services = res.services;
- for (var i = 0; i < services.length; i++) {
- if ("0000FEE7" == res.services[i].uuid.substr(0, 8)) {
- callBack.call(this, {
- code: bleCode.bleSuccessCode(),
- msg: "寻找服务成功",
- data: res.services[i].uuid
- })
- }
- }
- }
- })
- }
-
- function getDeviceCharacteristics(device, serviceId, callBack1, callBack2) {
- wx.getBLEDeviceCharacteristics({
- deviceId: device.deviceId,
- serviceId: serviceId,
- success: function(res) {
- var charactertics = res.characteristics;
- for (var i = 0; i < charactertics.length; i++) {
- var charact = charactertics[i];
- if (charact.properties.read == true) {
- wx.readBLECharacteristicValue({
- deviceId: device.deviceId,
- serviceId: charact_serviceId,
- characteristicId: charact.uuid,
- success: function(res) {}
- })
- }
- if (charact.properties.write == true) {
- callBack1.call(this, {
- code: bleCode.bleSuccessCode(),
- msg: null,
- data: {
- id: {
- devId: device.deviceId,
- serId: serviceId,
- charactId: charact.uuid
- }
- }
- })
- }
- if (charact.properties.notify == true || charact.properties.indicate == true) {
- wx.notifyBLECharacteristicValueChange({
- deviceId: device.deviceId,
- serviceId: serviceId,
- characteristicId: charact.uuid,
- state: true,
- success: function(res) {
- callBack2.call(this, {
- code: bleCode.bleSuccessCode(),
- msg: "开启设备监听成功",
- data: res
- })
- },
- fail: function(err) {
- var msg = "";
- if (err) {
- msg = bluetoothErrMsg(err.errCode)
- }
- callBack2.call(this, {
- code: bleCode.bleErrorCode(),
- msg: msg,
- data: null
- })
- }
- })
- }
- }
- }
- })
- }
- export function setParams(id) {
- deviceId = id.devId;
- serviceId = id.serId;
- characticId = id.charactId;
- console.log("写数据各项ID:" + JSON.stringify(id))
- };
- export function sendMessageToDevice(cmdArray, callBack) {
- var cmd = dataTool.strToBuffer(cmdArray[0]);
- var i = 0;
- wx.writeBLECharacteristicValue({
- deviceId: deviceId,
- serviceId: serviceId,
- characteristicId: characticId,
- value: cmd,
- success: function(res) {
- if (i < cmdArray.length - 1) {
- i++;
- onfire.fire("send", i)
- } else {
- onfire.clear();
- console.info("所有数据发送完成 共:" + cmdArray.length + "包");
- console.info("发送数据=============>>::" + cmdArray);
- callBack.call(this, {
- code: successCode,
- msg: "数据发送成功",
- data: cmdArray
- })
- }
- },
- fail: function(err) {
- console.log("writeBLECharacteristicValue fail:" + JSON.stringify(err));
- var msg = "";
- if (err) {
- msg = bluetoothErrMsg(err.errCode)
- }
- callBack.call(this, {
- code: bleCode.bleErrorCode(),
- msg: msg,
- data: null
- })
- }
- });
- onfire.on("send", i => {
- var cmd1 = dataTool.strToBuffer(cmdArray[i]);
- wx.writeBLECharacteristicValue({
- deviceId: deviceId,
- serviceId: serviceId,
- characteristicId: characticId,
- value: cmd1,
- success: function(res) {
- if (i < cmdArray.length - 1) {
- i++;
- onfire.fire("send", i)
- } else {
- onfire.clear();
- console.info("所有数据发送完成 共:" + cmdArray.length + "包");
- console.info("发送数据=============>>:" + cmdArray);
- callBack.call(this, {
- code: successCode,
- msg: "数据发送成功",
- data: cmdArray
- })
- }
- },
- fail: function(err) {
- console.log("writeBLECharacteristicValue fail:" + JSON.stringify(err));
- var msg = "";
- if (err) {
- msg = bluetoothErrMsg(err.errCode)
- }
- callBack.call(this, {
- code: bleCode.bleErrorCode(),
- msg: msg,
- data: null
- })
- }
- })
- })
- };
-
- function bluetoothErrMsg(errorCode) {
- switch (errorCode) {
- case 0:
- return "正常";
- break;
- case 1e4:
- return "未初始化蓝牙适配器";
- break;
- case 10001:
- return "当前蓝牙适配器不可用";
- break;
- case 10002:
- return "没有找到指定设备";
- break;
- case 10003:
- return "连接失败:操作超时";
- break;
- case 10004:
- return "蓝牙设备没有找到指定服务";
- break;
- case 10005:
- return "蓝牙设备没有找到指定特征值";
- break;
- case 10006:
- return "当前设备连接已断开";
- break;
- case 10007:
- return "当前特征值不支持此操作";
- break;
- case 10008:
- return "其余所有系统上报的异常";
- break;
- case 10009:
- return "安卓系统版本低于4.3不支持BLE";
- break;
- default:
- return "操作失败";
- break
- }
- }
|