Chrome.serial API - قراءة العدد الصحيح من البايتات عبر المسلسل

StackOverflow https://stackoverflow.com//questions/20006737

سؤال

أنا أعمل على ملحق Google Chrome الذي يتواصل مع Arduino UNO عبر المسلسل.لقد كتبت الوظيفة التالية sendSerialCmd يأخذ منفذًا (سلسلة)، وserial_cmd (ArrayBuffer)، ووظيفة رد اتصال يتم تمريرها readInfo.data (ArrayBuffer) التي تتم قراءتها من الاتصال التسلسلي.

var CONNECTION_ID = -1;
var sendSerialCmd = function(port, serial_cmd, callback) {
chrome.serial.open(port, null, function(openInfo){
    CONNECTION_ID = openInfo.connectionId;
    if (CONNECTION_ID == -1) {
        console.log('Could not connect to serial');
        return;
    }
    chrome.serial.write(CONNECTION_ID, serial_cmd, function(writeInfo){
        chrome.serial.read(CONNECTION_ID, 8, function(readInfo){
            callback(readInfo.data);
        });
    })
});
chrome.serial.close(CONNECTION_ID, function(result){ console.log(result) });
};

إحدى المشكلات التي واجهتها هي المعلمة الثالثة التي تم تمريرها إلى ملف chrome.serial.read() وظيفة.في ال chrome.serial API، المعلمة الثالثة هي بايت للقراءة (عدد صحيح):عدد البايتات المراد قراءتها, ومع ذلك، فإن عدد البايتات الواردة من Arduino الخاص بي عرضة للتغيير.في بعض الأحيان قد أحصل على 8 بايت، وفي أحيان أخرى أكثر.ما هي أفضل طريقة لاستعادة كل البايتات المرسلة من Arduino الخاص بي؟

لدى Arduino حل جديد من خلال وظيفة تسمى المسلسل متاح () الذي يُرجع عدد البايتات المتاحة للقراءة.هل هناك شيء مماثل يمكنني فعله باستخدام Chrome.serial API؟

هل كانت مفيدة؟

المحلول

لا توجد وظيفة مماثلة ل Serial.available() في واجهة برمجة تطبيقات Chrome التسلسلية، ولكن يجب عليك فقط إجراء استطلاع لعدد معقول من البايتات ومعالجة البيانات بالسرعة التي تناسبك.

اذا كان read مطلوب (على سبيل المثال) 1024 بايت ويتوفر 8 بايت فقط، read يجب أن ينجح بسرعة مع 8 بايت فقط.إذا كانت هناك رسالة بحجم 8 بايت ورسالة بحجم 12 بايت متاحة، فسيتم read سينجح بـ 20 بايت ويمكنك تطبيق أي منطق ضروري لتحليل البيانات الناتجة.

لمعلوماتك، ستتغير واجهة برمجة التطبيقات التسلسلية قريبًا في Canary ولن تعد مسؤولاً عن الاستقصاء يدويًا read.وبدلاً من ذلك، سيقوم Chrome باستطلاع رأيك وإطلاق النار chrome.serial.onReceive الأحداث حيث تتوفر البيانات من جهاز مفتوح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top