目的
グローバル TX 配列と、この配列を介して進行する必要がある CRC 関数があります。CRC 関数は最初のバイトを処理しないでください。これを避けるために、TX++ を実行して配列をインクリメントしようとしています。これが問題を引き起こしています。
問題
以下のコードを簡単に見てください。
void Send_To_Manager(void)
{
TX[0] = 0x55;
TX[1] = 0x00;
TX[2] = 0x01;
TX[3] = 0x00;
TX[4] = COMMON_COMMAND;
TX++;
TX[5] = CRC8(TX,4);
TX[6] = CO_RD_VERSION;
TX += 5;
TX[7] = CRC8(TX,1);
TX -= 6;
UART_TX(8);
}
TX 配列の最初のバイトの CRC8 関数をブラインドしたいと思います。TX++ を実行することで、TX[0] が 0x00 になることを期待しています。しかし、私はエラーが発生しています:
エラー: インクリメントする型引数が間違っています
TX += 5 のエラーも発生しています。および TX -= 6 as:
エラー: 割り当てに互換性のない型
私はこれで遊んだので、代わりに関数に次のような配列がある場合:
void Send_To_Manager(unsigned char data[100])
{
data++;
}
上記は意図したとおりに機能します。
質問
- グローバル配列ではなく、関数ベースの配列に対してこれを行うことができるのはなぜですか?
- グローバル配列に対してこれを行いたい場合、どうすればよいですか?
- 上記の目的をどのように達成したいですか?
ありがとうございました。