Ichtyomètre - Documentation Technique¶
Copy of
sumaris-app/.agents/rules/ichthyometer.md(rule written for AI coding agents, always applied). Do not edit here: runnpm run site:sync-rulesto update it.
Cette documentation détaille le fonctionnement des ichtyomètres dans l'application SUMARIS, en particulier le modèle à code-barres (Ichthyometer Ruler).
Types d'ichtyomètres¶
L'application supporte plusieurs types d'ichtyomètres via l'interface Ichthyometer :
- Ichthyometer Ruler (Code-barres) : Communique via Bluetooth LE, envoie des codes-barres correspondant à des mesures ou des fonctions.
- Ichthyometer Gwaleen : Modèle spécifique intégré (voir
ichthyometer.gwaleen.ts).
Ichtyomètre à Code-barres (Ruler)¶
L'ichtyomètre à code-barres fonctionne en envoyant des chaînes de caractères (codes-barres) via Bluetooth.
1. Format Physique Historique (ITF)¶
Historiquement, les codes-barres gravés sur les ichtyomètres utilisent le format ITF (Interleaved 2 of 5).
- Format d'encodage : ITF (numérique haute densité).
- Checksum : Utilise un caractère de contrôle basé sur l'algorithme Modulo 10 (pondération 3-1, identique à l'EAN).
- Transmission Bluetooth : Bien que le code physique soit numérique (ITF), le lecteur est configuré pour ajouter un préfixe
Dlors de l'envoi de la donnée à l'application.
2. Mapping Historique (legacy-mapping.json)¶
Le fichier src/assets/data/ichthyometer/legacy-mapping.json définit la correspondance entre les codes-barres reçus (avec préfixe D) et leur signification.
Structure d'une entrée :¶
{
"decimal": 244,
"hex": "F4",
"barcode": "D9454",
"type": "function",
"value": "species",
"label": "ICHTHYOMETER.RULER.FUNCTIONS.SPECIES"
}
decimal: Identifiant numérique unique (0-255).hex: Conversion hexadécimale du champdecimal(2 caractères).barcode: Le code-barres reçu par l'application (ex:D9454).type: Type de donnée (cm,string,function,alphanumerique).value: La valeur traitée par l'application (nombre pour les cm, identifiant pour les fonctions).
3. Logique des Codes-barres (D<NNN><C>)¶
Les codes-barres reçus commencent par D. Le corps numérique NNN et le checksum C suivent les règles suivantes :
- Structure :
D+NNN+C - Algorithme de Checksum : Modulo 10 avec pondération 3-1 depuis la droite (Standard EAN/ITF).
- Logique pour les Fonctions :
- Formule :
NNN = decimal + 701 - Exemple : ESPECE (décimal 244) -> NNN = 945. Checksum(945) = 4. Code reçu :
D9454.
- Formule :
- Logique pour les Mesures (
cm) :- Formule :
NNN = decimal + 1(correspond à la valeur en cm). - Exemple : 15 cm (
decimal=14,NNN=015) -> Checksum(015) = 4. Code reçu :D0154. - Note historique : Les codes-barres entre 14 et 36 cm ont été corrigés dans le mapping logiciel pour respecter strictement cette règle
decimal + 1.
- Formule :
4. Système d'Alias (Combinaison de codes)¶
Pour permettre d'envoyer plusieurs informations en un seul scan (ex: une fonction + un code espèce), l'application supporte un format d'Alias hexadécimal.
Format : D<HEX_FONCTION><HEX_DATA...>¶
Si un code reçu n'est pas trouvé directement dans le mapping, l'application tente de le décomposer par paires hexadécimales.
- Format d'impression recommandé : CODE 128 (obligatoire car l'ITF ne supporte pas les lettres A-F de l'hexadécimal).
- Préfixe :
D - Données : Suite de paires hexadécimales.
Exemple : ESPECE (F4) + "MNZ" (D4, D5, E1)
- Code reçu :
DF4D4D5E1. - Décodage :
F4-> Déclenche la fonction ESPECE.D4,D5,E1-> Groupés en une seule chaîne "MNZ".