你好,实际上我想组合数组的第二个和第三个字节,并分配给变量名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进行计算也没有多大意义。你应该明确预期目标。