Unity3D, Port-série, Arduino : comment augmenter la rapidité de transmission.

Bonjour,

Je commence par décortiquer ton code supercc. Il y plain de choses que je ne connais pas et qui m’empêche de comprendre. Aussi seriez vous m'orienter vers un cours sur le CRC abordable par un débutant. Jusqu'à présent j'ai trouvé des explications, des exemples mais je ne comprend pas. Sans doute qu'il me manque des bases.
Voici mes questions pour vous rendre compte de mon niveau :

byte j, crc = 0;

c'est un peu comme:

byte j = 0;
byte crc = 0 ;

Si non le j n'est jamais remis à 0 lors de l'appel de la fonction GetCRC ?
D'ailleur La fonction c'est une static byte. Cela fait quoi ? Jusqu’à présent j'utilisais que des "void" quelque chose.

//////////////////////////////

CRC7_POLY = 0x91;

Ca veux dire quoi CRC7_POLY
Je ne connais 0x91 c'est un format, un nombre ?

/////////////////////////////

crc ^= (byte) message*;*
J'applique un "xor au byte message et j’attribue cette valeur au byte crc. Pour "i" = 1 je lit le byte 1 du message. J'ai soit 1 soit 0. Mais comment fonctionne ce xor,
d'habitude il y a un tableau de ce type:
S A B
0 0 0
1 1 0
1 0 1
0 1 1
La j'ai rien à comparer...
///////////////////////////////
if ((crc & 1) == 1)
si ((crc et 1) sont égale à 1 )
Pourquoi "& 1)" ?
///////////////////////////////
crc >>= 1;
Je me décale de 1 vers la droite, oui mais il resemble a quoi mon CRC ?
à ca 00000000 ?
Donc je me décale la 0[0]00000 ?
///////////////////////////////
A la suite tu créer une génération aléatoire de position. A moi de modifier cette partie pour piloter mes servos.
///////////////////////////////
Passage du CRC en Hexa
Je croyais que ToString c'était une pour une chaîne de caractère.
string crcHex = crc.ToString("X");
if(crcHex.Length==1) crcHex="0"+crcHex;
la chaîne de caractère crcHex = le byte crc transformé en String au format ("X")
Je ne comprend pas pa le ("X").
Si la taille de crcHex est de 1 caractère, le crcHex est transformé à "0"+crcHex
Mais ca donne "0" + "1 caractère" ?
///////////////////////////
msg=crcHex+" "+msg;
Pourquoi tu met un espace, c'est pris en compte dans le calcule de CRC ?
///////////////////////////
WriteLine(msg);
C'est quoi la différence avec Write(msg) ?
////////////////////////////
(on retire '\n' final). avec .TrimEnd(); ?
////////////////////////////
if(response != "0") {
Console.WriteLine ("Erreur !");
Environment.Exit(1);
}
Pourquoi on arrête le programme si il y a une erreur, c'est pas mieux de renvoyer le message au moins 3 fois ?
C'est pour cette raison que ton code n'est pas dans "le standard" ?
///////////////////////////
// pour une attente entre les messages
//Thread.Sleep(500);
Thread.Sleep(500); c'est un peu comme un delay ? j'ai pas cette bibliothèque sur unity.
Je suis obligé d'utiliser des co-routines ou des Time.time ...
Voilà, ça en fait un paquet de questions désolé. Mais ca m'aideras à aborder le CRC16 de hbachetti.
Je suis dans le dure je croix =) à bientôt.