سؤال

لم أتعامل مع البرمجة ضد أجهزة الأجهزة منذ فترة طويلة ونسيت جميع الأساسيات إلى حد كبير.

لدي مواصفات لما يجب أن أرسله في بايت ويتم تعريف كل بت من البت الأكثر أهمية (Bit7) إلى الأقل أهمية (بت 0). كيف أقوم ببناء هذا البايت؟ من MSB إلى LSB ، أو العكس؟

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

المحلول

إذا كانت هذه البتات "يتم حزمها" (وهي عادة ما تكون) ، فإن ترتيب البتات هو الترتيب الأصلي ، و 0 هو LSB ، و 7 هو MSB. لا يتم إرسال البتات عادةً واحدًا تلو الآخر ، ولكن كبايت (عادة ما يكون أكثر من بايت واحد ...).

وفق ويكيبيديا, ، يمكن أن يكون طلب بت في بعض الأحيان من 7-> 0 ، ولكن ربما تكون هذه هي الحالة النادرة.

نصائح أخرى

إذا كنت ستكتب البايت بأكمله في نفس الوقت ، أي القيام بنقل مواز بدلاً من المسلسل ، فإن ترتيب البتات لا يهم.

إذا كان النقل هو المسلسل ، ثم يجب أن تعرف أي طلب يتوقع الجهاز البتات ، من المستحيل معرفة من الخارج.

لتجميع بايت من ثمانية أجزاء ، ما عليك سوى استخدام bitwise أو "إضافة" بت ، واحدة في وقت واحد:

byte value = 0;

value |= (1 << n);  // 'n' is the index, with 0 as the LSB, of the bit to set.

إذا كانت المواصفات تقول MSB ، فقم بإنشائها MSB. وإلا إذا كانت المواصفات تقول LSB ، فقم بإنشائها LSB. خلاف ذلك ، اطلب المزيد من المعلومات.

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