Dériation interruption µP

Résolu
cs_juju59 Messages postés 37 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 29 décembre 2015 - 17 mai 2008 à 08:22
cs_juju59 Messages postés 37 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 29 décembre 2015 - 19 mai 2008 à 10:38
Salut à tous,

J'ai déjà posé la question, mais je n'ai pas eu de réponse ...

Je suis musicien de longue date, et de ce fait, j'écris beaucoup de dources qui tournent autour de ce sujet.
J'ai réussi, non sans mal, à déchiffrer les fichier mid's. Mais pour l'exécution, j'ai le timer rapide qui ne suit pas trop, surtout si plusieurs applications tournent. Voici une section du timer que j'utilise dans un UserControl :
'=======================================================================================
' Mise en service du timer
'---------------------------------------------------------------------------------------
Public Function Start_Timer() As Boolean
'---------------------------------------------------------------------------------------
Dim Resultat As Long
'---------------------------------------------------------------------------------------   Actif True: Start_Timer True: Evenement = True
   Do
      If Evenement Then Evenement = False: RaiseEvent Timer      FT.Long_High -1: FT.Long_Low -1
      Resultat = API_KL_Set_Waitable_Timer(Timer_Handle, FT, 0, 0, 0, False)
      Do
         If API_US_Msg_Wait_For_Multiple_Objects(1, Timer_Handle, False _
         , INFINITE, QS_ALLINPUT) = WAIT_OBJECT_0 Then Exit Do
         DoEvents
      Loop
      If m_Valeur > 0 Then
         m_Valeur = m_Valeur - 1          If m_Valeur <0 Then Evenement True
      End If
   Loop While Actif = True
End Function

Cela fonctionne, mais la priorité ce ce timer n'est pas très élevé, malgré son attribution 
'=======================================================================================
' Initialisation personnelle contrôle
'---------------------------------------------------------------------------------------
Private Sub UserControl_Initialize()
'---------------------------------------------------------------------------------------
'   API_KL_Set_Priority_Class API_KL_Get_Current_Process, HIGH_PRIORITY_CLASS
'   API_KL_Set_Thread_Priority API_KL_Get_Current_Thread, THREAD_BASE_PRIORITY_MAX
   Timer_Handle = API_KL_Create_Waitable_Timer(0, True, "UC_Timer_MIDI")
   Timer_Thread = API_KL_Get_Current_Thread
   API_KL_Set_Priority_Class Timer_Handle, HIGH_PRIORITY_CLASS
   API_KL_Set_Thread_Priority Timer_Thread, THREAD_BASE_PRIORITY_IDLE
End Sub

Ma question est simple : Existe-t-il un timer plus fiable que celui-ci.

Merci

juju59

6 réponses

Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
17 mai 2008 à 13:34
Sous VB6 car on accède a un thread de la même instance. (ou alors voir RSTimer via DLL/OCX qui est un MMTimer)
Sinon un MMTimer sous VB.NET va bien je peux te poster un exemple si tu veux ?
Afyn
3
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
17 mai 2008 à 14:57
Non ça fonctionne pas sous VB6.

Pour VB6 essaye le RSTimer

http://www.programmersheaven.com/download/17755/download.aspx

Resolution max 1 milliseconde

Afyn - Navedac
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
19 mai 2008 à 10:20
Bonjour

Sinon pourquoi ne pas utiliser MMControl ou DirectMusic pour lire le Midi ?

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
3
cs_juju59 Messages postés 37 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 29 décembre 2015
17 mai 2008 à 08:27
Complément d'information :

Avec le Pascal, on pouvait dévié une interruption, et y attribué sa propre routine de traitement de cette dernière. Peut-on faire la même chose sous VB, ou avec un module écrit en assembleur ?

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_juju59 Messages postés 37 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 29 décembre 2015
17 mai 2008 à 14:50
Je ne travaille pas en VB.net ... je n'ai pas encore installé le pack 2, et je ne crois pas l'installer avant longtemps.
Si ton exemple est accessible en API, c'est OK§

Merci
0
cs_juju59 Messages postés 37 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 29 décembre 2015
19 mai 2008 à 10:38
Salut,

Oui, ce serait plus simple, mais je travaille au niveau des évènements midi proprement dit, c'est à dire que le midi est en pièces détachées, sous forme de partition.
Chaque note est déclenchée par appel d'une API, ainsi que son arrêt et son volume.

Merci de ton intérêt apporté

juju59
0
Rejoignez-nous