SVXLINK: Savoir lire des valeurs de 1000 à 9999

HTB1ucm0IXXXXXajXVXXq6xXFXXX1Voici une modification pour que Svxlink sache dire les nombres de 1000 à 9999.

Vous allez vous dire, mais pourquoi faire, et bien dans mon cas c’est pour la pression atmosphérique des données météo.
Je n’avais pas vu avant car dans ma vidéo sur ce sujet précedent j’étais en dessous de 1000.

Pour appliquer cette modification, il est nécessaire d’éditer le fichier suivant:
/usr/share/svxlink/sounds/fr_FR/events.d/locale.tcl

Ce fichier a été travaillé par F1SMF en 2011 et depuis, je l’ai également fait évoluer. Il est utile pour améliorer la diction en français des chiffres en autre.

J’ai volontairement fait une ligne par millier pour une meilleure qualité vocale.
Nous utilisons l’index0 (1er caractère de la chaine) puis allons lire la tranche de millier qui lui correspond. Le reste repasse dans la boucle de lecture de chiffre standard.

Si un 0 est en 2ème position il sera ignoré, la lecture des décimales se fera directement.

Il sera bien sûr nécessaire d’ajouter les sons 1000 à 9000.wav dans le repertoire Default.
/usr/share/svxlink/sounds/fr_FR/Default/

Dans votre programme Svxlink, on utilisera la commande playFourDigitNumber suivi de votre variable ou de votre nombre à lire.
Ex: playFourDigitNumber $pression;


code source à insérer dans locale.tcl:

#
# Say the specified three digit number (1000 - 9999)
#
proc playFourDigitNumber {number} {
  if {[string length $number] != 6} {
    puts "*** WARNING: Function playFourDigitNumber received a non four digit number:$
    return;
  }

  set first [string index $number 0];
    if {($first == "1")} {
    playMsg "Default" "1000";
  } elseif {($first == "2")} {
    playMsg "Default" "2000";
  } elseif {($first == "3")} {
    playMsg "Default" "3000";
  } elseif {($first == "4")} {
    playMsg "Default" "4000";
  } elseif {($first == "5")} {
    playMsg "Default" "5000";
  } elseif {($first == "6")} {
    playMsg "Default" "6000";
  } elseif {($first == "7")} {
    playMsg "Default" "7000";
  } elseif {($first == "8")} {
    playMsg "Default" "8000";
  } elseif {($first == "9")} {
    playMsg "Default" "9000";  
  }
  set first [string index $number 1];
    if {($first == "0") || ($first == "O")} {
    playNumber [string range $number 2 5];
    } else {
    playNumber [string range $number 1 5];
    }
 }

Vous pouvez recevoir un email dès la parution d’un article sur le Blog F8ASB.COM, entrez votre mail sur la fenêtre à droite et cliquer sur abonnement. Tous les articles en 1 clic ICI
Ce contenu a été publié dans informatique, radioamateur, Raspberry, Relais F1ZBU /F1ZBV, Svxlink, Uncategorized, avec comme mot(s)-clé(s) , , , , , , , , , , , , , . Vous pouvez le mettre en favoris avec ce permalien.

Une réponse à SVXLINK: Savoir lire des valeurs de 1000 à 9999

  1. F5UII dit :

    Juan

    Il est déconseillé de modifier directement le fichier de logiciel. Svxlink prends en compte une copie de fichier TCL que l’on place dans un sous répertoire local/
    Pour ton exemple il s’agit de modifier une copie du fichier :/usr/share/svxlink/sounds/fr_FR/events.d/local/locale.tcl

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Time limit is exhausted. Please reload CAPTCHA.