12
Communication de données
Exemple de codage de l'enregistreur de données
Fonctions d'interrogation de l'enregistreur de données
Dans l'exemple de codage suivant permettant de lire l'enregistreur de données, six fonctions sont
utilisées :
• ahex
// transforme le caractère ASCII reçu en un caractère hexadécimal,
• send_telegramm
// envoie une demande à l'enregistreur de données,
• get_telegramm
// reçoit une réponse émise par l'enregistreur de données,
• time_2_str
// utilise une valeur hexadécimale pour créer des caractères ASCII au format heure,
• num_2_string
// utilise des valeurs hexadécimales pour créer des caractères ASCII à enregistrer dans un fichier,
• read_datalogger
// traite les données reçues et les écrit dans un fichier.
Exemple de codage pour interroger l'enregistreur de données
char ahex (char a)
char ahex(char a)
{
char i;
char hexa[16]="0123456789abcdef";
for (i = 0; i < 16; i++)
return 0;
}
send_telegramm
void send_telegramm(char *p)
{
char string [15];
unsigned char bcc = 0xFF;
char i;
// Copier télégramme
strncpy (&string[0], „?:xxxx:00::00\r", 14);
// Insérer adresse à 4 chiffres
strncpy (&string[2], p, 4);
// Calculer le total de cont. : XOR inverse de tous les octets
// sans total de contrôle et <CR>
for (i = 0; i < 11; i ++)
// Copier le total de contrôle
string[11] = hexa(bcc/16);
string[12] = hexa(bcc%16);
HERA
12-16
CELL VIOS
if (a == hexa[i])
return (i);
bcc = (bcc^string[i]);
160i / 250i CR
Thermo Scientific