バイト配列のデータが正しいかどうかを確認する最良の方法は何ですか?
シリアル接続を介してバイト配列(byte1、byte2、byte3、byte4、errorCheckByteなど)を送信していますが、データを受信したときにデータが正しいことを確認したいと思います。
接続の両端で同じであると判断するために最初の4バイトで実行するのに最適な数学演算は何ですか?それらをすべて一緒に追加する必要がありますか?
たとえば、実際には言語固有の例を探しているわけではありませんが、これはJavaとArduinoに関連しています。
byte byte1 = 5;
byte byte2 = 10;
byte byte3 = 34;
byte byte4 = 122;
byte errorCheckByte = createErrorByte(byte1, byte2, byte3, byte4);
byte myArray[] = {byte1, byte2, byte3, byte4, errorCheckByte}
byte createErrorByte(byte byte1,byte byte2, byte byte3, byte byte4)
{return (byte1 + byte2 + byte3 + byte4);}
送信後、おそらく次を使用して確認できますか?
// Sum bytes received
byte sumBytes = 0;
for (int x = 0; x < 3 ; x++) {sumBytes += myArray[x]}
if (myArray[4] == sumBytes) { // Print message received}
else {
// Discard data
}
より良い、しかし単純なエラーチェックアルゴリズムはありますか?