Разделение 8-битного байта и присвоение массиву 7×1 в Arduino

#arrays #arduino #serial-port #byte #bit

#массивы #arduino #последовательный порт #байт #бит

Вопрос:

Я использую Teensy 3.2 и Teensyduino для чтения в UART сигнале, состоящем из 6 bytes данных. Для каждого байта я хотел бы присвоить каждому из битов позицию в массиве 1×7. Например, допустим, я прочитал в 1-м байте = 01110101 . Я хотел бы массив, который исключает самый значимый бит (0) и выглядит следующим образом 1110101

Ниже приведено то, что я написал для чтения данных, и это работает как по волшебству. Это значения, которые в настоящее время хранятся в каждом элементе byteArray , которые я хотел бы преобразовать в отдельные array , как описано.

Я искал высоко и низко, поэтому, если бы вы могли указать мне правильное направление, я был бы вечно благодарен. Мне не обязательно просто нужен ответ, но я понятия не имею, как двигаться дальше в данный момент. Есть ли способ индексировать определенные биты в байте, аналогичный индексации позиций в массиве?

 #define PEESerial Serial2
byte byte1, byte2, byte3, byte4, byte5, byte6;
unsigned long period;
byte byteArray[6];
int count=0;

void setup() {
//Set the primary Serial (USB Serial)
Serial.begin(9600);

// Set the pin Serial - known value based on transmitted signal Baud Rate
PEESerial.begin(1200);
}
void loop() {  
// read from port 9 (serial2 Rx) IF there
// is a signal to read.

if (Serial2.available()amp;amp; count<6) {
 byteArray[count] = PEESerial.read();
 Serial.println(byteArray[count],HEX);
 Serial.println(byteArray[count],BIN);
 count  ;
} 
else {
 count=0;
}  
}
  

Комментарии:

1. Вы хотите сохранить 7bit данные в каждом элементе byteArray ? Я немного смущен тем, что вы пытаетесь сделать.

2. да, это правильно. Я хочу сохранить их каждый бит в свой собственный элемент массива. Я собираюсь посмотреть, не смогу ли я разобраться со сдвигом и маскировкой, поскольку я считаю, что это может быть единственным способом извлечения битов. Я надеялся, что существует более простой синтаксис или метод извлечения, но некоторые другие отзывы, которые я получил, ускользнули от того факта, что простого способа извлечения битов из байта данных не существует.

3. Ваши данные будут содержать минимум 8 bits и Most Significant bit это не повлияет на данные, если они есть 0 , чтобы убедиться, что они есть 0 , And ваш byte с 127 или его двоичное представление 0b01111111 с помощью amp; оператора. Ваше утверждение должно выглядеть следующим образом: byteArray[count] = 0b0000000 amp; yourData

4. Я допустил опечатку, сейчас не могу редактировать. Ваше утверждение должно выглядеть как byteArray[count] = 0b01111111 amp; yourData или byteArray[count] = 127 amp; yourData