먼저 사전에
감사합니다, 당신은 bit shifting의 bitwise operations 및 bit masking를 통해 최상위 비트 (MSB) 또는 최하위 비트 (LSB) 얻을 수 있습니다 :
const word Value = 1000; // Could also be an int or an unsigned int, [0-1023]
byte MSB = Value >> 8; // Right shift
byte LSB = Value & 0x00FF; // Mask
그러나 Arduino 인 Arduino는 다음과 같은 기능을 제공합니다. highByte
및 lowByte
은 각각 값의 MSB와 LSB를 반환합니다.
Serial.Write
을 사용하는 것이 더 빠를 지 모르겠다. Matlab에 많은 양의 데이터를 보내고있는 경우, 호출 횟수를 Serial.Write
또는 Serial.Print
으로 제한하는 것이 가장 좋습니다. 버퍼 (바이트 배열)를 만들고, 그 안에 모든 데이터를 저장 한 다음, 상단을 Serial.Write
으로 전달하면됩니다 (이 함수의 오버로드 된 버전에 대한 설명서 참조).
Matlab 쪽에서는 bitwise functions이라는 동등한 문자가 있습니다. 단지 C의 문자보다 효율적일 것으로 기대하지 마십시오. 그들은 프로토 타이핑 테스트에 유용합니다.
Value = uint16(1000);
MSB = bitshift(Value,-8); % Right shift
LSB = bitand(Value,255); % Mask
당신은 비트 단위 연산 반전하여 2 바이트 값을 "재 조립": : C에서
Value = bitor(bitshift(MSB,8),LSB)
이 단지입니다 예를 들어, 함께 매트랩 위의 C 코드를 재현 할 수 있습니다 (MSB<<8)|LSB
그리고 위의 내용을 Matlab에서 다음과 같이 효율적으로 구현할 수 있습니다 :
Value = MSB*256+LSB