الوصول إلى منفذ COM الظاهري Bluetooth على Windows دون الاقتران اليدوي

StackOverflow https://stackoverflow.com/questions/906454

  •  05-09-2019
  •  | 
  •  

سؤال

أحتاج إلى الاتصال بجهاز Bluetooth من خلال منفذ COM الظاهري الذي تم إنشاؤه في Windows. من السهل عندما تم إنشاء المنفذ بالفعل أثناء إجراء الاقتران اليدوي. ولكن أود طلبي تخفيف المستخدم من الاقتران اليدوي للجهاز. أود تقديم جميع الأجهزة في النطاق، اسمح للمستخدم باختيار واحد، ثم قم بإنشاء منفذ COM الظاهري متصل بالجهاز المحدد. أنا لا أحاول تجنب إجراء الاقتران نفسه، بل أود أن أحصل عليه من خلال طلبي.

بدأت على دراية مايكروسوفت بلوتوث api.. وبعد ثم نشأ بعض الشكوك. لقد كنت أتساءل عما يحدث إذا كان بعض المستخدم سيستخدم كومة Bluetooth مختلفة (من Microsoft)؟ هل API الخاص ب Microsoft BLUETOOTH API الحقيقي، والتي يجب تنفيذها بواسطة أي مزود مكدس Bluetooth آخر؟ أو بالأحرى كل مزود لديه واجهة برمجة التطبيقات الخاصة به، و Microsoft هو واحد فقط من الآخرين؟

هل كانت مفيدة؟

المحلول

شكرا الجميع على المدخلات القيمة. أود أن ألخص ما وجدته حتى الآن. API Microsoft Bluetooth ليس نظام التشغيل API. تطبيق مكتوب ضده لن يتعاون بشكل صحيح مع أي شيء آخر حزمة بلوتوث. وبعد يبدو أن التطبيقات التي تهدف إلى التعاون مع مداخن متعددة تحتاج إلى توفير بعض طبقة التجريد مكدس، وكومة كود معين لكل منهم. الحل الآخر هو السماح للمستخدم بإقران يدوي لجهاز Bluetooth، مما يؤدي في النهاية إلى إنشاء جهاز افتراضي في نظام التشغيل (على سبيل المثال، منفذ COM). ثم يمكن للتطبيق استخدام الواجهة القياسية لمثل هذا الجهاز.

نصائح أخرى

لا أستطيع التحدث عن Microsoft Bluetooth API، ولكن هناك مداخن بلوتوث متعددة متوفر لمنصة الكمبيوتر (حتى أكثر للأجهزة المحمولة).

يتم تعريف واجهة برمجة التطبيقات الأساسية من قبل بلوتوث الأساسية المواصفات وهكذا يجب أن تكون جميع المكدسات قادرة على التفاعل، في الواقع أنها إلزامية أن تكون interop أو لا يمكنها استخدام اسم Bluetooth وشعارها.

فيما يتعلق بالاقتران، سيكون لديك صعوبة في الحصول على أجهزة لإقران إذا كان لديهم أمان افتراضي، يتطلب رمز PIN.

قد تكون الأمور أكثر بساطة في المستقبل (القريب)، حيث أن معيار Bluetooth قد قدم نموذجا أمانا جديدا، آمن الاقتران بسيط, ، الذي يحتوي على وضع "Works" "فقط" لا يتطلب أي رمز PIN. هذا لا يزال أقوى، ثم الأمن الحالي، إلا ضد الرجل في الهجمات الوسطى. ومع ذلك، قد يكون ذلك بعض الوقت قبل أن ترى رقائق هذه الميزة في أجهزة الكمبيوتر الشخصية.

إذا كنت تستطيع التغيير لاستخدام .NET: - / أستطيع أن أوصي مكتبة لدينا 32feet.net.وبعد للاقتران الصريح هناك BluetoothSecurity.pairdevice. يمكننا أيضا إنشاء منفذ الظاهري لك، على سبيل المثال:

   BluetoothClient cli = new BluetoothClient();
   BluetoothDeviceInfo[] list = cli.DiscoverDevices();
   BluetoothDeviceInfo selected = GetUserToSelectOne(list);
   BluetoothSecurity.PairDevice(selected, pin);
   // Ask Win32 to create a virtual serial port
   selected.SetServiceState(BluetoothService.SerialPort);

ومع ذلك، أنا حقا لا أحب المنافذ التسلسلية الافتراضية، لذلك أقترح دائما أن الناس يستخدمون اتصال مآخذ عادي باستخدام فئة Bluetoothclient الخاصة بنا، وسوف تتعامل تلقائيا مع طلب الاقتران إذا لزم الأمر.

على Win32 نحن نؤيد المداخن من Microsoft و WidComm / Broadcom و Bluesoleil. على WidComm، لا يوجد أي دعم للمتسدد هناك حتى الآن، ولم يكن لدى واجهة برمجة التطبيقات الخاصة بها أي دعم للاستجابة للاقتران طلبات. وبعد bluesoleil يجب أن يدعم كليهما.

دليل مستخدم موجز في 32feet.net - دليل المستخدم, ، وجميع الوثائق الفصلية متاحة في الموقع الرئيسي http://32feet.net., ، وثائق WidComm هي فقط في مخزون الكود في اللحظة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top