يصف هذا المستند كيفية استخدام واجهة برمجة التطبيقات serial API للقراءة والكتابة من الأجهزة التسلسلية. كروم يمكن أيضًا ربط التطبيقات بأجهزة USB والبلوتوث.
متطلبات ملف البيان
يجب إضافة الرقم "serial" إذن بالوصول إلى ملف البيان:
"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.
يمكن أن يؤدي المثال التالي إلى تجميع وحدات بايت للقراءة إلى أن تتم قراءة سطر جديد، ما يؤدي إلى تحويل البيانات المستلَمة 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;
}
مسح المخزن المؤقت للمنفذ التسلسلي
يمكنك محو المخزن المؤقت للمنفذ التسلسلي من خلال إصدار الأمر Flowsh:
chrome.serial.flush(connectionId, onFlush);
المزيد
وتتضمّن واجهة برمجة التطبيقات Serial API العديد من الميزات الأخرى. ويمكنك مثلاً ضبط الاتصال على "دائم"، وبالتالي يمكنه تلقّي بيانات حتى عندما لا يكون تطبيقك قيد التشغيل، أو يمكنك تعديل مَعلمات الاتصال على الانتقال، مثل معدل نقل البيانات والمهلات وإشارات التحكم وغيرها الكثير من خلال serial.update . اطّلِع على المرجع الكامل لواجهة برمجة التطبيقات serial للحصول على مزيد من المعلومات.