我正在爲我的arduino編程曼徹斯特編碼。在Arduino上實現曼徹斯特編碼
這意味着一個1位由10表示,並且零被01.
1111表示將在manachester代碼10101010。
我的計劃(在Arduino的C++)編碼的字符數組曼徹斯特代碼如下所示:
//Output needs to be twice as big as input
void encodeManchester(char * input, char * output, int size) {
for(int i=0; i<size; i++) {
for(int p=0; p<2; p++) {
int pos = i*2+(p);
output[pos] = 0b00000000;
for (int j=0; j<4; j++) {
int actval = input[i]>>(7-(j+4*p));
if((actval & 0b00000001) == 0b00000001) {
output[pos] = output[pos] | (0b10<<(j*2));
} else {
output[pos] = output[pos] | (0b01<<(j*2));
}
}
}
}
}
我的解碼器(PC上的Python)的樣子:
def manDecode(data):
ret = []
for i in range(0, len(data)/2):
ret.append(0b00000000);
for p in range(0, 2):
print(bin(data[i*2+p]));
for j in range(0, 4):
part = (data[i*2+p] >> (6-(j*2))) & 0b11
if part == 0b10:
ret[i] = ret[i] | (0b10000000 >> (j+p*4))
return ret;
,但我得到曼徹斯特代碼中的奇怪值如:0b11110000或0b1111111。他們來自哪裏?