µLua DS - Forum officiel | Official forum Index du Forum

µLua DS - Forum officiel | Official forum
Le bon endroit pour en savoir plus sur MicroLua et pour parler de vos projets ! | The right place to learn more about MicroLua and talk about your projects !

 FAQFAQ   RechercherRechercher   MembresMembres   GroupesGroupes   S’enregistrerS’enregistrer   ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

C'est sur un souci en C..

 
Poster un nouveau sujet   Répondre au sujet    µLua DS - Forum officiel | Official forum Index du Forum -> Section française -> Divers -> Hors-sujet
Sujet précédent :: Sujet suivant  
Auteur Message
thermo_nono
Modérateur

Hors ligne

Inscrit le: 31 Déc 2008
Messages: 2 415
Localisation: La Géhenne

MessagePosté le: Mer 24 Avr 2013 - 15:43    Sujet du message: C'est sur un souci en C.. Répondre en citant

salut, j'ai un souci avec un bout de code en C que j'aimerai vous faire partager. ^^


la petite histoire : 
Bidouillant sur Arduino et Raspberry Pi, j'ai voulu mettre au point un "adaptateur Paddle-NES USB" qui permet grâce à un ArduinoUno de récupérer les infos provenant d'une manette NES et simulant un clavier USB pour transférer les informations vers mon ordi. 
Côté manette NES, aucun souci. 
Par contre, pour simuler un clavier je dois utiliser une lib (la lib VUSB-for-arduino). 
j'ai donc soudé deux trois composants, j'ai tout connecté et j'ai fais un petit programme Arduino pour assurer le transfert des données.. 


Malheureusement, la lib "VUSB-for-arduino" simule la pression, mais aussi le relâchement de la touche du clavier, ainsi, lorsque j'appuie sur haut pour faire sauter Popolon (je teste ça sur l'excellent jeu "Maze-of-Galious"), je maintiens la touche "haut" de mon Paddle NES mais la lib renvoie une série d'impulsions vers l'ordi, ce qui abouti a un saut de 1 ou deux pixels. 


J'ai localisé la fonction qui me pose problème, mais je ne parviens pas à la changer en trois fonctions ("keyNewPress()", "keyPressed()" et "keyRelease()" par exemple) qui me permettraient de mener à bien ce projet. 


voici le bout de code qui me pose problème : 



 
Code:
  void sendKeyStroke(byte keyStroke) {
    sendKeyStroke(keyStroke, 0);
  }


  void sendKeyStroke(byte keyStroke, byte modifiers) {
      
    while (!usbInterruptIsReady()) {
      // Note: We wait until we can send keystroke
      //       so we know the previous keystroke was
      //       sent.
    }
      
    memset(reportBuffer, 0, sizeof(reportBuffer));


    reportBuffer[0] = modifiers;
    reportBuffer[1] = keyStroke;
        
    usbSetInterrupt(reportBuffer, sizeof(reportBuffer));


    while (!usbInterruptIsReady()) {
      // Note: We wait until we can send keystroke
      //       so we know the previous keystroke was
      //       sent.
    }
      
    // This stops endlessly repeating keystrokes:
    memset(reportBuffer, 0, sizeof(reportBuffer));      
    usbSetInterrupt(reportBuffer, sizeof(reportBuffer));


  }



 






voici le fichier "UsbKeyboard.h" complet.
merci d'avance pour votre aide, je suis en train de m'arracher les cheveux sur ce truc. ^^
_________________
“Qui reçoit une idée de moi reçoit de la connaissance sans diminuer la mienne, comme celui qui allume sa chandelle à la mienne reçoit la lumière sans me plonger dans l’obscurité.” - Thomas Jefferson


Revenir en haut
Visiter le site web du posteur MSN
Publicité






MessagePosté le: Mer 24 Avr 2013 - 15:43    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Papymouge
Modérateur

Hors ligne

Inscrit le: 10 Mai 2009
Messages: 693
Localisation: Vittel (88)

MessagePosté le: Jeu 25 Avr 2013 - 00:50    Sujet du message: C'est sur un souci en C.. Répondre en citant

Et pourquoi ne pas utiliser tout simplement les fonctions sendKeyPress et sendKeyRelease ?
_________________
La page de mes projets
L'ancienne page de mes projets


Revenir en haut
thermo_nono
Modérateur

Hors ligne

Inscrit le: 31 Déc 2008
Messages: 2 415
Localisation: La Géhenne

MessagePosté le: Jeu 25 Avr 2013 - 01:54    Sujet du message: C'est sur un souci en C.. Répondre en citant

Celles là, c'est moi qui les a ajouté. 
Malheureusement ça ne fonctionne pas : 
le sendKeyPress() laisse bien la touche appuyée, par contre, si j'appelle le sendKeyRelease() dans mon programme, ça rends la compilation impossible. 
_________________
“Qui reçoit une idée de moi reçoit de la connaissance sans diminuer la mienne, comme celui qui allume sa chandelle à la mienne reçoit la lumière sans me plonger dans l’obscurité.” - Thomas Jefferson


Revenir en haut
Visiter le site web du posteur MSN
geeker


Hors ligne

Inscrit le: 23 Déc 2012
Messages: 363

MessagePosté le: Ven 26 Avr 2013 - 13:14    Sujet du message: C'est sur un souci en C.. Répondre en citant

J'ai essayé de faire la meme chose pour PC avec une manette faite maison et un code Lua (sans Vusb donc) pour simuler le clavier ... J'ai pas réussis ! Alors je te dis bonne chance Wink .
_________________
Beta-testeur de l'extrème
Tox: FFBDC8B34DC3CDE51F8F1CB0A628147DE740ACD1D44682EB5492A681F6541E32E8D8BB6052B3
CtrµLua: ctrulua.github.io
Des p'tits true, des p'tits true, toujours des p'tits true ...


Revenir en haut
Visiter le site web du posteur
Papymouge
Modérateur

Hors ligne

Inscrit le: 10 Mai 2009
Messages: 693
Localisation: Vittel (88)

MessagePosté le: Sam 27 Avr 2013 - 10:39    Sujet du message: C'est sur un souci en C.. Répondre en citant

sinon, pourrait-on voir le fichier "usbdrv.h" stp. la solution et peut être dedant, vu que ton problème vient de la fonction usbSetInterrupt() qui envois les interruptions du clavier au port usb.
J'en ai deduit cela  en lisant la fonction sendKeyStroke() qui à la fin renvois le reportBuffer à 0 pour éviter, comme ils le disent, un répète infini de la touche.
_________________
La page de mes projets
L'ancienne page de mes projets


Revenir en haut
thermo_nono
Modérateur

Hors ligne

Inscrit le: 31 Déc 2008
Messages: 2 415
Localisation: La Géhenne

MessagePosté le: Sam 27 Avr 2013 - 12:11    Sujet du message: C'est sur un souci en C.. Répondre en citant

oui, j'ai bien ce fichier : 
https://sites.google.com/site/microlua/Home/usbdrv.h
_________________
“Qui reçoit une idée de moi reçoit de la connaissance sans diminuer la mienne, comme celui qui allume sa chandelle à la mienne reçoit la lumière sans me plonger dans l’obscurité.” - Thomas Jefferson


Revenir en haut
Visiter le site web du posteur MSN
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 03:47    Sujet du message: C'est sur un souci en C..

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    µLua DS - Forum officiel | Official forum Index du Forum -> Section française -> Divers -> Hors-sujet Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  

Index | Creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com