Web Serial में ब्लूटूथ RFCOMM से जुड़े अपडेट

François Beaufort
François Beaufort

Web Serial API, डेस्कटॉप पर Chrome 117 से कनेक्ट किए गए ब्लूटूथ क्लासिक डिवाइसों पर RFCOMM सेवाओं के साथ कम्यूनिकेट करने की सुविधा देता है. उदाहरण के लिए, इससे वायरलेस ईयरबड, ऑडियो सेटिंग और फ़र्मवेयर अपडेट को मैनेज करने के लिए RFCOMM का इस्तेमाल कर सकते हैं. ज़्यादा जानने के लिए, वेब पर ब्लूटूथ से सीरियल कनेक्शन देखें.

डेस्कटॉप के लिए Chrome 130 में, Web Serial API को बेहतर बनाया गया है. इससे वेब ऐप्लिकेशन यह पता लगा सकते हैं कि ब्लूटूथ RFCOMM सीरियल पोर्ट कब उपलब्ध है. इसके लिए, उन्हें पोर्ट खोलने की ज़रूरत नहीं होती. इससे वायरलेस डिवाइस को जान-बूझकर डिसकनेक्ट करने पर, उसे बार-बार कनेक्ट होने से रोका जा सकता है.

जब कोई वायरलेस डिवाइस, होस्ट डिवाइस की रेंज से बाहर चला जाता है, तो वेब ऐप्लिकेशन से खोला गया कोई भी वायरलेस सीरियल पोर्ट अपने-आप बंद हो जाता है. ऐसे मामलों में, वेब ऐप्लिकेशन SerialPort open() तरीके का इस्तेमाल करके पोर्ट को फिर से खोलने की कोशिश कर सकता है. हालांकि, अगर वायरलेस डिवाइस को जान-बूझकर डिसकनेक्ट किया गया था (उदाहरण के लिए, उपयोगकर्ता ने ऑपरेटिंग सिस्टम के कंट्रोल पैनल से डिसकनेक्ट किया था), तो वेब ऐप्लिकेशन को पोर्ट को फिर से खोलने से बचना चाहिए, ताकि वायरलेस डिवाइस से फिर से कनेक्ट न किया जा सके.

वायरलेस डिवाइस के लॉजिकल कनेक्शन की स्थिति को दिखाने के लिए, SerialPort connected नाम का नया बूलियन एट्रिब्यूट जोड़ा गया है. इससे वेब ऐप्लिकेशन इन स्थितियों के बीच अंतर कर सकते हैं. साथ ही, सिर्फ़ तब फिर से कनेक्ट कर सकते हैं, जब कनेक्शन गलती से डिसकनेक्ट हुआ हो.

अगर पोर्ट को होस्ट करने वाले वायरलेस डिवाइस का सिस्टम से कोई कनेक्शन चालू है, तो वायरलेस सीरियल पोर्ट के लिए SerialPort connected एट्रिब्यूट की वैल्यू सही होती है. वायर्ड सीरियल पोर्ट के लिए, यह तब सही होता है, जब पोर्ट को सिस्टम से फ़िज़िकली अटैच किया गया हो.

यहां दिए गए स्निपेट में, यह देखने का तरीका बताया गया है कि कौनसे डिवाइस उपलब्ध हैं और उनसे अपने-आप कनेक्ट होने की सुविधा चालू है या नहीं.

const ports = await navigator.serial.getPorts();
for (const port of ports) {
  if (port.connected) {
    // Automatically try to connect to the Bluetooth device.
    await port.open({ baudRate: 9600 });
  } else {
    // Otherwise, when the port is not logically connected:
    // 1. Prompt the user to make sure the Bluetooth device is available.
    // 2. Show a "connect" button to try opening the port.
  }
}

पहले, सिर्फ़ वायर वाले सीरियल पोर्ट, कनेक्ट और डिसकनेक्ट इवेंट भेजते थे. ब्लूटूथ RFCOMM सीरियल पोर्ट, अब पोर्ट के लॉजिकल तौर पर कनेक्ट या डिसकनेक्ट होने पर इन इवेंट को भेजते हैं.

डेमो

SerialPort connected demo.

संसाधन

लोगों का आभार

समीक्षा करने के लिए, जैक शिए और रेली ग्रांट को धन्यवाद.