위챗 애플릿 블루투스 연결 읽기와 쓰기 데이터 실전
53705 단어 위챗 애플릿
위챗 애플릿 블루투스 연결 기록
1. 블루투스 초기화
searchDevice: function() {
var that = this
//
wx.openBluetoothAdapter({
success: function(res) {
that.getBluetoothState();//
},
fail: function(res) {
if (res.errCode != 0) {
//
initTypes(res.errCode, res.errMsg)
}
}
})
},
2. 기본 Bluetooth 어댑터 상태 가져오기
getBluetoothState: function() {
var that = this
wx.getBluetoothAdapterState({
success: function(res) {
console.log(" ")
that.findBleDevices();
},
fail: function(e) {
console.log(" ")
console.log(e.errMsg)
if (e.errCode != 0) {
initTypes(e.errCode);
}
}
})
},
3. 블루투스 검색
findBleDevices: function() {
//
wx.showLoading({
title: ' '
});
var that = this
wx.startBluetoothDevicesDiscovery({
success: function(res) {
that.onBluetoothDeviceFound()
},
fail: function(res) {
console.log(res.errMsg)
if (res.errCode != 0) {
initTypes(res.errCode)
}
}
})
},
4. 주변 장치 발견
onBluetoothDeviceFound: function() {
var that = this
wx.onBluetoothDeviceFound(function(res) {
console.log(' ');
that.getBluetoothDevices()
})
},
5. Bluetooth 모듈이 작동하는 동안 발견된 모든 Bluetooth 장치를 가져옵니다.이 컴퓨터와 이미 연결된 장치를 포함합니다.
getBluetoothDevices: function() {
var that = this
wx.getBluetoothDevices({
success: function(res) {
console.log(' :' + res.errMsg);
console.log(res.devices);
that.clearOtherDevices(res);
},
fail: function(res) {
console.log(' , :' + res.errMsg);
if (res.errCode != 0) {
initTypes(res.errCode);
}
}
})
},
6. 블루투스 연결 제가 연결하기 전에 블루투스 장치의 이름을 선별하는 작업을 하고 모듈을 훑어보고 모듈을 클릭하여 이 방법에 들어갑니다.
createBLEConnection: function(e) {
//
let deviceId = e.currentTarget.id;
app.globalData.deviceId = deviceId;//app.js const app = getApp()
var bluename = e.target.dataset.bluename;
app.globalData.bleName = bluename;
var that = this;
wx.showToast({
title: ' ...',
icon: 'loading',
duration: 99999
});
//
wx.createBLEConnection({
deviceId: deviceId,
success: function(res) {
console.log(' :' + res.errMsg);
//
that.stopBluetoothDevicesDiscovery();
wx.hideToast();
wx.showToast({
title: ' ',
icon: 'success',
duration: 2000
});
that.getBLEDeviceServices(); //
},
fail: function(res) {
console.log(' , :' + e.errMsg);
if (res.errCode != 0) {
initTypes(res.errCode);
}
wx.hideLoading()
}
})
},
7. 검색 중지
stopBluetoothDevicesDiscovery: function() {
wx.stopBluetoothDevicesDiscovery({
success: function(res) {
console.log(' :' + res.errMsg);
},
fail: function(res) {
console.log(' , :' + res.errMsg);
if (res.errCode != 0) {
initTypes(res.errCode);
}
}
})
},
8. 서비스 받기
getBLEDeviceServices: function() {
let services = [];
let serviceId = null;
var that = this;
wx.getBLEDeviceServices({
deviceId: app.globalData.deviceId,
success: function(res) {
console.log(' :' + res.errMsg);
console.log(res.services)
services = res.services;
if (services.length <= 0) {
toast(' , !');
return
}
// serviceId
for (var x in services) { //x = index
if (services[x].uuid.indexOf("6E400001") >= 0) {
// UUID
app.globalData.serviceId = services[x].uuid;
that.getBLEDeviceCharacteristics();
break;
}
}
},
fail: function(res) {
console.log(' , :' + res.errMsg);
if (res.errCode != 0) {
initTypes(res.errCode);
}
}
})
},
9. 특정 서비스에서 모든 특징 값 가져오기
getBLEDeviceCharacteristics: function() {
var charactArray = [];
var that = this;
wx.getBLEDeviceCharacteristics({
deviceId: app.globalData.deviceId,
serviceId: app.globalData.serviceId, // UUID
success: function(res) {
console.log(' :' + res.errMsg);
console.log(res);
charactArray = res.characteristics;
if (charactArray.length <= 0) {
toast(' , !');
return;
}
//charactArray res.characteristics
for (var x in charactArray) {
//
if (charactArray[x].properties.write) {
app.globalData.characteristicWriteId = charactArray[x].uuid
}
//
if (charactArray[x].properties.notify) {
app.globalData.characteristicNotifyId = charactArray[x].uuid
}
}
//
that.setData({
blueornot: true,
list: null,
bluename: app.globalData.bleName
})
//
that.notifyBLECharacteristicValueChange();
},
fail: function(res) {
console.log(' , :' + res.errCode);
if (res.errCode != 0) {
initTypes(res.errCode);
}
}
})
},
10. 데이터 읽기 구독 작업이 성공하면 장치가 특징값의value를 주동적으로 업데이트해야 wx를 터치할 수 있습니다.onBLECHaracteristicValueChange 콜백
notifyBLECharacteristicValueChange: function() {
var that = this
wx.notifyBLECharacteristicValueChange({
deviceId: app.globalData.deviceId,
serviceId: app.globalData.serviceId,
characteristicId: app.globalData.characteristicNotifyId,
// characteristicId 9 uuid
state: true,
success: function(res) {
console.log('notifyBLECharacteristicValueChange success:' + res.errMsg);
console.log(JSON.stringify(res));
that.onBLECharacteristicValueChange();
},
})
},
11. 블루투스 특징값 변화 감청 저소모 블루투스 장치의 특징값 변화 사건.장치가 푸시하는 notification을 수신하려면 notifyBLECharacteristicValueChange 인터페이스를 먼저 사용해야 합니다.
onBLECharacteristicValueChange: function() {
var that = this;
wx.onBLECharacteristicValueChange(function(res) {
console.log(' ');
console.log(ab2hex(res.value));
that.onBleDataAnalysic(ab2hex(res.value));
})
},
12. 블루투스 쓰기 데이터가 블루투스 명령에 전달됨
writeBLECharacteristicValue: function(buffer) {
wx.writeBLECharacteristicValue({
deviceId: app.globalData.deviceId,
serviceId: app.globalData.serviceId,
characteristicId: app.globalData.characteristicWriteId,
//characteristicId:9 UUID
value: buffer,
//value :
success: function(res) {
console.log(" ")
},
fail: function(res) {
console.log(" " + res.errMsg)
}
})
},
13. 데이터 처리 방법 (1) 16진수 10진수 변환 가능
function hex2dex(str) {
return parseInt(str, 16).toString(10)
}
(2) 16진수 ASCII 코드 전환
function hexCharCodeToStr(hexCharCodeStr) {
var trimedStr = hexCharCodeStr.trim();
var rawStr = trimedStr.substr(0, 2).toLowerCase() === "0x" ? trimedStr.substr(2) : trimedStr;
var len = rawStr.length;
if (len % 2 !== 0) {
alert(" !");
return "";
}
var curCharCode;
var resultStr = [];
for (var i = 0; i < len; i = i + 2) {
curCharCode = parseInt(rawStr.substr(i, 2), 16);
resultStr.push(String.fromCharCode(curCharCode));
}
return resultStr.join("");
}
(3) ArrayBuffer 16 진행 문자열 예제
function ab2hex(buffer) {
const hexArr = Array.prototype.map.call(
new Uint8Array(buffer),
function(bit) {
return ('00' + bit.toString(16)).slice(-2)
}
)
return hexArr.join('')
}
(4) 문자열이 ArrayBuffer 객체 매개변수로 문자열로 변환
function str2ab(str) {
var buf = new ArrayBuffer(str.length / 2);
var bufView = new Uint8Array(buf);
for (var i = 0, strLen = str.length; i < strLen; i++) {
bufView[i] = parseInt(str.slice(i * 2, i * 2 + 2),16);
}
return buf;
}
(5)버퍼(이것은 내가 블루투스에 마지막으로 전달한 값, 즉 데이터 쓰는 방법의value)
function systemCommand(){
let buffer = new ArrayBuffer(5);
//5
let dataView = new DataView(buffer);
dataView.setUint8(0, 0x05);
// 0x05
dataView.setUint8(1, 0x02);
// 0x02 new ArrayBuffer(5); dataView.setUint8( , )
return buffer;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
유니앱, 위챗 애플릿에서 MQTT 사용 문제(1)MQTT.js는 JavaScript로 작성된 MQTT 프로토콜의 클라이언트 라이브러리로 Node에 사용할 수 있습니다.js와 브라우저.노드에서.js단은 전역 설치를 통해 명령행 연결을 사용할 수 있으며 MQTT...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.