DTMF Status

Le but du projet est de réaliser une application qui permette de générer et de décoder les séquences de caractères DTMF en utilisant la carte son du PC.

Le projet en est à sa première version, n'hésitez pas à signaler les éventuels bugs qui seraient passés au travers des tests.

Télécharger : Télécharger l'éxécutable (version 1.2 du 16/06/2012).

NB: La bibliothèque graphique MS DirectX doit être installée sur le PC (implicite sur Vista et Windows 7).

Le programme a été conçu pour Windows XP et ultérieurs, mais il devrait fonctionner sous Windows 95/98 (à condition que DirectX soit installé).

Log des versions :

16/06/2012 V1.2 : Changements fonctionnels légers

  • Amélioration de l'affichage des données reçues (mise en page, formattage des données).
  • Ajout d'un libellé associé aux séquences permettant d'avoir des séquences identiques pour des relais différents (interprétation différentes).

10/06/2012 V1.1 : Changements fonctionnels

  •             Amélioration du décodage avec meilleure prise en compte du bruit de fond (testé avec bruit blanc)
  •             Passage de la fréquence d'échantillonage à 16000 ech/sec.

08/06/2012 V1.0 : Changements fonctionnels

  •             Gestion du seuil minimum de détection (l'utilisateur gère un curseur)
  •             gestion du niveau moyen de bruit pour meilleure détection des fréquences
  •             Passage de la fréquence d'échantillonage à 11000 ech/sec.

02/09/2006 Changements du système de décodage

  •             Filtrage numérique butterworth d'ordre 3 pour les huit fréquences
  •             Ajout de l'interprétation des formules
  •             Divers changements de présentation.

20/08/2005 : Si la commande est renvoyée par le système distant, l'écho est ignoré et on reste en attente de la réponse.

 


Fonctionnement du programme DTMF Status

Le programme sait envoyer une séquence DTMF sur la sortie son, et peut, ensuite, passer en attente d'une réponse donnée sous la forme d'une autre séquence DTMF.

Cette séquence reçue est ensuite décodée, en fonction de paramètres situés dans le fichier de configuration DTMFStatus.ini

Exemple : Interrogation du nouveau relais UHF du Petit-Ballon : Demande de status

Lancer le programme, sélectionner la séquence DTMF à envoyer au relais dans la 'combo box' en bas à droite (*DDD3# est la seule qui soit définie pour le moment).

Si la séquence DTMF est envoyée par un autre moyen, le programme va le détecter (s'il l'entend), et va passer automatiquement en attente de la réponse (attention il faut 500ms sans code DTMF pour que DTMF Status puisse déterminer qu'une séquence est finie).

(cliquer sur l'image pour agrandir)

 

Cliquer sur le bouton Gen.DTMF, le programme envoie la séquence DTMF sur la sortie son, et passe alors en mode attente.

Le relais envoie sa réponse (en principe :) Pour tester, j'ai généré une séquence valide : voit copie d'écran ci-dessous.

(cliquer sur l'image pour agrandir)

Le programme a décodé la séquence et l'a affichée dans la fenêtre texte à droite : Fréquence => 431,675, Shift -1600, etc....

Certaines valeurs sont interprétées par des formules (paramétrées dans le fichier ini).

NB: pour que le décodage se fasse bien, le niveau sonore doit être bien ajusté, règler le niveau de manière que les crêtes arrivent à peu près en haut de l'écran, mais veiller à ne pas saturer.


Définition du fichier de configuration :

Configuration Commentaires  

[SEQ_*DDD3#_Relais VHF]



; Longueur de la séquence à recevoir

LgSeq=14



; Zone1

Z1=Fréquence:,bin,0,24







; Zone 2

Z2=Shift,binC,24,24



; Zone 3

Z3=Mode:, bin, 48, 2

z3_v1=0,Mobile

z3_v2=1,Relais

z3_v3=2,Base téléphone

; Zone 4

Z4=Puissance:, bin, 51, 1

z4_v1=0,Puissance réduite

z4_v2=1,Puissance maximum

; Zone 5

Z5=Squelch:, bin, 52, 1

z5_v1=0,dépend du signal SQ

z5_v2=1,dépend du niveau HF

; Zone 6

Z6=Inibit_SQ:, bin, 53, 1

z6_v1=0,Squelch actif

z6_v2=1,Son toujours audible



; Zone 7

Z7=Ouverture du relais:, bin, 54, 1

z7_v1=0,avec ton. 1750

z7_v2=1,avec DTMF

 ; Zone 8

  Z8=Seuil Squelch;, bin, 56, 8



  ; Zone 9

  Z9=Indicateur défaut;, bin, 64, 8



  ; Zone 10

  Z10=CLI:, bin, 72, 8, (Z10*125/64)-128



  ; Zone 11

  Z11=PINV:, bin, 80, 8



  ; Zone 12

  Z12=IBAT:, bin, 88, 8,(500*Z12)/((((Z14*50)/64)-20)*13.824+64*54)



  ; Zone 13

  Z13=TP28:, bin, 96, 8



  ; Zone 14

  Z14=TEMP:, bin, 104, 8, (Z14*50)/64



  ; Zone 15

  Z15=PDIR:, bin, 112, 8



  ; Zone 16

  Z16=VBAT:, bin, 120, 8, 10+(Z16*5/64)



  ; Zone 17

  Z17=TP29:, bin, 128, 8

Entre crochets : SEQ suivi de la séquence d'interrogation DTMF à envoyer vers la carte son et du libellé.

Une seule séquence est définie dans la configuration actuelle, mais on peut en définir plusieurs.

LgSeq=14 indique qu'on attend en réponse à *DDD3# une séquence DTMF de 14 caractères



Suivent ensuite les descriptions des différentes zones composant la séquence à recevoir (et à décoder).

Z n° = Libellé de la zone, mode de codage, position dans la chaine (en bits), longueur (en bits) .

Libellé de la zone : Il sera affiché lors du décodage, suivi de la valeur décodée.

Mode de codage : Pour l'instant deux modes sont définis:

- bin : Interprétation en binaire, exemple : 0101FFh = 1*2^16+1*2^8+255 = 66047

- binC : Même chose, mais signé (complément à 1).

Définition de libellés pour des valeurs particulières



Z n° _ v n° = Valeur, Libellé

Exemple Z3_v1 : Zone 3 valeur 1

On peut définir plusieurs valeurs particulières pour chaque zone, Z3_v1, Z3_v2, Z3_v3, etc...

Valeur : Valeur particulière

Libellé : Libellé correspondant à la valeur citée.

Exemple : Pour la zone Z4=Puissance,si on décode la valeur 0, on affichera que le relais fonctionne en 'Puissance Réduite', si on décode la valeur 1, on affichera 'Puissance maximum'.



Dans ce cas (Z4), il n'y a pas d'autres valeurs possibles, mais au cas où la valeur n'est pas définie, elle sera affichée sans libellé.

 

 

Tags: 

Syndicate