我在 Ionic React 專案中使用Bluetooth-LE社區插件。
我正在使用以下代碼向 GATT 服務器寫入一個值:
await BleClient.write(device.deviceId, SERV_SYSTEM_SETTINGS, CHAR_RTC, dvDateTime );
這很好用,除了我需要能夠設定一個標志變數來指示寫入是成功還是失敗。他們在檔案中沒有說明如何做到這一點。然而,他們也是一個
writeWithoutResponse(deviceId: string, service: string, characteristic: string, value: DataView, options?: TimeoutOptions | undefined) => Promise<void>
這意味著
write(deviceId: string, service: string, characteristic: string, value: DataView, options?: TimeoutOptions | undefined) => Promise<void>
應該回傳成功或失敗回應。
我嘗試了一個相當新奇的舉動,希望可以將回應捕獲在如下變數中,但沒有成功:
const writeFlag = await BleClient.write(device.deviceId, SERV_SYSTEM_SETTINGS, CHAR_RTC, dvDateTime );
console.log("WRITE FLAG: " writeFlag);
但是 writeFlag 仍未定義。
如何從寫入程序中獲得回應?我可以手動檢查 GATT 設備并查看設備是否正確接收了我的寫入命令,但我需要能夠根據代碼中的成功/失敗采取行動。
任何指標/建議將不勝感激。
謝謝。
uj5u.com熱心網友回復:
我需要能夠設定一個標志變數來指示寫入是成功還是失敗。檔案中沒有任何內容表明如何做到這一點。
您正確鏈接/共享了檔案所說的回傳內容。
write(
deviceId: string,
service: string,
characteristic: string,
value: DataView,
options?: TimeoutOptions | undefined
) => Promise<void>
它回傳一個沒有值的 Promise,即類似于 void 回傳。
如果 Promise 解決,則表示寫入成功,如果拒絕,則表示失敗。
如果您需要“捕獲”成功/失敗,或者更確切地說是解決/拒絕狀態,您可以使用try/catch模式。
例子:
try {
await BleClient.write(
device.deviceId,
SERV_SYSTEM_SETTINGS,
CHAR_RTC,
dvDateTime
);
// success!
// set any local success flag
} catch(error) {
// failure, and error is likely undefined because void value
// set any local non-success flag
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/450288.html
上一篇:Ionic6PWACapacitor3Camera插件getPhoto方法像原生相機視圖一樣打開相機
下一篇:如果選擇,更改所選離子專案的顏色
