Help sur l’utilisation de Lowlevel.library
6 sujets de 1 à 6 (sur un total de 6)
-
Hello AmiWorld!!!
Dans un petit projet que je fais actuellement, j’ai besoin d’utiliser la Lowlevel.library pour remonter les infos souris, clavier et joystick.
Je sais le faire en Asm68k, mais mon projet est en C et pour un soucis de portage possible, je voudrais utiliser les librairies systèmes connues et ne pas aller plonger dans les registres systèmes du Miga.
Je n’arrive pas à utiliser les fonctions : SetJoyPortAttrsA ou SetJoyPortAttrs et ReadJoyPort.
Impossible d’avoir des valeurs en retour…
Connaissez-vous comment cela marche et/ou avez-vous des bouts de sources avec l’utilisation de la librairie.
Merki par avance
Amos un jour, Amos Toujours
-----------------------------------
AmOS4 - Library Amos sous C (Os3-Os4)Seuls ReadJoyPort() et GetKey() sont vraiment utilisables.
As-tu regardé ici:
http://amigadev.elowar.com/read/ADCD_2.1/Includes_and_Autodocs_3._guide/node0460.html
Sinon tu dois confondre
BOOL SetJoyPortAttrsA(ULONG, struct TagItem *);
et
BOOL SetJoyPortAttrs(ULONG portNumber, ULONG firstTag, …);
la première réclame un tableau de TagItem, la deuxième est un artifice en C pour créer un tableau de tagitems sur la pile.
écrire:
SetJoyPortAttrs(1, SJA_Type, SJA_TYPE_AUTOSENSE, SJA_Reinitialize, 0, TAG_DONE) ;
est quand même plus classe que :
struct TagItem t[3] ;
t[0].ti_Tag = SJA_Type ;
t[0].ti_Data = SJA_TYPE_AUTOSENSE ;
t[1].ti_Tag = SJA_Reinitialize ;
t[1].ti_Data = 0 ;
t[2].ti_Tag = TAG_END ;
t[2].ti_Data = 0 ;
SetJoyPortAttrsA(1, &t) ;
Attention, le système minimum est 3.1 (V40) pour lowlevel.library… les précédentes plantent…
Hélas pour moi, j’ai déjà toutes les information, mais je n’arrive pas à avoir même un résultat faux(se serait un début!!!).
Je pense que je m’y prend pas comme il le faut.
Aurais-tu un exemple écrit pour que je test si cela fonctionne !!
Amos un jour, Amos Toujours
-----------------------------------
AmOS4 - Library Amos sous C (Os3-Os4)#include
#include
#include
#include
#include
struct Library *LowLevelBase = NULL ;
int main(int argc, char *argv[])
{
int i ;
ULONG getkey ;
ULONG readjoyport0, readjoyport1, readjoyport2, readjoyport3 ;
LowLevelBase = OpenLibrary(« lowlevel.library », 0) ;
if (LowLevelBase != NULL)
{
for (i=0; i<200; i++)
{
getkey = GetKey() ;
readjoyport0 = ReadJoyPort(0) ;
readjoyport1 = ReadJoyPort(1) ;
readjoyport2 = ReadJoyPort(2) ;
readjoyport3 = ReadJoyPort(3) ;
printf(« GetKey %08lx », getkey) ;
printf(« ReadJoyPort(0) %08lx », readjoyport0) ;
printf(« ReadJoyPort(1) %08lx », readjoyport1) ;
printf(« ReadJoyPort(2) %08lx », readjoyport2) ;
printf(« ReadJoyPort(3) %08lx », readjoyport3) ;
}
CloseLibrary(LowLevelBase) ;
}
return 0 ;
}
compiler, puis lancer en bougeant la souris, tapant une touche ou gesticulant le joystick… cela devrait afficher des valeurs en accord avec la doc.
je te laisse le soin de faire une boucle plus adéquate…
Merci pour le routine.. voici mon résultat après bricolage de ton aide très précieuse:
ULONG port1;
port1 =ReadJoyPort(1); // Lis le resultat du port
if(port1 & JP_TYPE_MASK) // MASK du type sur le port
{
if(port1 & (JPF_BUTTON_BLUE|JPF_BUTTON_RED))
// MASK pour voir que les boutons
{
if(port1 & JPF_BUTTON_RED) // Bouton 1 ?
{
return 1;
}
if(port1 & JPF_BUTTON_BLUE) // Bouton 2
{
return 2;
}
}
}
Les deux valeurs des bouton de la souris sont bien retournés, mais je n’arrive pas a supprimer l’action de mouvement car si je bouge la routine valide le bouton 1..
Galère cette LowLevel
Sous OS4, j’ai aucun retour.. les port sont-ils gérés autrement ?
Amos un jour, Amos Toujours
-----------------------------------
AmOS4 - Library Amos sous C (Os3-Os4)Euh… !! j’aurais plutôt écrit ceci :
ULONG port1;
port1 =ReadJoyPort(1);
if (port1 & (JP_TYPE_JOYSTK|JP_TYPE_GAMECTLR|JP_TYPE_MOUSE))
{
if (port1 & JPF_BUTTON_BLUE) return 2 ;
if (port1 & JPF_BUTTON_RED) return 1 ;
}
sur OS4 il doit exister une préférence pour input et lowlevel…
6 sujets de 1 à 6 (sur un total de 6)
- Vous devez être connecté pour répondre à ce sujet.
› Forums › AmigaOS, MorphOS et AROS › Développement › Help sur l’utilisation de Lowlevel.library