将数组中的两个字节的值合并并放入一个并打印

Combining two bytes of value from an array and putting into one and printing it

你好实际上我想组合数组的第二个和第三个字节并分配给变量名StartBit,我已经编写并添加了一个布尔值TxtBit来检查条件并输出值但是当我输出value 我得到的第一个字节值完全为零,第二个字节值是原样。如果有人帮助我,那就太好了。

#include <SoftwareSerial.h>

byte TxData[] = {
    0b00000001, 0b00000010, 0b00000011, 0b00000100, 0b000000101,
    0b00000110, 0b00000111, 0b00001000, 0b00001001, 0b11111111,
};

int  bytePos;
bool TxBit;
int  bitPos;
char ControlBit;
char StartBit;

void setup()
{
    Serial.begin(1200);
}

void loop()
{
    receiveddata();
}

void receiveddata()
{
    Serial.println("Bytes Received: ");

    for (bytePos = 0; bytePos < 1; bytePos++)
    {
        ControlBit = TxData[bytePos];
    }

    for (bitPos = 0; bitPos < 8; bitPos++)
    {
        TxBit = ControlBit & (0x80 >> bitPos);
        // Serial.println(TxBit);
    }

    for (bytePos = 1; bytePos <= 2; bytePos++)
    {
        StartBit = TxData[bytePos];
    }

    for (bitPos = 0; bitPos < 16; bitPos++)
    {
        TxBit = (StartBit) & (0x8000 >> bitPos);
        Serial.print(TxBit);
    }

    Serial.println("");
}

根据您的评论,代码

for (bytePos = 1; bytePos <= 2; bytePos++)
{
    StartBit = TxData[bytePos];
}

应替换为:

StartBit = (TxData[1] << 8) + TxData[2];

重要的是,StartBit 必须定义为 intshort 而不是 char,因为它必须包含 16 位。

在你后面的代码中,你用TxBit计算也没有多大意义。你应该明确预期的目标。