HAM – Programmation d’un bouton VFO USB.

Update 22/09/2020 : mise à jour du script pour le support de CRX-COM ( alt+t, alt+o, alt + l ).

Je vous propose la programmation d’un bouton USB « Cooidea USB Volume Control » en bouton VFO. L’idée est d’utiliser un bouton USB de contrôle de volume pour piloter un VFO radio. Cette idée m’est venue il y a quelques mois et voyant une console remote sur un transceiver SDR « haut de gamme ». J’ai décidé d’investir dans un périphérique identique mais pour l’audio (qui coute 30 euros environ) et ensuite de créer une macro pour le contrôler.

Pré requis : disposer d’un bouton USB de contrôle du volume, ici je suis parti sur un « Cooidea USB Volume Control », n’importe quel bouton USB de contrôle de volume fera l’affaire. On le tourne pour le volume et on appuie dessus pour couper ou pas le son.

Comment ça marche ? Ici mon logiciel « CAT SYSTEM » FLRIG ne dispose pas du support de ce bouton nativement, j’ai donc créé un script « MACRO » qui permet de le faire. Ce script fonctionne avec AUTOHOTKEY qui est un petit langage de macro super pratique.

Afin d’optimiser les choses, je mémorise la position du curseur de souris et la fenêtre active quand le bouton est utilisé afin de ne pas modifier votre fenêtre active et votre souris (je remets tout en place une fois le scroll/commande PTT faite).

1. Installer AUTOHOTKEY :  ( pour nos amis pingouins, utiliser AutoHotkeyX )

Rendez vous ici : https://www.autohotkey.com/

2. Mon script AUTOHOTKEY  « cooidea4Ham.ahk » :

La première étape va être de lancer le logiciel de contrôle CAT SYSTEM ( ici FLRIG ).

Une fois lancé on va repérer 2 choses :
– la position X,Y du digit KHZ ( là où l’on peut avec la souris faire un scroll up/down ).
– la position X,Y du bouton PTT ( là où l’on va cliquer pour passer en émission ).

Pour ce faire, j’ai inclus un mode « configuration » dans le script, vous permettant de récupérer les coordonnées X et Y.
Ensuite on va simplement éditer le script avec ces coordonnées.

C’est ce que je vous propose à l’étape 3.

3. Configurer le script : 

Commencez par installer mon script là ou vous voulez ( il est disponible tout en bas de l’article ).
Ensuite on peut passer à sa configuration :

Editez le script avec votre bloc note favoris :
– passez la variable ci-dessous à 1
– on la passera à 0 une fois la configuration terminée :

;Enable only for coordination conf :
global CfgMode := 1

Ensuite lancez le script (double-clic dessus ou clic-droit : Run script).

Ensuite disposez votre logiciel là ou vous le souhaitez, notez que FLRIG mémorise sa position,
donc il sera de nouveau là lorsque vous le relancerez.

Ici je vous ai indiqué les 2 points que nous allons contrôler avec le bouton,
le digit « Khz » et le bouton « PTT » :

On va cliquer sur la fenêtre de notre logiciel « CAT SYSTEM » ici FLRIG.
– On se place avec la souris sur le digit des Khz dans le logiciel ( voir schéma C1 )
– Puis l’on va avec notre bouton VFO USB, le tourner vers le haut et regarder la popup qui s’affiche ici (juste en dessous du curseur de la souris) :

Current cursor position: 885, 75

– Même chose on va aller avec la souris sur la bouton « PTT » et récupérer les coordonnées X et Y (voir schéma C2 ) :

Current cursor position: 1640, 123

Il ne nous reste plus qu’à configurer le script avec ces valeurs,
Pour ce faire éditez celles-ci :

;Mouse position for Khz control :
; screen1 : 885,75 (flrig in full size top of screen here).
; screen2 : 728,88
global TwcX := 885
global TwcY := 75
;Mouse position for button PTT control :
; screen1 : 1633,123 (flrig in full size top of screen here).
; screen2 : 1317,123
global TwxX := 1633
global TwxY := 123

Enfin on va repasser la variable « CfgMode » à 0, on sauvegarder le script.

Ensuite on ferme et on exécute de nouveau notre script « cooidea4Ham.ahk »,
Et voilà vous pilotez maintenant le VFO via un bouton USB !

Bien sûr si vous utilisez un autre logiciel pour le pilotage (HRD par exemple ou n’importe quel logiciel SDR),
Il vous suffira d’adapter les variables du script :

;Window SDR/CAT class name :
global Twc := "Flrig"

Qui correspond à la valeur « ahk_class » d’AUTOHOTKEY.

4 Autre exemple, pilotez le WEB SDR

Voici un autre exemple pour piloter le SDR WEB avec le bouton USB :  http://websdr.ewi.utwente.nl:8901/
Faite une copie mon script, nommez là par exemple : « WEBSDR.ahk »

Ensuite, lancez le SDR, puis repérez le X, Y ( en activant : global CfgMode := 1  comme je l’ai indiqué avant ),
Pour ce faire lancez alors le script « WEBSDR.ahk », le debug va nous donner la valeur C1 ici :

Fermez le programme (clic droit sur l’icône H en vert dans la barre de tâche),
Editez la variable : CfgMode  et passez là à 0.

Renseignez alors les 2 variables X, Y avec par exemple :
global TwcX := 650
global TwcY := 760

Relancez le script, et voilà vous pouvez piloter le WEB SDR avec votre VFO USB !

73 à tous,
Bastien

PS: Voici mon script (à copier/coller quelque part sur votre PC, par exemple votre bureau)

;-----------------------------------------------------------------
; Control CRX/SDR/FLRIG by F4EYQ
; File			 : cooidea4Ham.ahk
;
; Description 	 : AutoHotkey script to map Volume UP/DOWN to Mousse Whell
; 				   and Mute/Unmute action (press on sound button) to PTT control.
;
; Hardware 		 : Cooidea USB Volume Control
;
; Date 			 : 08/2020
; Update		 : 22/09/2020 add CRX Control short key.
;
;-----------------------------------------------------------------
;Configuration : 
;-----------------------------------------------------------------
;Window SDR/CAT class name  :
global Twc := "Flrig"

;Enable only for coordination conf :
global CfgMode := 0

;Mouse position for Khz control :
; screen1 : 885,75 (flrig in full size top of screen here).
; screen2 : 728,88
global TwcX := 885
global TwcY := 75

;Mouse position for button PTT control : 
; screen1 : 1633,123 (flrig in full size top of screen here).
; screen2 : 1317,123
global TwxX := 1633
global TwxY := 123

;-----------------------------------------------------------------
;Global VARS: 
;-----------------------------------------------------------------
;Transceiver PTT status : 
global TwcTX := 0

;---------------------------
;Configure device mapping : 
;---------------------------
Volume_Up::MousseWheelUpDown("UP")
Volume_Down::MousseWheelUpDown("DOWN")
Volume_Mute::ControlTX()
;---------------------------
ControlTX()
{
	if TwcTX=0
	{
	 Send !t
	 TwcTX=1
	 WinActivate, ahk_class %Twc%
	 ;click on "PTT button"
	 MouseClick, left,%TwxX%,%TwxY%
	 MouseMove, %TwcX%, %TwcY%, 0
	}
	else 
	{
	  Send !t
	  TwcTX=0
	  WinActivate, ahk_class %Twc%
	  ;click on "PTT button"
	  MouseClick, left,%TwxX%,%TwxY%
	  MouseMove, %TwcX%, %TwcY%, 0
	}
}

MousseWheelUpDown(direction)
{
	;get current active window ID and class :
	Awc := WinExist("A")
	WinGetClass, class, A
	
	;need to retreive initial frequency cursor position :
	MouseGetPos,xpos,ypos,id,control
	
	;debug/conf if needed : 
	if(CfgMode=1){
		ToolTip, Current window Class:`n%class%`nCurrent cursor position:`n%xpos%`n%ypos%
	}
	;get current mouse pos:
	;MouseGetPos,xpos,ypos,id,control
	
	;set scroll on the flrig window:
	;WinActivate, ahk_class %Twc%
	;MouseMove, %TwcX%, %TwcY%, 0
	
	if(direction="UP"){
		Send !o
		;Send, {WheelUp}
	}
	
	if(direction="DOWN"){
		Send !l
		;Send, {WheelDown}
	}
	
	;set old position:
	;WinActivate, ahk_id %Awc%
	;MouseMove, %xpos%, %ypos%, 0
}
Control CRX/SDR/FLRIG by F4EYQ