Ichigojamから、sakura.ioモジュールを使って、sakura.ioへ送信電文を作る場合、電文の最後にパリティ値が必要となる。
たとえば、
要素種別 | 引数データ長 | 引数データ1 | 引数データ2 | パリティ値 | ||||||||||||||||||
ch | type | D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 | ch | type | D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 | |||
#21 | 20 | 1 | #69 | T | T>>8 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | #69 | H | H>>8 | 0 | 0 | 0 | 0 | 0 | 0 | P |
の場合、パリティ値は、要素種別~引数データ2D7までの値の全ての排他的論理和となる。
この時のパリティ値の演算式は次のとおり。ちなみにデータが[0]は、省略できるため、
P=(H>>8)^(T>>8)^H^T^#21^20^1^#69^2^#69
となる。
ここで気を付けたいのは、右シフト演算を先に計算させるように()カッコを用いていること。C言語などの演算式は、右シフト演算は、排他的論理和より優先順位が上位なのだが、Ichigojamは、シフト演算と論理演算が同位らしく、()がないと、左から順に演算されてしまって、正しい値が計算できなくなる。(わたしはこれでずいぶんハマった…)