0

저는 여러 개의 BLE 주변 기기에 연결하고 동시에 쓰기 메시지를 보내는 Chrome 앱을 만들고 있습니다. 필자는 각 쓰기 작업이 어느 주변 장치에서 완료되었는지 알 필요가있어서 해당 주변 장치에 대해 더 많은 작업을 시작할 수 있지만 콜백 함수에서 주변 장치를 참조하는 방법이없는 것처럼 보입니다.어떤 주변기기에 의해 작성된 쓰기 콜백을 찾을 수 있습니까?

function(Characteristic result) {...}; 

그리고 난 다음에 result.service.deviceAddress을 사용하고있다 :

The API

chrome.bluetoothLowEnergy.writeCharacteristicValue(string characteristicId, ArrayBuffer value, function callback) 
가 읽기 콜백 함수 특성 매개 변수가 있음을 보여줍니다 콜백 기능은 블루투스 API 쓰기 함수에 매개 변수로 전달 콜백이 필요한 장치를 찾습니다. 그러나 WRITE 콜백에는 매개 변수가 없습니다.

이렇게하면 기록 된 주변 장치를 참조 할 수 없으므로 어떤 주변 장치가이 쓰기 콜백을 실행 시켰는지 알 수 없습니다. 고정 된 수의 장치 각각에 대해 고유 한 콜백 함수를 사용하여이 작업을 수행 할 수 있음을 알 수 있지만, 단일 콜백 함수를 사용하여이 작업을보다 동적으로 수행하는 방법을 자세히 설명 할 수 있습니까?

답변

0

내가 (dDevice 인스턴스) 콜백에 대한 공유 기능을 추가 결국 : 장치를 추적 내 객체, 그리고

var writeCallback = function (d) { 
    //... 
} 

,이에 대한 호출에 대한 속성을 추가 this를 사용 기능 :

class Device { 
    constructor(device) { 
    //... 
    this.writeCallbackLink = (function() { 
     writeCallback(this); 
    }).bind(this); 
    } 
} 

bind(this)this 실제 객체가 아니라 런타임 환경을 의미 있는지 확인하는 것이 중요합니다. 매개 변수로 트리거 d 실행하는

chrome.bluetoothLowEnergy.writeCharacteristicValue(d.write.instanceId, 
    data_buffer, d.writeCallbackLink); 

이 발생 writeCallback : 나는 API 함수를 호출 할 때 다음, 나는 콜백 링크를 사용합니다.