BtlePlug هي مكتبة غير متزامنة Rust Ble ، تدعم Windows 10 و MacOs و Linux و iOS و Android (بما في ذلك الرفرفة ، انظر أدناه لمزيد من المعلومات).
نشأت من العديد من المكتبات المهجورة في وقت سابق لمختلف المنصات (Rumble ، Blurmac ، إلخ ...) ، بهدف بناء مكتبة منصة متقاطعة بالكامل. إذا كنت مهتمًا بكيفية نمو المكتبة ، فيمكنك قراءة المزيد عن ذلك في منشور المدونة هذا.
من المفترض أن يكون BtlePlug هو المضيف/الوضع المركزي فقط . إذا كنت مهتمًا بالشكل الطرفي (أي يتصرف مثل جهاز Bluetooth LE بدلاً من الاتصال بواحد) ، تحقق من stluster أو ble-perphiral-rust.
لا تدعم هذه المكتبة Bluetooth 2/Classic . لا توجد خطط لإضافة دعم BT2/كلاسيكي.
| ميزة | النوافذ | ماكوس / iOS | Linux | Android |
|---|---|---|---|---|
| إحضار محول | x | x | x | x |
| التعامل مع محولات متعددة | x | |||
| اكتشف الأجهزة | x | x | x | x |
| └ اكتشاف الخدمات | x | x | x | x |
| └ اكتشاف الخصائص | x | x | x | x |
| └ اكتشاف الواصفات | x | x | x | x |
| └ اكتشف الاسم | x | x | x | x |
| └ اكتشف بيانات الشركة المصنعة | x | x | x | x |
| └ اكتشف بيانات الخدمة | x | x | x | x |
| └ اكتشف عنوان MAC | x | x | x | |
| GATT Server Connect | x | x | x | x |
| حدث Connect Server Gatt | x | x | x | x |
| GATT Server Disconnect | x | x | x | x |
| حدث فصل خادم GATT | x | x | x | x |
| اكتب إلى المميزة | x | x | x | x |
| اقرأ من المميزة | x | x | x | x |
| اشترك في المميزة | x | x | x | x |
| إلغاء الاشتراك من المميزة | x | x | x | x |
| احصل على حدث إخطار مميز | x | x | x | x |
| قراءة واصف | x | x | x | x |
| اكتب واصف | x | x | x | x |
| استرداد MTU | ||||
| استرداد الفاصل الزمني للاتصال |
لتمكين تنفيذ Serde Serialize Deserialize من بعض الأنواع الشائعة في وحدة api ، استخدم ميزة serde .
[ dependencies ]
btleplug = { version = " 0.11 " , features = [ " serde " ] } لاستخدام Bluetooth على MacOS Big Sur (11) أو لاحقًا ، تحتاج إلى إما حزم ثنائيك في حزمة تطبيق مع Info.plist بما في ذلك NSBluetoothAlwaysUsageDescription ، أو (لتطبيق خط الأوامر مثل الأمثلة المضمنة مع btleplug ) ، يتيح إذن Bluetooth الخاص بك. يمكنك القيام بهذا الأخير من خلال الانتقال إلى تفضيلات النظام ← الأمان والخصوصية → الخصوصية → Bluetooth ، والنقر فوق الزر "+" ، واختيار "محطة" (أو أي تطبيق طرفي تستخدمه).
نظرًا لطلب بناء الصدأ/Java الهجين ، يتطلب BtlePlug لنظام Android إعدادًا معقدًا إلى حد ما.
تتوفر بعض المعلومات حول أداء الإنشاء في العدد الأصلي لدعم Android في BTLPlug.
نظرة عامة سريعة على عملية الإنشاء:
src/droidplug/java ، باستخدام ملفات Gradle المضمنة ، وهم إلى ريبو Maven ، أو الحصول على جزء Java من نقطة تطبيق Android الخاصة بك إلى ذلك كتطبيق محلي.cargo-ndk للبناء. إخراج jnilibs وتأكد من أنها تنتهي في المكان المناسب في تطبيقك.يمكن أن يكون تحسين Proguard مشكلة عند استخدام BtlePlug ، حيث يتم الوصول إلى ملف .AAR الذي تم إنشاؤه بواسطة رمز Java في BtlePlug فقط بواسطة الكود الأصلي ، ويمكن تحسينه كجزء من إزالة الكود الميت وتقليص الموارد. لإصلاح ذلك ، يجب إجراء التغييرات على ملف Build.gradle ، وسيحتاج قواعد البروغول إلى تحديدها.
لـ Build.gradle:
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs . debug
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile( ' proguard-android-optimize.txt ' ), ' proguard-rules.pro '
}
}proguard-rules.pro:
#Flutter Wrapper - Only needed if using flutter
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }
#btleplug resources
-keep class com.nonpolynomial.** { *; }
-keep class io.github.gedgygedgy.** { *; }
نظرًا لأن تطبيق CoreBluetooth يتم مشاركته بين MacOS و iOS ، يجب على BtlePlug على iOS "العمل فقط" ، ويبدو أنه مستقر. يمكن أن يختلف كيفية تصميم هذا بناءً على إعداد التطبيق الخاص بك وما هي اللغة التي ترتبط بها ، ولكن تعليمات العينة هي كما يلي (مأخوذة من هنا):
هناك أيضًا بعض الأمثلة في Shim Flutter المذكورة أدناه.
على الرغم من أننا لا ندعم على وجه التحديد Flutter ، إلا أن هناك قالبًا على https://github.com/trobanga/flutter_btleplug. يحتوي هذا القالب على بناء لكل من Android و iOS باستخدام BtlePlug.
نظرًا لأن مجموعة الرفرفة تميل إلى أن تكون معقدة عبر المنصات ، لا يمكننا المساعدة في مشكلات البناء.
على الرغم من أننا لا ندعم Tauri على وجه التحديد ، إلا أن هناك مكونًا إضافيًا متاحًا على https://github.com/mnlphlp/tauri-plugin-blec. يرجى ملاحظة أن جميع أسئلة Tauri يجب أن تذهب إلى REPO المكون الإضافي قبل المجيء إلى هنا ، لا يمكننا المساعدة في مشكلات Tauri حيث لا يستخدم مطورو هذا المشروع Tauri.
كل شخص لديه احتياجات Bluetooth مختلفة ، لذلك إذا كان BtlePlug لا يناسب لك ، جرب هذه المكتبات الأخرى من قبل مجتمع الصدأ!
تتم تغطية BtlePlug بموجب ترخيص BSD 3-كلوس ، مع بعض الأجزاء من Rumble/Blurmac مغطى بموجب ترخيص MIT/Apache Dual ، وتراخيص BSD 3 ، على التوالي. راجع الترخيص. md لمزيد من المعلومات ومعلومات حقوق الطبع والنشر.