खोज…


टिप्पणियों

प्रलेखन

टिप्पणियाँ

  • विंडोज 10 केवल केंद्रीय मोड में कार्य कर सकता है, इसलिए यह केवल उन उपकरणों से जुड़ सकता है जो परिधीय मोड का समर्थन करते हैं। इसके कारण, दो Windows 10 डिवाइस ब्लूटूथ LE पर कनेक्ट नहीं हो सकते हैं।
  • इसे कनेक्ट करने के लिए Windows 10 को ब्लूटूथ LE डिवाइस के साथ जोड़ा जाना चाहिए।

प्रारंभिक व्यवस्था

यूनिवर्सल विंडोज प्लेटफॉर्म ऐप पर किसी भी ब्लूटूथ कार्यक्षमता का उपयोग करने के लिए, आपको Package.appxmanifest में Bluetooth क्षमता की जांच करनी चाहिए।

  1. खुला Package.appxmanifest
  2. Capabilities टैब पर जाएं
  3. बाईं ओर Bluetooth ढूंढें और उसके बगल में स्थित बॉक्स को चेक करें

एक ब्लूटूथ ले विज्ञापन बनाएँ

यह उदाहरण दिखाता है कि अग्रभूमि में विंडोज 10 डिवाइस से कस्टम पेलोड का विज्ञापन कैसे किया जाए। पेलोड एक बनी हुई कंपनी (0xFFFE के रूप में पहचान) का उपयोग करता है और विज्ञापन में स्ट्रिंग Hello World का विज्ञापन करता है।

BluetoothLEAdvertisementPublisher publisher = new BluetoothLEAdvertisementPublisher();

// Add custom data to the advertisement
var manufacturerData = new BluetoothLEManufacturerData();
manufacturerData.CompanyId = 0xFFFE;

var writer = new DataWriter();
writer.WriteString("Hello World");

// Make sure that the buffer length can fit within an advertisement payload (~20 bytes). 
// Otherwise you will get an exception.
manufacturerData.Data = writer.DetachBuffer();

// Add the manufacturer data to the advertisement publisher:
publisher.Advertisement.ManufacturerData.Add(manufacturerData);

publisher.Start();

नोट: यह केवल अग्रभूमि में विज्ञापन के लिए है (जबकि एप्लिकेशन खुला है)।

ब्लूटूथ ले विज्ञापन के लिए सुनो

सामान्य श्रवण

यह उदाहरण दिखाता है कि किसी विशिष्ट विज्ञापन को कैसे सुनना है।

BluetoothLEAdvertisementWatcher watcher = new BluetoothLEAdvertisementWatcher();

// Use active listening if you want to receive Scan Response packets as well
// this will have a greater power cost.
watcher.ScanningMode = BluetoothLEScanningMode.Active;

// Register a listener, this will be called whenever the watcher sees an advertisement. 
watcher.Received += OnAdvertisementReceived;

watcher.Start();

विज्ञापन फ़िल्टर: एक विशिष्ट विज्ञापन के लिए सुनना

कभी-कभी आप एक विशिष्ट विज्ञापन के लिए सुनना चाहते हैं। इस मामले में, किसी विज्ञापन के लिए किसी पेलोड वाली कंपनी (जिसे 0xFFFE के रूप में पहचाना जाता है) और विज्ञापन में स्ट्रिंग हैलो वर्ल्ड को शामिल करने के लिए सुनो। यह एक विंडोज मशीन विज्ञापन और एक और सुनने के लिए एक ब्लूटूथ ले एडवर्टाइज़मेंट उदाहरण के साथ जोड़ा जा सकता है।

नोट: अपने चौकीदार को शुरू करने से पहले इस विज्ञापन फ़िल्टर को अवश्य सेट करें!

var manufacturerData = new BluetoothLEManufacturerData();
manufacturerData.CompanyId = 0xFFFE;

// Make sure that the buffer length can fit within an advertisement payload (~20 bytes). 
// Otherwise you will get an exception.
var writer = new DataWriter();
writer.WriteString("Hello World");
manufacturerData.Data = writer.DetachBuffer();

watcher.AdvertisementFilter.Advertisement.ManufacturerData.Add(manufacturerData);

सिग्नल फ़िल्टर: समीपस्थ विज्ञापनों के लिए सुनना

कभी-कभी आप केवल अपने द्रष्टा को ट्रिगर करना चाहते हैं जब डिवाइस विज्ञापन रेंज में आ गया है। आप अपनी सीमा को परिभाषित कर सकते हैं, बस ध्यान दें कि सामान्य मान 0 और -128 के बीच हैं।

// Set the in-range threshold to -70dBm. This means advertisements with RSSI >= -70dBm 
// will start to be considered "in-range" (callbacks will start in this range).
watcher.SignalStrengthFilter.InRangeThresholdInDBm = -70;

// Set the out-of-range threshold to -75dBm (give some buffer). Used in conjunction 
// with OutOfRangeTimeout to determine when an advertisement is no longer 
// considered "in-range".
watcher.SignalStrengthFilter.OutOfRangeThresholdInDBm = -75;

// Set the out-of-range timeout to be 2 seconds. Used in conjunction with 
// OutOfRangeThresholdInDBm to determine when an advertisement is no longer 
// considered "in-range"
watcher.SignalStrengthFilter.OutOfRangeTimeout = TimeSpan.FromMilliseconds(2000);

कॉलबैक

watcher.Received += OnAdvertisementReceived;
watcher.Stopped += OnAdvertisementWatcherStopped;

private async void OnAdvertisementReceived(BluetoothLEAdvertisementWatcher watcher, BluetoothLEAdvertisementReceivedEventArgs eventArgs)
{
    // Do whatever you want with the advertisement

    // The received signal strength indicator (RSSI)
    Int16 rssi = eventArgs.RawSignalStrengthInDBm;
}


private async void OnAdvertisementWatcherStopped(BluetoothLEAdvertisementWatcher watcher, BluetoothLEAdvertisementWatcherStoppedEventArgs eventArgs)
{
    // Watcher was stopped
}

नोट: यह केवल अग्रभूमि में सुनने के लिए है।

ब्लूटूथ ले विज्ञापन से RSSI के आधार पर दूरी को देखते हुए

जब आपके ब्लूटूथ ले वॉचर का कॉलबैक चालू हो जाता है, तो EventArgs में एक RSSI मान शामिल होता है जो आपको प्राप्त सिग्नल की शक्ति (कितना मजबूत है) बताता है

private async void OnAdvertisementReceived(BluetoothLEAdvertisementWatcher watcher, BluetoothLEAdvertisementReceivedEventArgs eventArgs)
{
    // The received signal strength indicator (RSSI)
    Int16 rssi = eventArgs.RawSignalStrengthInDBm;
}

यह मोटे तौर पर दूरी में अनुवादित किया जा सकता है, लेकिन सही दूरी को मापने के लिए उपयोग नहीं किया जाना चाहिए क्योंकि प्रत्येक व्यक्ति रेडियो अलग है। विभिन्न पर्यावरणीय कारक गेज (जैसे दीवारें, रेडियो के आसपास के मामले, या यहां तक कि हवा की आर्द्रता) तक दूरी को मुश्किल बना सकते हैं।

शुद्ध दूरी तय करने का एक विकल्प "बाल्टी" को परिभाषित करना है। रेडिओस 0 से -50 डीबीएम की रिपोर्ट करते हैं जब वे बहुत करीब होते हैं, -50 टू -90 जब वे मध्यम दूरी पर होते हैं, और -90 से नीचे जब वे दूर होते हैं। परीक्षण और त्रुटि यह निर्धारित करने के लिए सबसे अच्छा है कि आप इन बाल्टियों को आपके लिए क्या चाहते हैं।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow