सीरियल डिवाइस

इस दस्तावेज़ में सीरियल डिवाइसों से कॉन्टेंट पढ़ने और उसमें बदलाव करने के लिए, सीरियल एपीआई का इस्तेमाल करने का तरीका बताया गया है. Chrome ऐप्लिकेशन, यूएसबी और ब्लूटूथ डिवाइसों से भी कनेक्ट हो सकते हैं.

मेनिफ़ेस्ट की ज़रूरी शर्तें

आपको "सीरियल" जोड़ना होगा अनुमति मेनिफ़ेस्ट फ़ाइल में दी गई है:

"permissions": [
  "serial"
]

उपलब्ध सीरियल पोर्ट की सूची बनाना

उपलब्ध सीरियल पोर्ट से जुड़े पाथ की सूची पाने के लिए, serial.getDevices का इस्तेमाल करें तरीका. ध्यान दें: सभी सीरियल पोर्ट उपलब्ध नहीं हैं. एपीआई सिर्फ़ सीरियल नंबर दिखाने के लिए ह्यूरिस्टिक्स का इस्तेमाल करता है जो सुरक्षित हों.

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) ने लिसनर जोड़े. अगर आप एक ही समय में एक से ज़्यादा पोर्ट से कनेक्ट होता है, तो आपको संबंधित connectionId serial.onReceive के कॉलबैक पैरामीटर में आने वाला रीड इवेंट.

नीचे दिए गए उदाहरण में, नई लाइन को पढ़े जाने तक रीड बाइट इकट्ठा हो सकते हैं. साथ ही, अरेबफ़र से स्ट्रिंग टू स्ट्रिंग और नई लाइन मिलने पर मेथड को कॉल करें:

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);

ज़्यादा दिखाएँ

सीरियल एपीआई में कई अन्य सुविधाएं भी हैं. उदाहरण के लिए, कनेक्शन को स्थायी तौर पर सेट किया जा सकता है, इसलिए यह तब भी डेटा हासिल कर सकता है, जब आपका ऐप्लिकेशन न चल रहा हो. इसके अलावा, कनेक्शन पैरामीटर को इन पर अपडेट किया जा सकता है serial.update का इस्तेमाल करके, बिटरेट, टाइम आउट, कंट्रोल सिग्नल वग़ैरह तरीका. ज़्यादा जानकारी के लिए, serial एपीआई का पूरा रेफ़रंस देखें.