如何结合写入特性和特性通知使用RXBluetoothKit为RxSwift

时间:2016-08-29 12:41:17

标签: swift rxiosble

我正在尝试使用RXBluetoothKit为一个BLE设备连接swift。设备的所有数据命令遵循以下顺序 1.写一个命令(writeWithResponse) 2.阅读通知的回复(关于不同的特征)

通知数据包的数量(通知数据包中最多20个字节)取决于命令。这将是一个固定数字或基本上使用notif值中的数据结束位来表示。

可以使用writeValue(),monitorValueUpdate()组合实现吗?

1 个答案:

答案 0 :(得分:2)

// Turn data URI to a blob ready for upload.
dataURItoBlob(dataURI:string): Blob {
    var byteString = atob(dataURI.split(',')[1]);
    var ab = new ArrayBuffer(byteString.length);
    var ia = new Uint8Array(ab);
    for (var i = 0; i < byteString.length; i++) {
        ia[i] = byteString.charCodeAt(i);
    }
    return new Blob([ab], { type: 'image/jpeg' });
}

// Share the given bitmapData as a photo on Facebook
sharePhoto(accessToken: string, photo: BitmapData, message: string): void {
    // Create form data, set up access_token, source and message
    var fd = new FormData();
    fd.append("access_token", accessToken);
    fd.append("source", this.dataURItoBlob(photo.canvas.toDataURL("image/jpeg")));
    fd.append("message", message);

    var request = new XMLHttpRequest();
    var thisPtr = this;
    request.onreadystatechange = function () {
        if (request.readyState == XMLHttpRequest.DONE) {
            var json = JSON.parse(request.responseText);
            if (json.hasOwnProperty("error")) {
                var error = json["error"];
                if (error.hasOwnProperty("type")) {
                    var errorType = error["type"];
                    if (errorType === "OAuthException") {
                        console.log("Need to request more permissions!");
                    }
                }
            }
        } else if (request.readyState == XMLHttpRequest.HEADERS_RECEIVED) {

        } else if (request.readyState == XMLHttpRequest.LOADING) {

        } else if (request.readyState == XMLHttpRequest.OPENED) {

        } else if (request.readyState == XMLHttpRequest.UNSENT) {

        }
    }
    request.open("POST", "https://graph.facebook.com/me/photos", true);
    request.send(fd);
}

你可以尝试上面。这只是一个想法,你如何处理它。我试着评论最重要的事情。让我知道它是否适合你。