cs_Bugs
Messages postés23Date d'inscriptionvendredi 4 octobre 2002StatutMembreDernière intervention29 juin 2005
-
4 oct. 2002 à 03:41
cs_Bugs
Messages postés23Date d'inscriptionvendredi 4 octobre 2002StatutMembreDernière intervention29 juin 2005
-
6 oct. 2002 à 22:09
Salut à tous,
Je voudrais diloguer avec les cartes à puce asynchrones, par le biais du port com.
Pour cela, je sais k'il faut utiliser inpout32.dll mais après je suis totalement perdu. Tout ce ke j'arrive à faire, c'est faire clignoter la LED de mon Lecteur de cartes.
Les seules infos que j'ai trouvé concernent les cartes synchrones sur port LTP, ce qui ne m'a pas beaucoup éclairé. Alors, si vous avez de la doc ou de l'aide à m'apporter, elle sera la bienvenue.
cs_Megafan
Messages postés389Date d'inscriptiondimanche 7 avril 2002StatutMembreDernière intervention23 septembre 20162 4 oct. 2002 à 08:46
Si tu posséde une carte de typr 'phoenix' :) , il n'est pas necessaire d'employer la dll inpout32.dll, car la carte se pilote géneralement à 9600 bauds. Donc utilise le composant Mscomm pour dialoguer avec tes cartes.
cs_Bugs
Messages postés23Date d'inscriptionvendredi 4 octobre 2002StatutMembreDernière intervention29 juin 2005 4 oct. 2002 à 19:03
Ok merci, ça à l'aire beaucoup plus simple avec Mscomm, mais je n'arrive pas à faire un reset afin de lire l'ATR et de commencer le dialogue avec la carte.
cs_Megafan
Messages postés389Date d'inscriptiondimanche 7 avril 2002StatutMembreDernière intervention23 septembre 20162 5 oct. 2002 à 10:33
Salut, pour provoquer un Reset sur un lecteur de carte type 'phoenix' ou 'smartmouse',il suffit de monter et descendre la sortie RTS (ou le contraire sur smartmouse).
voici un bout de code d'une fonction Reset
strtemp = "1" si le reset est inversé (smartmouse)
strtemp="0"pour phoenix
CommOcx est ton Mscomm passé en paramètre
Mysleep(X) est une fonction qui fait doevents pendant X millisecondes.
If strtemp = "1" Then
CommOcx.RTSEnable = False
MySleep (100)
CommOcx.RTSEnable = True
MySleep (400)
Else
CommOcx.RTSEnable = True
MySleep (100)
CommOcx.RTSEnable = False
MySleep (400)
End If
' Attendre l'ATR
strtemp = ""
Do
DoEvents
If CommOcx.InBufferCount Then
strtemp = strtemp + myhex(Asc(CommOcx.Input))
End If
Loop While CommOcx.InBufferCount
cs_Bugs
Messages postés23Date d'inscriptionvendredi 4 octobre 2002StatutMembreDernière intervention29 juin 2005 6 oct. 2002 à 22:09
Bon, si j'ai bien compris, Mysleep fait un delay de x millisecondes, myhex convertit en hexa,
CommOcx.Input donne la valeur contenue dans le buffer. Par contre, j'ai pas compris le rôle de CommOcx.InBufferCount et ce que tu entendais par:"CommOcx est ton Mscomm passé en paramètre".
Excuses si je met du temps à comprendre, mais je debute tout juste.
Voilà ce que j'ai essayé de faire mais je n'ai aucun resultat.
Private Sub Command1_Click()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
MSComm1.RTSEnable = False
Command1.Caption = "Connect"
Else
MSComm1.PortOpen = True
Command1.Caption = "Deconnect"
Label1.Caption = Reset
End If
End Sub
Private Sub Delay(ByVal Temps As Integer)
Dim i As Long
Dim j As Long
For i = 0 To Temps
For j = 0 To Temps
Next j
Next i
End Sub
Public Function Reset()
MSComm1.RTSEnable = True
Delay (100)
MSComm1.RTSEnable = False
Delay (400)
strtemp = ""
Do
DoEvents
If MSComm1.InBufferCount Then
strtemp = strtemp + Hex(Asc(MSComm1.Input))
End If
Loop While MSComm1.InBufferCount