http://reprap.org/wiki/G-code#.2A:_Checksum
int cs = 0; for(i = 0; cmd[i] != '*' && cmd[i] != NULL; i++) cs = cs ^ cmd[i]; cs &= 0xff; // Defensive programming...
テストコード
#include <stdio.h> int main(){ int cs = 0; char *cmd = "N380 G1 X89.979 Y92.963 E317.8971"; for(int i = 0; cmd[i] != '*' && cmd[i] != NULL; i++) cs = cs ^ cmd[i]; cs &= 0xff; printf("checksum: %d\r\n",cs); return 0; }
結果
$./a.out checksum: 90 #->ok