微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决从数组中组合两个字节的值并将其放入一个并打印出来

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

#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 进行计算也没有多大意义。您应该明确预期目标。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。