2015-11-20 5 views
7

मैंने पहले ब्लूटूथ डिवाइस के साथ जोड़ा है जो आरएफसीओएमएम का समर्थन करता है। जब मेरा ऐप खोला जाता है तो मैं लगातार RFCOMM खोलकर डिवाइस से कनेक्ट करने का प्रयास करता हूं। जब डिवाइस रेंज में आता है तो इस तरह मेरा ऐप स्वचालित रूप से कनेक्ट होता है।विंडोज 10 - जब ब्लूटूथ डिवाइस रेंज में है तो कैसे पता लगाएं

deviceInfoCollection = await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.SerialPort)); 
     LogData(String.Format("Number of mldp devices is {0}", deviceInfoCollection.Count)); 
     foreach (DeviceInformation deviceInfo in deviceInfoCollection) 
     { 
      LogData(String.Format("ID:{0}, NAME:{1}", deviceInfo.Id, deviceInfo.Name)); 
     } 

फिर एक टाइमर पर इस चलाएँ:

try 
      { 
       // The first time this method is invoked by a store app, it should be called 
       // from a UI thread in order to display the consent prompt 
       // https://msdn.microsoft.com/en-us/windows.devices.bluetooth.rfcomm.rfcommdeviceservice.fromidasync 
       RfcommDeviceService rfcommService = await RfcommDeviceService.FromIdAsync(deviceInfo.Id); 
       LogData(String.Format("ID:{0}, NAME:{1}", deviceInfo.Id, deviceInfo.Name)); 
      } 
      catch (Exception) 
      { 
       LogData(String.Format("Can not request rfcomm service from device ID:{0}, NAME:{1}", deviceInfo.Id, deviceInfo.Name)); 
      } 

वहाँ क्वेरी करने के लिए जब डिवाइस बल्कि कनेक्ट करने के लिए कोशिश कर रहा से, सीमा में है कोई तरीका है? जब डिवाइस रेंज में होता है तो मैं केवल कनेक्शन का प्रयास करना पसंद करूंगा।

उत्तर

2

RFCOMM के लिए (BT2.0, BT2.1) यदि आप किसी डिवाइस गणन समय-समय पर चला सकते हैं, यह भी देखना Get bluetooth devices in range

हालांकि एक कनेक्शन का प्रयास के साथ अपने वास्तविक क्रियान्वयन थोड़ा बेहतर काम कर सकते हैं।

ब्लूटूथ 4.0 के लिए, आप बीटी मॉड्यूल के विज्ञापनों को सुन सकते हैं, तो आप (जैसे कुछ रोबोट, या homebrew उपकरणों RFCOMM का प्रयोग करके) मैं वहाँ डर लग रहा है एक एम्बेडेड डिवाइस के लिए बात कर रहे हैं भी https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/BluetoothAdvertisement

देखना आप जो कर रहे हैं उससे बेहतर समाधान नहीं है।

यदि आप एक फोन ले रहे हैं (जो बीटी 4.0 और बीटी 2.1 दोनों का समर्थन करता है) तो आप डिवाइस की निकटता को सिग्नल करने के लिए बीटी 4 विज्ञापनों का उपयोग कर सकते हैं, फिर आरएफसीओएमएम के माध्यम से कनेक्ट कर सकते हैं।

संबंधित मुद्दे