Chapter 13 Annexe Communication de données
13.7.1. 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
// crée à partir d'un caractère ASCII, en tant que valeur hexadécimale, au format d'heure,
•
num_2_string
// crée à partir de caractères ASCII, en tant que valeurs hexadécimales, destinés à être
introduits dans un fichier,
•
read_datalogger
// traite les données reçues et les écrit dans un fichier.
13.7.2. Exemple de codage pour interroger l'enregistreur de données
char ahex (char a)
char ahex (char a)
{
char i;
char hexa[16]="0123456789abcdef";
pour (i = 0; i < 16; i++)
if (a == hexa[i])
return (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 total de contrôle : XOR inverse de tous les oct.
// sans total de contrôle et <CR>
pour (i = 0; i < 11; i ++)
bcc = (bcc^chaîne[i]);
Heracell 150i / 240i GP 50159352_B_06-2020
172
Thermo Scientific