Si tout le monde connait (ou devrait connaître) le lecteur de code-barres HP 82153A, il me semble que peu savent qu'il en existe deux versions (ou révisions) : tous les deux ont la même référence HP 82153A. Comment les différencier ? En les connectant à votre HP-41 favorite et un petit CATALOG 2 lève votre insoutenable doute.
J'ai par hasard reçu un WAND lors de l'achat d'un lot de matériel HP (le WAND n'était même pas mentionné !), et par curiosité j'ai vérifié la version et BINGO, c'est un 1F ! J'avais déjà l'autre version (1E), et avais écrit quelques macros Excel pour générer tous les types de code-barres ... pour la version 1E (voir l'introduction Environnement de programmation et génération de code barres dans ce forum, ou directement la rubrique Bar Codes Generation sur mon site). Je connaissais donc l'existence de cette seconde version, car le manuel "Creating Your Own HP-41 Bar Code" d'HP y fait référence, mais je n'ai pratiquement pas trouvé d'autres informations sur Internet ! :?
Selon ce manuel, la version 1F reconnait trois type de code-barres supplémentaires, fondamentalement la version séquencée des trois code-barres de donnée:
1. Type 9 : Données numériques ordonnées
2. Type 10 : Données alphanumériques ordonnées, en mode remplacement (replace)
3. Type 11 : Données alphanumériques ordonnées, en mode ajout (append)
Dans tous les cas, dans l'entête, il faut indiquer le numéro d'ordre, avant les données.
Ces types de code-barres ne trouvent leur utilité qu'avec la fonction WNDDTX, où l'on spécifie, dans X, le premier et dernier registre mémoire à charger. En lecture directe, ils se comportent comme leurs homologues sans numéro d'ordre (type 6, 7 et 8 respectivement). Par contre, si on essaie de les lire avec un lecteur de première génération (1E donc), on obtient un message d'erreur. Et si vous tentez de lire un code-barre hors séquence, vous obtenez le message d'erreur "SEQ ERR".
Lorsque j'ai codé ces trois types supplémentaires, j'ai noté quelques détails (non mentionnés dans le manuel) :
- 1. Le numéro doit commencer à 0 (dans ma macro, en argument, on commence logiquement à 1, et je soustrais donc 1 au codage).
- 2. Le numéro d'ordre étant codé sur 12 bits, l'entête (header) est plus long d'un octet par rapport à leurs homologues non ordonnés, et puisqu'il semble que la longueur maximale d'un code-barre de donnée est de 16 octets, le nombre maximum de caractères est de 13 au lieu de 14. Dans les données alpha non ordonnées, l'entête contient le "checksum" (2 octets), le type (7 ou 8 sur 4 bits) et le nombre de caractères (4 bits). Dans les données alpha ordonnées, il n'y a plus de nombre de caractères (manifestement, le WAND a appris à compter tout seul ), et ces 4 bits sont remplacés par les 12 bits du numéro d'ordre, d'où un octet supplémentaire.
- 3. Le numéro d'ordre doit correspondre au numéro d'ordre du registre dans lequel il doit être enregistré. Ainsi, si dans X vous avez 5,01 (6 registres à charger, dans les mémoires 5 à 10), et que voulez y lire d'abord un nombre (1), ensuite une chaine alphanumérique ("HP-41CX FORUM", puis à nouveau un nombre, ... il faut coder :
- 1. Type 9, n° d'ordre 1 (ou plutôt 0), donnée numérique 1 : dans le premier registre indiqué : mémoire 5
- 2. Type 10, n° ordre 2, donnée alphanumérique "HP-41CX FORUM" : dans les registres 2, 3 et 4 (mémoires 6 à 8 ) car il faut trois registres pour enregistrer 13 caractères
- 3. Type 9, n° d'ordre 5 , donnée numérique 2 : dans le 5ème registre : mémoire 9 ! Puisque la lecture précédente à nécessité 3 registres et non 1, le numéro d'ordre suivant doit être incrémenté de 3 et non de 1.
- ...
Pierre.
PS: Je ne sais si c'est par jalousie, mais depuis, mon premier lecteur fait le mort !
Il est bien alimenté (la lumière s'allume), mais il n'est plus visible dans le CATALOG 2 ! Il me semble avoir vu ce symptôme quelque part, probablement sur le site "The Museum of HP Calculators"