এই নথিটি বর্ণনা করে যে কীভাবে সিরিয়াল ডিভাইসগুলি থেকে পড়তে এবং লিখতে সিরিয়াল API ব্যবহার করতে হয়। Chrome Apps এছাড়াও USB এবং Bluetooth ডিভাইসের সাথে সংযোগ করতে পারে৷
ম্যানিফেস্ট প্রয়োজনীয়তা
ম্যানিফেস্ট ফাইলে আপনাকে অবশ্যই "সিরিয়াল" অনুমতি যোগ করতে হবে:
"permissions": [
"serial"
]
উপলব্ধ সিরিয়াল পোর্ট তালিকা
উপলব্ধ সিরিয়াল পোর্টগুলির সাথে যুক্ত পাথগুলির একটি তালিকা পেতে, serial.getDevices
পদ্ধতিটি ব্যবহার করুন। দ্রষ্টব্য: সমস্ত সিরিয়াল পোর্ট উপলব্ধ নয়। API শুধুমাত্র সিরিয়াল ডিভাইসগুলিকে প্রকাশ করতে হিউরিস্টিক ব্যবহার করে যা নিরাপদ বলে আশা করা হয়।
var onGetDevices = function(ports) {
for (var i=0; i<ports.length; i++) {
console.log(ports[i].path);
}
}
chrome.serial.getDevices(onGetDevices);
একটি সিরিয়াল ডিভাইসের সাথে সংযোগ করা হচ্ছে
আপনি যদি সিরিয়াল পোর্টের সাথে যুক্ত পথটি জানেন তবে আপনি serial.connect
পদ্ধতি ব্যবহার করে এটির সাথে সংযোগ করতে পারেন:
chrome.serial.connect(path, options, callback)
প্যারামিটার | বর্ণনা |
---|---|
পথ (স্ট্রিং) | যদি আপনার ডিভাইসের পোর্টের সাথে যুক্ত পথটি অজানা হয়, আপনি serial.getDevices পদ্ধতি ব্যবহার করতে পারেন। |
অপশন (অবজেক্ট) | বিভিন্ন কনফিগারেশন মান সহ প্যারামিটার অবজেক্ট। serial.ConnectionOptions এ বিস্তারিত দেখুন |
কলব্যাক | বন্দরটি সফলভাবে খোলা হলে আহ্বান করা হয়েছে। কলব্যাকটিকে একটি প্যারামিটার দিয়ে কল করা হবে, connectionInfo , যার বেশ কয়েকটি গুরুত্বপূর্ণ মান রয়েছে। serial.ConnectionInfo এ বিস্তারিত দেখুন। |
একটি সহজ উদাহরণ:
var onConnect = function(connectionInfo) {
// The serial port has been opened. Save its id to use later.
_this.connectionId = connectionInfo.connectionId;
// Do whatever you need to do with the opened port.
}
// Connect to the serial port /dev/ttyS01
chrome.serial.connect("/dev/ttyS01", {bitrate: 115200}, onConnect);
সিরিয়াল পোর্ট থেকে সংযোগ বিচ্ছিন্ন করুন
যখন একটি অ্যাপ বন্ধ হয়ে যায়, সিরিয়াল পোর্টগুলির সাথে সংযোগগুলি যা স্থায়ী হয় না তা প্ল্যাটফর্ম দ্বারা স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায়। যাইহোক, যদি আপনি আপনার অ্যাপ চালু থাকা অবস্থায় সংযোগ বিচ্ছিন্ন করতে চান, আপনি serial.disconnect পদ্ধতিটি ব্যবহার করতে পারেন:
var onDisconnect = function(result) {
if (result) {
console.log("Disconnected from the serial port");
} else {
console.log("Disconnect failed");
}
}
chrome.serial.disconnect(connectionId, onDisconnect);
সিরিয়াল পোর্ট থেকে পড়া
সিরিয়াল এপিআই সিরিয়াল পোর্ট থেকে পড়ে এবং ইভেন্ট শ্রোতাদের কাছে ArrayBuffer হিসাবে রিড বাইট সরবরাহ করে। আপনার অ্যাপ্লিকেশনের সাথে সংযুক্ত প্রতিটি পোর্ট chrome.serial.onReceive.addListener(onReceiveCallback)
এর মাধ্যমে যোগ করা সমস্ত শ্রোতাদের পড়ার ইভেন্ট তৈরি করবে৷ আপনি যদি একই সময়ে একাধিক পোর্টের সাথে সংযুক্ত থাকেন, তাহলে আপনি serial.onReceive- এর কলব্যাক প্যারামিটারে একটি ইনকামিং রিড ইভেন্টের সংশ্লিষ্ট connectionId
খুঁজে পেতে পারেন।
নিম্নলিখিত উদাহরণটি একটি নতুন লাইন পড়া না হওয়া পর্যন্ত পঠিত বাইট জমা করতে পারে, প্রাপ্ত ArrayBuffer কে স্ট্রিং-এ রূপান্তরিত করে এবং একটি পদ্ধতিতে কল করতে পারে যখন একটি নতুন লাইন প্রাপ্ত শেষ অক্ষর হিসাবে পাওয়া যায়:
var stringReceived = '';
var onReceiveCallback = function(info) {
if (info.connectionId == expectedConnectionId && info.data) {
var str = convertArrayBufferToString(info.data);
if (str.charAt(str.length-1) === '\n') {
stringReceived += str.substring(0, str.length-1);
onLineReceived(stringReceived);
stringReceived = '';
} else {
stringReceived += str;
}
}
};
chrome.serial.onReceive.addListener(onReceiveCallback);
// [...] not shown here: connect to the serial port
সিরিয়াল পোর্টে ডেটা পাঠানো হচ্ছে
পড়ার চেয়ে ডেটা পাঠানো সহজ। একমাত্র ধরা হল যে যদি আপনার ডেটা প্রোটোকল স্ট্রিং ভিত্তিক হয়, তাহলে আপনাকে আপনার আউটপুট স্ট্রিংকে একটি ArrayBuffer
এ রূপান্তর করতে হবে। নীচের কোড উদাহরণ দেখুন:
var writeSerial=function(str) {
chrome.serial.send(connectionId, convertStringToArrayBuffer(str), onSend);
}
// Convert string to ArrayBuffer
var convertStringToArrayBuffer=function(str) {
var buf=new ArrayBuffer(str.length);
var bufView=new Uint8Array(buf);
for (var i=0; i<str.length; i++) {
bufView[i]=str.charCodeAt(i);
}
return buf;
}
একটি সিরিয়াল পোর্ট বাফার ফ্লাশ করা হচ্ছে
আপনি ফ্লাশ কমান্ড জারি করে আপনার সিরিয়াল পোর্ট বাফার ফ্লাশ করতে পারেন:
chrome.serial.flush(connectionId, onFlush);
আরও
সিরিয়াল এপিআই-এর আরও বেশ কিছু বৈশিষ্ট্য রয়েছে। আপনি, উদাহরণস্বরূপ, অবিরাম একটি সংযোগ সেট করতে পারেন, যাতে এটি আপনার অ্যাপ না চলাকালীনও ডেটা গ্রহণ করতে পারে, অথবা আপনি ফ্লাইতে সংযোগের পরামিতি আপডেট করতে পারেন, যেমন বিটরেট, টাইমআউট, নিয়ন্ত্রণ সংকেত এবং সিরিয়াল সহ আরও অনেক কিছু। আপডেট পদ্ধতি। আরও তথ্যের জন্য সিরিয়াল API এর সম্পূর্ণ রেফারেন্স দেখুন।