Accueil
Accueil

Bienvenue invité ( Connexion | Inscription )

6 Pages V < 1 2 3 4 5 > »   
Reply to this topicStart new topic
> [SIOC], Keyboard emulator
TiTiVEAF
post 19 Mar 2011, 13:47
Message #21



 


Messages : 4
Inscrit : 19/03/11
Membre n° 3,772

Bonjour à tous,

je suis TiTi de la VEAF, et certains ici me connaisse. Je fais un pit de F16, et j'ai un soucis de taille avec SIOC et l'émulation clavier...

Je travaille pour le moment avec l'émulation clavier de SIOC, et non l'USBKey

TOUS mes codes claviers assignés entre #1 et #99 dans le sioc.ini fonctionnent.
- IOCP détecte bien un basculement de switch, et génère le code demandé
- si j'affiche un fichier texte, le code clavier demandé est bien restitué...

Cependant, lorsque je demande la génération d'un code > ou = à 100, c'est le bazar :
- IOCP détecte bien un basculement de switch, et génère le code demandé (là çà va !!)
- si j'affiche un fichier texte, je n'ai rien...

J'ai réessayé plusieurs fois, et chaque génération de key >=100 foire....
J'ai cherché du côté du nom de la fenêtre active (window=...), mais pas mieux

Pouvez vous m'aider ???

merci
TiTi
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
gillesdrone
post 19 Mar 2011, 17:30
Message #22






Messages : 6,185
Inscrit : 24/03/07
Lieu : Sendets 64320
Membre n° 1,668

peux tu m'envoyer ton fichier sioc.ini ainsi que ton SSI ? que je regarde


je pourrais regarder cela , j'ai aussi mis quelques émulation clavier dans mon sioc.in et SSI , si je peux t'aider tant mieux wink.gif

--------------------
Image IPB
http://gilles.guesnel.free.fr
ma chaine
 menacer l' Ours dans son repère, l' Aigle pourrait y laisser quelques plumes

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
coolhands
post 27 Mar 2011, 13:19
Message #23






Messages : 575
Inscrit : 17/12/04
Lieu : Metz
Membre n° 39

Bonjour tout le monde,
Je déterre se sujet car j'ai besoin d'un coup de main concernant la prog des fonctions spéciales.
Dans la liste du keyboard emulator du sioc on a bien les touches SHIFT, CTRL, ALT mais on ne précise pas si c'est la gauche ou la droite.
Je cherche à programmer la séquence d’éjection sur l'entrée de ma mastercard 41 avec la combinaison de touche SHIFT Gauche + e + e + e et je ne comprend pas comment faire pour justement différentier le SHIFT gauche du droit.
J'ai déjà essayer avec LOIOCP mais il ne comprend pas la commande de touche multiple.
De plus j'aimerais savoir si il y a la possibilité de programmer un appuis de touche prolongé, exemple SHIFT E maintenu pendant 2 secondes.

Merci
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Maraudeur
post 27 Mar 2011, 17:06
Message #24




Commandant de la 92nd Kodiak AF

Indicatif : JR-22
Messages : 4,198
Inscrit : 4/12/04
Lieu : Monnaie
Membre n° 17

Pour l'éjection, j'ai codé comme suit dans mon SSI:

Var 0039, name EJECT, Link IOCARD_SW, Input 39
{
IF &EJECT = 1
{
V0999 = DELAY 1042 ,10
V0999 = DELAY 1042 ,10
V0999 = DELAY 1042 ,10
}
}

Pour ton autre problème de différenciation, j'ai retrouvé ceci:

Image attachée

Cela devrait répondre à ton problème puisque les Shift, Ctrl, et autres ont bien un code différent entre gauche et droite.

A toi de faire les additions.... whistling.gif

--------------------
Image IPB
Cerbro Tvo Utere! Sin Minvs, Parietes Asperget...

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Maraudeur
post 27 Mar 2011, 17:17
Message #25




Commandant de la 92nd Kodiak AF

Indicatif : JR-22
Messages : 4,198
Inscrit : 4/12/04
Lieu : Monnaie
Membre n° 17

En revanche, pour ma part, je suis en train de me débattre avec les fonction CALL et son associé SUBROUTINE

En fait, je souhaite faire un CALL Nom_Subrouttine, argument
ensuite je souhaite que SUBROUTINE récupère cet argument (un chiffre) et on l'utilise dans la subroutine.

--------------------
Image IPB
Cerbro Tvo Utere! Sin Minvs, Parietes Asperget...

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
KaTZe
post 27 Mar 2011, 17:19
Message #26






Indicatif : RW-24
Messages : 1,589
Inscrit : 18/11/07
Lieu : Villelaure
Membre n° 2,712

Puis je poser une question, pourquoi passez vous par l'émulation de touche au lieu d'envoyer la commande directement à LockOn

CODE
Var 0900, name SW_Eject, Value 1     // Ejection
{
  &LOCKONCMD = 83    
  &LOCKONCMD = 83    
  &LOCKONCMD = 83    
}


Miaou smile.gif

--------------------
120th Black Kite : "Mochibus et Pollutis"
Image IPB
M-05 KaTZe

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Maraudeur
post 27 Mar 2011, 17:26
Message #27




Commandant de la 92nd Kodiak AF

Indicatif : JR-22
Messages : 4,198
Inscrit : 4/12/04
Lieu : Monnaie
Membre n° 17

Parce que je programme directement dans le SIOC et pas avec le LUA ni les scripts made in Lecréole innocent.gif

--------------------
Image IPB
Cerbro Tvo Utere! Sin Minvs, Parietes Asperget...

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
KaTZe
post 27 Mar 2011, 17:28
Message #28






Indicatif : RW-24
Messages : 1,589
Inscrit : 18/11/07
Lieu : Villelaure
Membre n° 2,712

@Marau un exemple de subroutine

CODE
Var 0025, name QFE     // Hauteur QFE au dessus du sol (cm)
{
  IF &QFE < 2000
  {
    &QFE_Low_Led = 1         // Low altitude Var 0725
  }
  ELSE
  {
    &QFE_Low_Led = 0    
  }
  CALL &QFE_Range, &QFE     // Envoie de la donnée au calcul d'ILS
}


-------

CODE
Var 0263, name QFE_Range, Link SUBRUTINE     // Conversion QFE en % dans une bande 0-400
{
  L0 = &QFE_Range    
  L0 = L0 / 400
  L0 = LIMIT 0 ,100 ,0
  L0 = 100 - L0
  &QFE_pct = L0    
}


1> Je récupère l'altitude Radar depuis l'export LockOn (variable QFE)
2> Je teste si l'alti radar est inférieure à 20m (pour allumer la lampe de décision : QFE_Low_Led
3> J'envoie la variable QFE, à la subroutine "QFE_Range", qui va me calculer le pourcentage d'échelle "QFE_pct" pour mon panel ILS (c'est une échelle verticale graduée de 0 à 400 metres)

Voilà, n'hésite pas si tu as des questions

Miaou wavetowel2.gif

Ce message a été modifié par KaTZe - 27 Mar 2011, 17:48.

--------------------
120th Black Kite : "Mochibus et Pollutis"
Image IPB
M-05 KaTZe

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
KaTZe
post 27 Mar 2011, 17:47
Message #29






Indicatif : RW-24
Messages : 1,589
Inscrit : 18/11/07
Lieu : Villelaure
Membre n° 2,712

CITATION(Maraudeur @ 27 Mar 2011, 18:26) *

Parce que je programme directement dans le SIOC et pas avec le LUA ni les scripts made in Lecréole innocent.gif


?? Ben je n'utilise plus non plus les scripts de LeCreole (plus de serveur UDP).

Dans Sioc (comme indiqué si dessus) j'envoie le numéro de la commande à LockOn sur la variable LOCKONCMD
(qui est remise à zero dans la foulée)

CODE
Var 0001, name LOCKONCMD     // Commandes LOCKON
{
  &LOCKONCMD = 0    
}


Et dans le programme d'export de FC, j'écoute cette variable V0001

CODE
    KD_BeforeNextFrame=function(self)
        recupInfo()
    end,


et
CODE

function recupInfo()
    
    -- Check for data/string from the SIOC server on the socket
    -- logData("*** Fonction recupInfo activated","\n")

    local messageRecu = c:receive()
    
    if messageRecu then
        --logData(" ", "\n")        
        --logData("---Log: Data recu de SIOC-----", "\n")
        
        local s,l,typeMessage = string.find(messageRecu,"(Arn.%w+)");
        typeMessage = tostring(typeMessage);
        
        if typeMessage == "Arn.Resp" then
            --logData("Message type Arn.Resp-----", "\n")
            --------------------------------------------------------
            -- Type = Arn.Resp:                                   --
            --------------------------------------------------------
            
            -- extraction du message
            -- (message type par exemple :1=3:0=23:6=3456)
            local debut,fin,message = string.find(messageRecu,"([%d:=-]+)")
            --logData(message)
            -- longueur du message
            local longueur
            longueur = fin - debut
            -- logData(longueur)
            -- découpe du message en commande et envoi à lockon
            -- (commandes type 1=3  0=23  6=3456)
            
            local commande,Schan,chan,Svaleur,valeur,i,a,b,c,d,e,f,lim
            lim = 0

            while lim < longueur do
                a,b,commande = string.find(message,"([%d=-]+)", lim)
                --logData(commande)
                c,d,Schan = string.find(commande, "([%d-]+)")
                chan = tonumber(Schan)
                --logData(string.format(" Offset = %.0f",chan,"\n"))
                e,f,Svaleur = string.find(commande, "([%d-]+)",d+1)
                valeur = tonumber(Svaleur)
                --logData(string.format(" Valeur = %.0f",valeur,"\n"))
                
                if chan ==1 and valeur > 0 then
                        
                    -- Envoi à LockOn
                    LoSetCommand(valeur)
                
                end
                                
                lim = b + 1
            end
            
        else
            --logData("---Log: SIOC Message Incorrect; non type Arn.Resp; Message Ignoré -----", "\n")
        end
    end
end


(logdata est le sous programme de debuggage (mis ici en commentaire).

Miaou wavetowel2.gif

Ce message a été modifié par KaTZe - 27 Mar 2011, 17:51.

--------------------
120th Black Kite : "Mochibus et Pollutis"
Image IPB
M-05 KaTZe

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Maraudeur
post 27 Mar 2011, 17:47
Message #30




Commandant de la 92nd Kodiak AF

Indicatif : JR-22
Messages : 4,198
Inscrit : 4/12/04
Lieu : Monnaie
Membre n° 17

Oui, merci Katze, en fait j'ai réfléchi au problème en écrivant le post, et j'ai trouvé la solution en même temps:
// *****************************************************************************
// * Config_SIOC ver 3.7B1 - By Manolo Vélez - www.opencockpits.com
// *****************************************************************************
// * FileName : Test Datalink Gillesdrone.txt
// * Date : 27/03/2011



Var 0110, name SIOCKEYS, Link KEYS // Emulateur KEYS
{
&SIOCKEYS = 0
}

Var 0117, name Freq_Data_2, Value 0 // Init Digit 2 FreqData

Var 0118, name Freq_Data_3, Value 0 // Link 3 Freqdata

Var 0119, name Freq_Data_4, Value 0 // Link 4 FreqData

Var 0121, name Freq_Data_6, Value 0 // Init Digit 6 FreqData

Var 0123, name RESET_127500, Link IOCARD_SW, Input 4 // Switch to default 1275.00
{
IF &RESET_127500 = 1
{
&XXoooo = 12
&ooXooo = 7
&oooXoo = 5
&ooooXX = 0
}
}

Var 0125, name XXoooo, Link IOCARD_DISPLAY, Digit 205, Numbers 2 // Afficheur XXoooo

Var 0126, name ooXooo, Link IOCARD_DISPLAY, Digit 204, Numbers 1 // Afficheur ooXooo

Var 0127, name oooXoo, Link IOCARD_DISPLAY, Digit 203, Numbers 1 // Afficheur oooXoo

Var 0129, name ooooXX, Link IOCARD_DISPLAY, Digit 201, Numbers 2 // Afficheur ooooXX

Var 0133, name UP_XX0000, Link IOCARD_SW, Input 22 // CENT_Mil UP
{
IF &UP_XX0000 = 1
{
IF &XXoooo = 13
{
&XXoooo = 22
CALL &Send_Command, 24
}
ELSE
{
IF &XXoooo = 39
{
&XXoooo = 12
CALL &Send_Command, 24
}
ELSE
{
&XXoooo = &XXoooo + 1
CALL &Send_Command, 24
}
}
}
}

Var 0137, name DOWN_XX0000, Link IOCARD_SW, Input 19 // CENT_MIL DONWN
{
IF &DOWN_XX0000 = 1
{
IF &XXoooo = 12
{
&XXoooo = 39
CALL &Send_Command, 24
}
ELSE
{
IF &XXoooo = 22
{
&XXoooo = 13
CALL &Send_Command, 24
}
ELSE
{
&XXoooo = &XXoooo - 1
CALL &Send_Command, 24
}
}
}
}

Var 0130, name UP_ooXooo, Link IOCARD_SW, Input 108 // MIL UP
{
IF &UP_ooXooo = 1
{
IF &ooXooo = 9
{
&ooXooo = 0
CALL &Send_Command, 12
}
ELSE
{
&ooXooo = &ooXooo + 1
CALL &Send_Command, 12
}
}
}

Var 0134, name DOWN_ooXooo, Link IOCARD_SW, Input 115 // Decrease ooXooo
{
IF &DOWN_ooXooo = 1
{
IF &ooXooo = 0
{
&ooXooo = 9
CALL &Send_Command, 12
}
ELSE
{
&ooXooo = &ooXooo - 1
CALL &Send_Command, 12
}
}
}

Var 0132, name UP_oooXoo, Link IOCARD_SW, Input 3 // UP_oooXoo
{
IF &UP_oooXoo = 1
{
IF &oooXoo = 9
{
&oooXoo = 0
CALL &Send_Command, 11
}
ELSE
{
&oooXoo = &oooXoo + 1
CALL &Send_Command, 11
}
}
}

Var 0136, name DOWN_oooXoo, Link IOCARD_SW, Input 8
{
IF &DOWN_oooXoo = 1
{
IF &oooXoo = 0
{
&oooXoo = 9
CALL &Send_Command, 11
}
ELSE
{
&oooXoo = &oooXoo - 1
CALL &Send_Command, 11
}
}
}

Var 0131, name UP_ooooXX, Link IOCARD_SW, Input 113 // Increase ooooXX
{
IF &UP_ooooXX = 1
{
IF &ooooXX = 75
{
&ooooXX = 0
CALL &Send_Command, 23
}
ELSE
{
&ooooXX = &ooooXX + 25
CALL &Send_Command, 23
}
}
}

Var 0135, name DOWN_ooooXX, Link IOCARD_SW, Input 114 // Decrease ooooXX
{
IF &DOWN_ooooXX = 1
{
IF &ooooXX = 0
{
&ooooXX = 75
CALL &Send_Command, 23
}
ELSE
{
&ooooXX = &ooooXX - 25
CALL &Send_Command, 23
}
}
}

Var 0122, name Send_Command, Link SUBRUTINE // Send Command to SIOC
{
&SIOCKEYS = &Send_Command
&SIOCKEYS = 0
}


Ca fonctionne bien avec la Var 0122

Merci quand même thumbsup.gif

--------------------
Image IPB
Cerbro Tvo Utere! Sin Minvs, Parietes Asperget...

User is offlineProfile CardPM
Go to the top of the page
+Quote Post

6 Pages V < 1 2 3 4 5 > » 
Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :
 

Haut de page · Retour à l'accueil · Contacter le Webmestre Nous sommes le : 29/03/24 - 07:00