Annonces Google
Serveur IRC
Serveur : irc.portlane.se
Canal : #AmigaNG
Activité du Site

Pages vues depuis 25/07/2007 : 25 261 645

  • Nb. de membres 187
  • Nb. d'articles 1 270
  • Nb. de forums 19
  • Nb. de sujets 20
  • Nb. de critiques 24

Top 10  Statistiques

Index du forum »»  Création-Développement »» Comment servir des device Keyboard et input ??

Comment servir des device Keyboard et input ??#2624

3Contributeur(s)
SharynnYesCopthellier
3 Modérateur(s)
K-LElwoodcorto
Sharynn Sharynnicon_post
Salut,
Bon ça avance mais pas trop comme je le souhaiterai.

J'ai basculer sur le timer.device car il faut vraiment que je trouve où ça ne fonctionne pas.

Voici un topo rapide.

La bibliothèque AmOS4 est regroupé en 763 fichiers autonomes et d'un noyau le tout compilé ensemble.

Jusqu'à présent l'utilisation de variables du noyau vers les modules externes fonctionnaient bien en utilisant

extern int MaVariable

Alors qu'avec les device cela ne fonctionne pas. Du moins chez moi !!!

Pour le TIMER.DEVICE:
Si j'ouvre dans une routine le device et que je l'utilise directement ça fonctionne (GETSYSTIME me donne la date).
Mais si j'utilise le "DoIO" du device dans une autre commande externe, j'ai un Guru directement.

L'appel en "extern struct MavarDevice" ne semble pas suivre le pointeur que j'y enregistre lors de l'ouverture du device.

Si quelqu'un à une poste ou une solution pour cela ???

Je reste à l'écoute de vos suggestions...
Projet AmOS4 - Retour vers l'Amos sous OS4...

SAM440EP - A1200 3.1 de base
thellier thelliericon_post

Ca devrait pas être plutot qque chose comme

extern struct Device *  TimerBase;

plutôt que  "extern struct MavarDevice"

car TimerBase est toujours utilisé comme pointeur , tout comme une base de .library

Note: Par ailleurs je crois pas que l'on puisse "externaliser" une struct en C mais uniquement un pointeur sur une struct


Et dans le prog principal:

struct Device *  TimerBase   =NULL;

struct timerequest tr;

/*==================================================================*/
#define LIBCLOSE(libbase)  if(libbase!=NULL) {CloseLibrary( (struct Library  *)libbase );   libbase=NULL; }
#define LIBOPEN(libbase,name,version)  libbase =(void*)OpenLibrary(#name,version);    if(libbase==NULL)  return(FALSE);
#ifdef OS4
#define LIBOPEN4(interface,libbase)    interface=(void*)GetInterface((struct Library *)libbase, "main", 1, NULL); if(interface==NULL) return(FALSE);
#define LIBCLOSE4(interface) if(interface!=NULL) {DropInterface((struct Interface*)interface );interface=NULL;}
#else
#define LIBOPEN4(interface,libbase)    ;
#define LIBCLOSE4(interface) ; 
#endif

*==================================================================*/

 if (OpenDevice(TIMERNAME, UNIT_MICROHZ, (struct IORequest *)&tr, 0L) != 0)
  return(FALSE);
 TimerBase = (struct Device  *) tr.tr_node.io_Device;
 LIBOPEN4(ITimer,TimerBase);

*==================================================================*/

 LIBCLOSE4(ITimer)
 CloseDevice((struct IORequest *)&tr);

Sam440 - Sam460 - X5000 - PowerBookG4 - WinUAE - MiniMig

Message édité par : thellier / 14-11-2019 13:41
Sharynn Sharynnicon_post
Merci pour les infos.

AmOS4 - Timer.Device -> OK Débogué !!!

Reste plus que Keyboard.device et Input.device ;)

Projet AmOS4 - Retour vers l'Amos sous OS4...

SAM440EP - A1200 3.1 de base
thellier thelliericon_post
Montre le code qui marche pas: on aura peut être une idée en le lisant
Sam440 - Sam460 - X5000 - PowerBookG4 - WinUAE - MiniMig
Petites Annonces

0 annonce(s) publiée(s)

Consulter

AmigaOS 4.1

Laissez-vous tenter par
AmigaOS 4.1
AmiTheme

AmiTheme