ওয়েব সিরিয়ালে ব্লুটুথ RFCOMM আপডেট

ফ্রাঁসোয়া বোফোর্ট
François Beaufort

ওয়েব সিরিয়াল এপিআই ডেস্কটপে ক্রোম ১১৭ থেকে পেয়ার করা ব্লুটুথ ক্লাসিক ডিভাইসের আরএফসিওএমএম (RFCOMM) সার্ভিসের সাথে যোগাযোগ সমর্থন করে। উদাহরণস্বরূপ, এটি ওয়্যারলেস ইয়ারবাডগুলোকে আরএফসিওএমএম ব্যবহার করে অডিও সেটিংস এবং ফার্মওয়্যার আপডেট পরিচালনা করতে দেয়। আরও জানতে ওয়েবে ‘সিরিয়াল ওভার ব্লুটুথ’ দেখুন।

ডেস্কটপের জন্য ক্রোম ১৩০ সংস্করণ থেকে, ওয়েব সিরিয়াল এপিআই-এর একটি উন্নত সংস্করণের ফলে ওয়েব অ্যাপগুলো পোর্টটি না খুলেই ব্লুটুথ আরএফসিওএমএম সিরিয়াল পোর্টটি উপলব্ধ আছে কিনা তা শনাক্ত করতে পারে। এর ফলে, ওয়্যারলেস ডিভাইসটি ইচ্ছাকৃতভাবে সংযোগ বিচ্ছিন্ন করা হলে অপ্রয়োজনীয় পুনঃসংযোগ প্রতিরোধ করা যায়।

যখন কোনো ওয়্যারলেস ডিভাইস হোস্টের সীমার বাইরে চলে যায়, তখন ওয়েব অ্যাপ দ্বারা খোলা যেকোনো ওয়্যারলেস সিরিয়াল পোর্ট স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায়। এমন ক্ষেত্রে, ওয়েব অ্যাপটি SerialPort open() মেথড ব্যবহার করে পোর্টটি পুনরায় খোলার চেষ্টা করতে পারে। তবে, যদি ওয়্যারলেস ডিভাইসটি ইচ্ছাকৃতভাবে সংযোগ বিচ্ছিন্ন করা হয় (উদাহরণস্বরূপ, ব্যবহারকারী কর্তৃক অপারেটিং সিস্টেম কন্ট্রোল প্যানেল থেকে), তাহলে ওয়্যারলেস ডিভাইসটির সাথে পুনরায় সংযোগ স্থাপন রোধ করতে ওয়েব অ্যাপটির পোর্টটি পুনরায় খোলা থেকে বিরত থাকা উচিত।

একটি নতুন বুলিয়ান 'SerialPort connected অ্যাট্রিবিউটের মাধ্যমে ওয়্যারলেস সিরিয়াল পোর্ট ধারণকারী ওয়্যারলেস ডিভাইসের লজিক্যাল সংযোগ অবস্থা প্রকাশ করার ফলে, ওয়েব অ্যাপগুলো এখন এই পরিস্থিতিগুলো আলাদা করতে পারে এবং সংযোগ বিচ্ছিন্ন হওয়াটা অনিচ্ছাকৃত হলেই কেবল পুনরায় সংযোগ স্থাপন করতে পারে।

ওয়্যারলেস সিরিয়াল পোর্টের ক্ষেত্রে ' SerialPort connected অ্যাট্রিবিউটটি 'true' হয়, যদি পোর্টটি হোস্টকারী ওয়্যারলেস ডিভাইসটির সিস্টেমের সাথে কোনো সক্রিয় সংযোগ থাকে। তারযুক্ত সিরিয়াল পোর্টের ক্ষেত্রে, এটি 'true' হয় যদি পোর্টটি ভৌতভাবে সিস্টেমের সাথে সংযুক্ত থাকে।

নিচের কোড স্নিপেটটি আপনাকে দেখাবে কীভাবে কোন ডিভাইসগুলো উপলব্ধ আছে তা পরীক্ষা করতে হয় এবং প্রয়োজনে সেগুলোতে স্বয়ংক্রিয়ভাবে সংযোগ স্থাপন করতে হয়।

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) সিরিয়াল পোর্টগুলো যৌক্তিকভাবে সংযুক্ত বা বিচ্ছিন্ন হলে এই ইভেন্টগুলো প্রেরণ করে।

ডেমো

সিরিয়ালপোর্ট সংযুক্ত ডেমো।

সম্পদ

কৃতজ্ঞতা জ্ঞাপন

তাদের পর্যালোচনার জন্য জ্যাক সি এবং রেইলি গ্রান্টকে ধন্যবাদ।