シリアル ライン経由でデータを送信していますが、crc16 の計算を除いて、(コードではなく) bash スクリプトを介してほぼすべてを実行できます。コードではなくスクリプトですべてを実行できれば、構成が非常に簡単になります (特に現場で)。
私はコマンドで大丈夫ですが、トリッキーなものになるとすべての能力を失います.
だから私の質問は、誰かが私のためにこのCRC16を書き直すことができますか?
これはウィキペディアから取得したアルゴリズムであり、コード内のアルゴリズムです。
uint16_t Encoder::checksum(std::string thestring)
{
uint8_t d, e, f;
uint16_t c, r, crccalc;
c = 0xffff;
for (unsigned int i = 0; i < thestring.length(); i++)
{
d = thestring[i];
e = c ^ d;
f = e ^ (e << 4);
r = (c >> 8) ^ (f << 8) ^ (f << 3) ^ (f >> 4);
c = r;
}
c ^= 0xffff;
crccalc = c;
return crccalc;
}
C++ コードから簡単に実行可能ファイルを作成し、それを stdin にフィードするだけですが、これを bash 内に含めることができれば本当に便利だと思います。
私が知らないもう1つのことは、変数のサイズが正しいことを確認する方法です。どうすれば 16 ビット整数を確実に取得できますか?
どんな助けでも素晴らしいでしょう。オンラインで小さなスクリプトを見つけましたが、信用できませんでした。ここで答えられて本当に良かったと思いました。