Carte a puce sur port com

cs_Bugs Messages postés 23 Date d'inscription vendredi 4 octobre 2002 Statut Membre Dernière intervention 29 juin 2005 - 4 oct. 2002 à 03:41
cs_Bugs Messages postés 23 Date d'inscription vendredi 4 octobre 2002 Statut Membre Dernière intervention 29 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.

Merci @+

4 réponses

cs_Megafan Messages postés 389 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 23 septembre 2016 2
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.
0
cs_Bugs Messages postés 23 Date d'inscription vendredi 4 octobre 2002 Statut Membre Dernière intervention 29 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.

Merci @+
0
cs_Megafan Messages postés 389 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 23 septembre 2016 2
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

Strtemp contient l'ATR...

@+
0
cs_Bugs Messages postés 23 Date d'inscription vendredi 4 octobre 2002 Statut Membre Dernière intervention 29 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

Reset = strtemp

End Function

Merci encore pour ton aide.
0
Rejoignez-nous