星期五, 4月 27, 2018

App Inventor BLE 元件錯誤 "failed resolution Lcom/google/common/collect/List"

在測試 App Inventor 2 的 BLE 元件時, 遇到奇怪的問題, 執行到 WriteBytes 函式, 傳給 values 參數 list (清單) 資料, 就會發生以下的執行時期錯誤:
查了網路上發現這個討論串, 提出的臨時替代方案就是改用 WriteStrings, 並且直接傳送字串給 values 參數, 而不是內含個別字串的清單, App Inventor 會把這個字串轉成由個別字元組成的清單, 一一將字元傳送出去。因此, 如果你本來要送出 12,14 這 2 個位元組, 就要改成送出字串, 其中第一個字元字碼 (ASCII code) 是 12、第二個字元字碼是 14。

不過 App Inventor 並沒有指定字碼傳回對應字元的積木, 因此就有聰明的人想出對策, 由於在 Web(網路) 元件中有提供解譯 HTML entity 成對應字元的功能, 也就是把像是 "&#65" 這樣的字串轉譯為字碼 65 的字元 'A', 藉由此法, 我們就可以撰寫一個傳回指定字碼對應字元的函式:


如此就可以在 WriteStrings 中使用上述函式來組合多個位元組資料了。

沒有留言: