pit34
Messages postés4Date d'inscriptiondimanche 1 juillet 2007StatutMembreDernière intervention 4 décembre 2007
-
3 déc. 2007 à 18:07
pit34
Messages postés4Date d'inscriptiondimanche 1 juillet 2007StatutMembreDernière intervention 4 décembre 2007
-
4 déc. 2007 à 19:53
Bonjour à toutes et à tous.
Voila, je poste car étant débutant en programmation, j'ai un petit soucis.
Je développe actuellement un petit programme en vb.net pour piloter une matrice de Leds par le port parallèle.
Je pilote le port parallele grace à la dll inpout32, et le programme marchera de cette facon :
J'écris un mot de 8 bits sur le port parallèle, j'attends un temps T1 ( ou 1 est le numero de la led ) d'environ quelques dizaines de microseconde, puis j'écris un autre mot en attendant cette fois-ci T2.
Je fais ceci 288 fois, et je boucle le tout.
Pour tester, je passe les 8 bits à l'état 1, j'attends avec sleep et je passe les 8bits à 0, et j'attends avec sleep, puis je boucle.
Mon premier problème est que lorsque je démarre la boucle, l'interface se gel. Je pense que l'on peut résoudre ça avec un thread, mais malgrès mes nombreuses recherches et essai, je n'ai pas réussi à l'utiliser.
Mon deuxième problème est que je ne peux pas générer une fréquence superieur à 250Hz environ, car le sleep ne permet des pause que d'1 milliseconde minimum, et il me faudrait entre 10 et 20 microsecondes.
Pour résoudre cela j'ai entendu parlé du Queryperformancecounter, mais là encore malgrès mes nombreux essaies, rien n'y fait. Mais même dans ce cas j'ai peur que ca ne marche pas, car si je fais la boucle sans mettre de timer, j'obtiens une fréquence qui passe de 1Khz à 500Hz sans arrets.
Je ne vois vraiment pas comment faire, je cherche depuis plus d'une semaine sur google mais rien à faire. De même sur ce site, et pourtant j'ai épluché un paquet de post et d'articles :/
Voila j'espère que vous pourrez m'aider et me conseiller.
Bonne fin de journée à vous ;)
NHenry
Messages postés15039Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 7 février 2023156 4 déc. 2007 à 13:12
Bonjour
De toute façon, le changement de thread (quand tu fais un Sleep), est d'environ 15ms sur un XP (pour les autres je ne sais pas, mais ça doit être approchant).
Si tu veux vraiment de la performance, sort de .NET et passe au C++ voire au C (mais pas sur la plateforme .NET).
Balèse la personne qui a pensé au pansement à penser (ou à panser, pensée).
VB (6, .NET1&2), C++, C#.Net1
Mon site
pit34
Messages postés4Date d'inscriptiondimanche 1 juillet 2007StatutMembreDernière intervention 4 décembre 2007 3 déc. 2007 à 18:34
Pardonnez moi, je ne sais aps pourquoi tout le texte s'est détraqué et aparament il n'est pas possible d'éditer un message, je recommence donc.
Bonjour à toutes et à tous.
Voila, je poste car étant débutant en programmation, j'ai un petit soucis.
Je développe actuellement un petit programme en vb.net pour piloter une matrice de Leds par le port parallèle.
Je pilote le port parallele grace à la dll inpout32, et le programme marchera de cette facon :
J'écris un mot de 8 bits sur le port parallèle, j'attends un temps T1 ( ou 1 est le numero de la led ) d'environ quelques dizaines de microseconde, puis j'écris un autre mot en attendant cette fois-ci T2.
Je fais ceci 288 fois, et je boucle le tout.
Pour tester, je passe les 8 bits à l'état 1, j'attends avec sleep et je passe les 8bits à 0, et j'attends avec sleep, puis je boucle.
Mon premier problème est que lorsque je démarre la boucle, l'interface se gel. Je pense que l'on peut résoudre ça avec un thread, mais malgrès mes nombreuses recherches et essai, je n'ai pas réussi à l'utiliser.
Mon deuxième problème est que je ne peux pas générer une fréquence superieur à 250Hz environ, car le sleep ne permet des pause que d'1 milliseconde minimum, et il me faudrait entre 10 et 20 microsecondes.
Pour résoudre cela j'ai entendu parlé du Queryperformancecounter, mais là encore malgrès mes nombreux essaies, rien n'y fait. Mais même dans ce cas j'ai peur que ca ne marche pas, car si je fais la boucle sans mettre de timer, j'obtiens une fréquence qui passe de 1Khz à 500Hz sans arrets.
Je ne vois vraiment pas comment faire, je cherche depuis plus d'une semaine sur google mais rien à faire. De même sur ce site, et pourtant j'ai épluché un paquet de post et d'articles :/
Voila j'espère que vous pourrez m'aider et me conseiller.
Bonne fin de journée à vous ;)