utiliser une fonction de callback ? methode ?
Bonjour,
J'essaie de réaliser un petit outil permettant de lire des cartes sans contact à partir d'un lecteur. Pour cela j'utilise une API sous forme de dll.
Pour le moment j'ai créé une IHM avec un bouton, lorsque je clique sur ce bouton ca permet d'executer le polling sur le lecteur de carte.
Code:
1 2 3
| Sub Button1Click(sender As Object, e As EventArgs)
MyReader.CSCReaderStartPollingEx()
End Sub |
Lorsque je pose une carte sur le lecteur, le lecteur fait appel à la fonction de callback et permet de récuperer des infos sur le status du lecteur (carte détecté, type de carte,...)
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| Public Class CscApi
Property CscReaderStatus As StatusCSC = Nothing
<UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)>
Private Delegate Sub fCallBackEx (ByVal hCsc As System.UInt32, byref pxStatusCSC As StatusCSC)
Public Sub CallBackExFunc (ByVal hCsc As System.UInt32, byref pxStatusCSC As StatusCSC)
Me.CscReaderStatus = pxStatusCSC
End Sub
End Class |
Tout fonctionne bien, le problème est que je ne sais pas quoi faire une fois que le lecteur fait appel à la fonction de callback, par exemple je devrais une fois la carte détecté , lire le contenu de la carte avec une fonction de l'api, mais dans la documentation de l'api il est conseillé de ne pas faire appel à une autre fonction de l'api dans la fonction de callback elle meme.
Pour le moment dans la fonction de callback je stocke le contenu de l'état du lecteur (comme conseillé dans la documentation), mais apres je ne sais pas comment déclencher un évenement ou autre chose pour pouvoir executer une autre fonction.
Voici ce qui est écrit dans la doc de l'API sur la fonction de callback
Citation:
Here, you should save the content pointed to by <pxStatusCSC >
* and set a synchronization object with your application
Je ne sais comprend pas du tout ce que l'on entend par "set a synchronization object with your application ? Si quelqu'un pouvait m'aiguiller ou me donner un exemple, ca m'aiderait beaucoup
Merci par avance.
cdt,
yaume