현재 위치 - 인적 자원 플랫폼망 - 미니프로그램 자료 - WeChat 애플릿 블루투스 튜토리얼 - 정식 버전 프로 테스트
WeChat 애플릿 블루투스 튜토리얼 - 정식 버전 프로 테스트
# mpvue로 애플릿을 개발할 때 WeChat 애플릿의 블루투스 연결 프로세스에 대해 간략하게 소개합니다.

# 블루투스 연결 과정에서 일부 API는 약 1~2초의 타이머 지연을 두고 실행해야 합니다. 애플릿에 이러한 요구 사항이 있다는 것을 왜 모르시나요?

#1. 먼저, Bluetooth:openBluetoothAdapter()를 초기화해야 합니다.

` ` js

if (wx.openBluetoothAdapter) {

wx.openBluetoothAdapter({

Success:function(res) {

/*로컬 머신의 블루투스 상태를 가져옵니다 */

setTimeout(()= & gt;{

getBluetoothAdapterState()

}, 1000)

},

Failure:function(error){

///초기화 실패

}

})

} otherwise{

}

```

#2. 로컬 블루투스를 사용할 수 있는지 확인:

#? 블루투스 초기화에 성공하면 위의 콜백에서 호출됩니다.

` ` js

getBluetoothAdapterState() {

var that = this

That.toastTitle= '블루투스 상태 확인 중'

wx.getBluetoothAdapterState() {

wx. {

Success:function(res) {

startBluetoothDevicesDiscovery()

},

Failure(res) {

console.log(res)

}

})

}

```

#3. 블루투스 장치 검색 시작:

`` js

start bluetooth devices discovery(){

var that = this

setTimeout(()= & gt;{

< p>wx . start bluetooth devices discovery({

Success:function(res) {

/**블루투스 장치 목록 가져오기*/

that.getBluetoothDevices()

},

Failure(res) {

}

})

}, 1000)

}

```

#4. 검색된 블루투스 장치 목록 가져오기

# /* that.deviceName은 가져온 블루투스 장치의 이름입니다. 블루투스 장치에 표시되는 블루투스 주소는 안드로이드와 애플 폰에서 다르기 때문입니다. bluetooth*

` ` js

getBluetoothDevices() {

var that = this

setTimeout(()= & gt;{

wx. getBluetoothDevices({

Service:[],

allowDuplicatesKey: false,

interval:0,

success:function(res) {

if(RES . devices . length & gt; 0) {

if (JSON.stringify(res.devices). indexOf(that.deviceName)! == -1) {

for(set I = 0; I& lt resource, device, length; i++) {

if(that . device name = = = = RES . devices[I]. Name){

/* 지정된 블루투스 장치 이름에 따라 장치 ID 일치 */

that.deviceId = that.devices[i]. deviceId

setTimeout(() = & gt;{

that . connect to();

}, 2000);

};

};

}else{

} else{

}else{

}

},

failure(res) {

Console.log(res. 'Unable to get list of Bluetooth devices = = = = = ')

}

})

},

``

#5. 블루투스 연결

#블루투스 장치 ID와 일치하면 블루투스 연결 요청을 보냅니다. 연결에 성공하면 블루투스 검색용 API 연결을 끊은 다음 연결된 블루투스 장치의 서비스를 가져옵니다.

` ` js

connectTO() {

wx.createBLEConnection({

DeviceId:DeviceId,

Success:Function (res) {

그 . 연결된 디바이스 ID = 디바이스 ID;

/* 4. 연결된 디바이스의 서비스 서비스를 가져옵니다 */

that . getbledeviceservices();

wx . 중지 블루투스 장치 검색({

성공:함수(res) {

콘솔.로그(res, "검색 중지")

},

실패(res) {

}

})

},

Failure:function(res) {

}

})

}

``

#6. 블루투스 장치에 대한 서비스 가져오기. 여러 서비스 ID에 연결을 시도하고 어떤 것이 안정적인 서비스 버전인지 확인합니다. 서비스를 받은 후 장치 서명 값을 가져옵니다.

` ` js

getBLEDeviceServices() {

setTimeout(() = & gt;{

wx.getBLEDeviceServices({

device id:that . 연결된 장치 id,

success:function(res) {

services=researchServices

/*연결된 장치의 모든 특성 값을 가져옵니다 */

that . getbledevicecharacteristics()

},

fail:(res) = >{

}

})

}, 2000)

},

``

#7.

#취득할 특성 값이 많을 경우, 읽기-쓰기-모니터링 가능한 값의 uuid가 특성 값 id로 사용됩니다.

`` js

getBLEDeviceCharacteristics() {

setTimeout(() = & gt;{

wx . getbledevicecharacteristics({

DeviceId: connectedDeviceId,

ServiceId:service[2]. uuid,

success:function(res) {

for(var I = 0; I& lt resolution, characteristics, Length; i++) {

if((RES . characters[I]. properties . notify | | RES . characters[I]. properties . indicate)& amp; & amp

(RES . characters[I]. properties . read & amp;& ampRES . characters[I]. properties . 쓰기)){

Console.log (Res. characters [I].uuid, '블루투스 기능 값 = = = = = = = ')

/*블루투스 기능 값 가져오기**

that . 알림 문자 id = RES . characters[I]. uuid

//저전력 블루투스 장치의 기능 값이 변경될 때 알림을 활성화합니다.

그 . notifyblecharactervaluechange()

}

}

},

fail:function(res) {

}

})

}, 1000)

},

``

#8. 블루투스 모니터 알림 기능을 시작한 다음 wx. onblecharacteristicValueChange를 사용하여 블루투스 장치에서 전송되는 데이터를 모니터링합니다.

#수신 및 전송 데이터는 이진 데이터여야 하며, 페이지가 표시될 때 변환해야 합니다.

` ` js

notifyblectric value change(){// 저전력 블루투스 장치의 기능 값이 변경될 때 알림을 활성화합니다.

var that = this

Console.log('6. 저전력 Bluetooth 장치의 기능 값이 변경될 때 알림을 활성화합니다')

wx . notifyblecharacteryvaluechange({

state:true,

device id:that . 연결된 장치 ID,

서비스 ID:해당 . notifyservicweid,

feature id:that . notify characteristic id,

completion(remaining){

/*휴대폰의 블루투스 장치의 데이터 변경 사항을 모니터링하는 데 사용 */

wx . onblecharacteristicvaluechange(function(RES){

/**/

that . balancedata+= that . buf 2 문자열(RES . value)

that . hex str+= that . receive data(RES . value)

})

},

fail(res) {

Console.log(res, "저전력 블루투스 장치 모니터링을 활성화할 수 없습니다.")

that . 측정 힌트(res)

}

})

},

/**원하는 형식으로 변환 */

buf2string(buffer){

var arr = array . prototype . map . call(new uint 8 array(buffer), x = & gtx)

return arr.map((char, I) = & gt;{

return string . from charcode(char);

}). join("");

},

수신 데이터 (버퍼){

반환 이 . 헥스카르코데토스트르(this . ab 2 hex(buf))

},

/**변환 바이너리로*/

ab2hex(buffer){

?var hexArr = array . prototype . map . call(

? new uint 8 array (buffer), function (bit){

?return(' 00 '+bit . tostring(16)). slice(-2)

}

)

? Return hexArr.join(' ')

},

/*전시용 텍스트로 번역 */

hexCharCodeToStr(hexCharCodeStr){

?var trimedStr = hexcharcodestr . trim();

?var rawStr = trimedStr.substr(0, 2). toLowerCase() === '0x '? trimedStr . substr(2):trimedStr;

?var len = rawStr.length

?var curCharCode

?var resultStr = [];

?for(var I = 0; I& ltleni = i+ 2) {

?curCharCode = parse int(raw str . substr(I, 2), 16);

?resultstr . push(string . from charcode(curCharCode));

}

? resultstr을 반환합니다. join("");

},

``

#블루투스 장치로 데이터 보내기

` ` js

데이터 보내기 (문자열){

Let that = this;

데이터 보내기 buffer = 새 배열 buffer(str . length)

let dataView = new dataView(data buffer)

for(var I = 0; I& lt string length; i++) {

dataView.setUint8(i, str.charAt(i). charCodeAt())

}

데이터 헥스 = 그 . ab 2 헥스(데이터 버퍼);

this . 쓰기 데이터 = 그 . 헥스카르코데토스트르(데이터 헥스);

wx . writeblecharacteryvalue({

장치 id:that . 연결된 장치 ID,

서비스 ID:그 . notifyservicweid,

feature id:that . notify 기능 id,

value:데이터 버퍼,

success:function(res) {

Console.log('Data sent:'+that.writeDatas)

Console.log("메시지를 성공적으로 보냈습니다! ")

},

Failure:Function(res) {

},

Completion:Function(res) {

}

})

,

``

#블루투스에 연결할 필요가 없는 경우 블루투스를 끄고 블루투스 모듈을 끕니다.

` ` js

//장치 연결을 해제합니다.

closeConnect() {

if (that.connectedDeviceId) {

wx.closeBLEConnection({

device id:that . 연결된 장치 id,

success:function(res) {

that.closeBluetoothAdapter()

},

failure(res) {

}

})

} otherwise {

that.closeBluetoothAdapter()

}

},

>

/블루투스 모듈 닫기

closeBluetoothAdapter() {

wx.closeBluetoothAdapter({

성공:함수(res) {

},

실패:함수(오류){

}

})

,

``

#블루투스 장치와 데이터를 주고받는 동안 읽기 API를 사용하지 않아 문제가 발생할 가능성이 있는지 알 수 없습니다. 현재 온라인에서 실행하여 문제가 있는지 확인 중입니다.

##오늘의 블루투스 체험은 이것으로 마치겠습니다.