指定された通信規格RTCMSC1043.1の場合、データを12ビットデータセグメントのペアとしてバイト間で分割する必要があります。したがって、特定のメッセージについて、メッセージタイプ番号を最初のバイトと2番目のバイトの半分に配置する必要があります。次に、2番目のバイトの半分でID整数を開始し、3番目のバイトに進む必要があります。この種のパターンは、メッセージの最後まで続き、20ビット、5ビット、および他のサイズの整数を削り取り、通常は整数値のMSBの最後を埋める0を本質的にカットします。
明確な定義は見ていませんが、ネットワークバイトオーダーで出力する必要があると思います。そのため、ビットをコピーする前に、メモリ内の整数を逆にする必要があります。私はまだcppを初めて使用し、メモリ内の整数を構成する個々のバイトにどのように到達するのか疑問に思っています。バイトにアクセスできる場合は、ビット単位で使用するか、メッセージ用にビットを2バイトから1バイトに分割することができます。
データを追加する前に、メッセージの作成を開始します。
//build message 1002 gps 00111110 1010
char buf1002[BUFFERSIZE];
buf1002[0] = 0x3E; //00111110
buf1002[1] = 0xA0; //10100000
//ref station id 12 bits of 16
//ex unsigned short m = 1100;
//m would be byte2 00000100 byte1 01001100
//buf1002[1] would be 10100100
//buf1002[2] would be 01001100
//reverse bit order for network after building?
参照ステーションはunsignedshortからのものであるため、2バイト整数です。では、どうすればそこから1バイトを読み取ることができますか?メモリロケーションポインタから始めますか?もしそうなら、何ですか?
どんな助けでも大歓迎です。