问题描述
您好,实际上我想组合数组的第二个和第三个字节并分配给变量名称 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 必须定义为 int
或 short
而不是 char
,因为它必须包含 16 位。
在您的代码后面,您使用 TxBit 进行计算也没有多大意义。您应该明确预期目标。