ホームページ  >  記事  >  WeChat アプレット  >  小規模プログラム開発における Bluetooth 接続エラーの分析と解決策についての簡単な説明

小規模プログラム開発における Bluetooth 接続エラーの分析と解決策についての簡単な説明

青灯夜游
青灯夜游転載
2020-04-25 09:32:376915ブラウズ

小規模プログラム開発における Bluetooth 接続エラーの分析と解決策についての簡単な説明

携帯電話の Bluetooth をオンにして Bluetooth に接続しようとすると、接続できず、エラー 10003 が報告されます。この時点では、アプレットを再起動しても、再度 Bluetooth をオフにすると、Bluetooth デバイスに正常に接続できなくなります。 10003はWeChatのBluetooth接続でよく発生する問題で、WeChatが提供する公式ドキュメントでは単に「接続失敗」と記載されており、「接続失敗」と注意書きがされています。しかし、実際には、Bluetooth デバイスが占有されている、または前回の Bluetooth 接続が切断されていないために接続できない、deviceId に基づいて Bluetooth に接続するときに Bluetooth デバイスが切断されていないなど、接続に失敗する状況は数多くあります。電源が入ったり、異常が発生したりして接続できなくなります。

Bluetooth接続が切断されていないことが原因なので、携帯電話のBluetoothをオフにする際はBluetoothも切断してください。ただし、Bluetooth状態監視の切断関数を呼び出すとエラー(10001(使用不可))が返されます。 Bluetooth アダプターは現在利用できません)。

既成の解決策が見つからなかったので、コードをトレースして主要なメソッドにログを追加することしかできませんでしたが、トップ バーで携帯電話の Bluetooth をオフにすると、アプレットで Bluetooth 接続を切断できず、エラー (10001 (使用不可) 現在の Bluetooth アダプターは使用できません) が発生しました。その後、誤って Bluetooth デバイスのバインド関係をクリアし、Bluetooth 検索ページに再度アクセスしました。 , これを実行すると無事Bluetoothに接続できることが分かりました。

小規模プログラム開発における Bluetooth 接続エラーの分析と解決策についての簡単な説明

上記の問題を特定すると、最後の Bluetooth 接続が切断されなかったことが原因であることがわかり、Bluetooth を再検索して再度接続すると解決できます。 Bluetooth を検索して再接続するにはどうすればよいですか? 10003 エラーが発生した後、もう一度 Bluetooth を検索し、該当するデバイスを見つけてから Bluetooth 接続します。コードを修正してテストを繰り返します。ログに 10003 が表示されるので、検索モジュールに入り、検索 指定したデバイスに到達後、Bluetooth 接続を実行すると、接続に成功します。

wx.createBLEConnection({
deviceId: deviceId,
success: function (res) { //连接成功
initnotifyCharacteristic(notifyCharacteristic);// 指定特征值,并进行数据交互
// 已连接
_bthConnectStaus = BTH_STATUS_CONNECTED;
},
fail: function (res) {// 连接蓝牙失败
_bthConnectStaus = BTH_STATUS_DISCONNECT;
// 回调上层蓝牙连接失败
callback(res.errCode, connectfailed)
}

次に、失敗時の res.errCode に基づいて 10003 であるかどうかを判断します。

if(code ==10003) { //  部分android手机特殊情况下需要重新搜索才能连接蓝牙,此时报错10003,进行蓝牙搜索(ps:原因可能是系统中将手机蓝牙关闭导致连接状态不能改为断开,导致下次无法连接同一个设备)
var timeId = setTimeout(function () {
stopSearchBluetooth();
callback(false, timout)
}, 5000); // 最多搜索5s
searchBluetooth(function (res) {
if (res.devices === undefined ||res.devices === null) {
return;
}
for (var i = 0; i < res.devices.length; i++) {
if (res.devices[i] &&res.devices[i].deviceId == deviceId) { // 搜索到该设备
console.log(searchDeviceAndReConnect:find device and re connect);
clearTimeout(timeId);
stopSearchBluetooth() // 停止搜索
callback(true, finddevice);// 找到设备,在回调函数中连接蓝牙
break;
}
}
}, function (res) {
clearTimeout(timeId);
stopSearchBluetooth() // 停止搜索
callback(false, searchBluetoothfail)
});
}

上記のコードは、接続で 10003 エラーが発生した場合に Bluetooth デバイスを検索し、見つかった後 Bluetooth に再接続するという簡単な処理を示しています。

もちろん、この問題で報告されるエラーは 10003 だけではありません。すべて、デバイスが Bluetooth をオンにしない場合にも 10003 が報告されます。また、検索ロジックが追加されたため、デバイスが Bluetooth をオンにしたときのリマインダーも表示されます。 Bluetooth をオンにしないと速度が遅くなります (デバイスの Bluetooth がオンになっていない場合、ユーザーはデバイスの Bluetooth をオンにするよう通知する必要があります) が、幸いなことに、これはほとんど影響がありません。現時点では、これを解決する良いアイデアはありません。今後ゆっくり勉強していきます。

一部の携帯電話だけが 10003 エラーを発生することを考慮すると、他の携帯電話が検索によってデータを収集するために Bluetooth に接続する速度が低下するのを避けるために、エラー 10003 を報告する前に Bluetooth に一度接続します。 Bluetooth の場合; 10003 は多くの状況で発生しますが、基本的には最後の Bluetooth 接続が終了したかどうかで判断できます。Bluetooth を再検索して接続する場合も、最後の Bluetooth 接続が切断されなかったことに基づいています。

推奨事項: 「 ミニ プログラム開発チュートリアル

以上が小規模プログラム開発における Bluetooth 接続エラーの分析と解決策についての簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。