Aide program en VB

Signaler
Messages postés
10
Date d'inscription
lundi 10 décembre 2007
Statut
Membre
Dernière intervention
16 septembre 2009
-
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
-
bjour
toute mes excuses pour la forme ,je suis nouveau ds le forum .
en effet je suis en stage de fin d'étude sur les magasin automatisé et je dois développer
un programme en VB qui pilote un lecteur de billet avec rendu monaie ..
je vous remercie d'avance

je vous le code sources( qui ma foi est un peu longue)
en effet il arrive à 10% que le lecteur se comporte comme il n voyait pas le billet et après lecture des traces
en "trame envoyé xxxxxxxxxxxxx " et alors que"trame reçu 0"
du coup le client se voit un peu " arnaqué " pas de produit commandé , pas de rendu de billet inséré .
le lecteur doit passer par 5 étapes ( d'après le doc du constructeur)
1- IDLING
2- ACCEPTING
3 -ESCROWED
4- STRACKING
5- STRACKED
vraiment je suis bloqué
bessoin d'aide


'************************************************************************************************
'*************************************** LECTEUR SC83 ******************************************
'************************************************************************************************
Private WithEvents MSCSC83 As MSComm
Private intPort As Integer
Private intVitesse As Integer
Private strParite As String
Private intTaille As Integer
Private intBitStop As Integer
Private lngScrutation As Long
Private statusLectBilletOk As Boolean
Private blnEnvoi As Boolean
Private strAEnvoyer() As String
Private n20 As Integer ' utilisé pour traiter l'ACK renvoyé par le lecteur de billet
Private nNbPassage2 As Integer
Private strBilletsAcceptes As String
Private intBilletAccepte As Integer
Private BILLET_ENCOURS As Integer
Private ETAT_LECTEUR_BILLET_ENCOURS As Integer

Private WithEvents tmrSC83 As clsTimer

'Remontée d'évéments
Public Event Billet(intBillet As Integer)
Public Event Etat(intEtat As Integer)
Public Event Divers(intEtat As Integer)
Public Event EtatLecteurBillet(intEtat As Integer)
'Trames
Public bLecteurFull As Boolean ' Si le lecteur est plein, permet de n'afficher aucun biller à l'acran
Public intACK As Integer ' ACK à envoyer au lecteur de billet
Public bLecteurOFF As Boolean
Public bFin As Boolean


'Accepter les billets
Private Const TRAME_ACCEPTE As String = "&H02;&H08;&H10;;&H18;&H00;&H03;"
'Stocker le billet dans le cashflow
Private Const TRAME_STOCKAGE As String = "&H02;&H08;&H10;;&H20;&H00;&H03;"
' Accepte le billet de 500€
Private Const TRAME_ACCEPTE_40 As String = "&H02;&H08;&H10;&H40;&H18;&H00;&H03;"
' Accepte les billets autorisés par l'appli et les empile
Private Const TRAME_ACCEPTESTOCKAGE As String = "&H02;&H08;&H10;;&H28;&H00;&H03;"
' Accepte le billet de 500€ et l'empile
Private Const TRAME_ACCEPTESTOCKAGE_40 As String = "&H02;&H08;&H10;&H40;&H28;&H00;&H03;"
'Rejeter le billet
Private Const TRAME_REJET As String = "&H02;&H08;&H10;&H7F;&H58;&H00;&H03;"
'Arrêter la demande de billets
Private Const TRAME_ARRET As String = "&H02;&H08;&H10;&H00;&H00;&H00;&H03;"
'Valeurs hexadécimales
Private Const HEXA As String = "&H"
Private Const STX As String = &H2
Private Const ETX As String = &H3
Private Const ENQ As String = &H5
Private Const CR As String = &HD
Private Const NO_BILLET As String = "0000"

' Initialisation de la classe
Private Sub Class_Initialize()

On Error GoTo lblErreur

'Initilisation du lecteur
n20 1 ' 21
nNbPassage2 = 0
bLecteurFull = False
bFin = False
intACK = (n20 + 1) Mod 2
Set MSCSC83 = New MSComm
Set tmrSC83 = New clsTimer
ETAT_LECTEUR_BILLET_ENCOURS = -1
BILLET_ENCOURS = -1
strBilletsAcceptes = NO_BILLET

Exit Sub

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:Class_Initialize)"
Err.Clear
Resume Next

End Sub

'Port ###################################################
Public Property Let Port(Valeur As Integer)

On Error GoTo lblErreur

intPort = Valeur

Exit Property

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:Let Port)"
Err.Clear
Resume Next

End Property

Public Property Get Port() As Integer

On Error GoTo lblErreur

Port = intPort

Exit Property

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:Get Port)"
Err.Clear
Resume Next

End Property

'Vitesse ###################################################
Public Property Let Vitesse(Valeur As Integer)

On Error GoTo lblErreur

intVitesse = Valeur

Exit Property

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:Let Vitesse)"
Err.Clear
Resume Next

End Property

Public Property Get Vitesse() As Integer

On Error GoTo lblErreur

Vitesse = intVitesse

Exit Property

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:Get Vitesse)"
Err.Clear
Resume Next

End Property

'Parité ###################################################
Public Property Let Parite(Valeur As String)

On Error GoTo lblErreur

strParite = Valeur

Exit Property

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:Let Parite)"
Err.Clear
Resume Next

End Property

Public Property Get Parite() As String

On Error GoTo lblErreur

Parite = strParite

Exit Property

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:Get Parite)"
Err.Clear
Resume Next

End Property

'Taille ###################################################
Public Property Let Taille(Valeur As Integer)

On Error GoTo lblErreur

intTaille = Valeur

Exit Property

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:Let Taille)"
Err.Clear
Resume Next

End Property

Public Property Get Taille() As Integer

On Error GoTo lblErreur

Taille = intTaille

Exit Property

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:Get Taille)"
Err.Clear
Resume Next

End Property

'Bit de stop ###################################################
Public Property Let BitStop(Valeur As Integer)

On Error GoTo lblErreur

intBitStop = Valeur

Exit Property

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:Let BitStop)"
Err.Clear
Resume Next

End Property

Public Property Get BitStop() As Integer

On Error GoTo lblErreur

BitStop = intBitStop

Exit Property

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:Get BitStop)"
Err.Clear
Resume Next

End Property

'Temps de scrutation ###################################################
Public Property Let Scrutation(Valeur As Long)

On Error GoTo lblErreur

lngScrutation = Valeur

Exit Property

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:Let Scrutation)"
Err.Clear
Resume Next

End Property

Public Property Get Scrutation() As Long

On Error GoTo lblErreur

Scrutation = lngScrutation

Exit Property

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:Get Scrutation)"
Err.Clear
Resume Next

End Property

'Démarrage ###################################################
Public Sub Demarrage()

On Error GoTo lblErreur

tmrSC83.Intervalle = Scrutation
tmrSC83.Actif = True
If Not (MSCSC83.portOpen) Then
MSCSC83.Settings = intVitesse & "," & strParite & "," & intTaille & "," & intBitStop
MSCSC83.CommPort = intPort
MSCSC83.portOpen = True
End If
statusLectBilletOk = True
SetLecteur False
ETAT_LECTEUR_BILLET_ENCOURS = -1
Exit Sub

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:Demarrage)"
Err.Clear
Resume Next

End Sub

Public Sub InitBillet(strAccepte As String)

On Error GoTo lblErreur

' Contient la séquence de billets acceptés
strBilletsAcceptes = strAccepte
' On indique au lecteur les billets acceptés
DemandeInsertion

Exit Sub

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:InitBillet)"
Err.Clear
Resume Next

End Sub

'Demande d'insertion billet
Public Sub DemandeInsertion()

Dim Ind As Integer

On Error GoTo lblErreur

BILLET_ENCOURS = -1
strAEnvoyer = Split(TRAME_ACCEPTE, ";")
intBilletAccepte = 0
For Ind = 0 To 3
intBilletAccepte = intBilletAccepte + (2 ^ Ind) * CInt(Mid(strBilletsAcceptes, Ind + 1, 1))
Next Ind

strAEnvoyer(3) = HEXA & "0" & Hex(intBilletAccepte)
blnEnvoi = True

Exit Sub

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:DemandeInsertion)"
Err.Clear
Resume Next

End Sub

'Indique que l'on doit finir le polling
Public Sub Arret()

On Error GoTo lblErreur

DemandeInsertion500 ' Uniquement les billets de 500e autorisés afin qu'aucun billet
' ne soit inséré pendant la séquence d'arrêt du lecteur
bFin = True

Exit Sub

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:Arret)"
Err.Clear
Resume Next

End Sub

'Arrêt du lecteur de billet
Public Sub StopLecteurBillet()

On Error GoTo lblErreur

blnEnvoi = False
tmrSC83.Actif = False
statusLectBilletOk = True

Exit Sub

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:StopLecteurBillet)"
Err.Clear
Resume Next

End Sub

'Demande de rejet d'un billet
Public Sub DemandeRejet()

On Error GoTo lblErreur

strAEnvoyer = Split(TRAME_REJET, ";")
blnEnvoi = True

Exit Sub

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:DemandeRejet)"
Err.Clear
Resume Next

End Sub

'Demande d'insertion billet uniquement de 500€
Public Sub DemandeInsertion500()
' Uniquement les billets de type 7 (<=> 500€)

Dim Ind As Integer

On Error GoTo lblErreur

BILLET_ENCOURS = -1

' "&H02;&H08;&H10;&H40;&H28;&H00;&H03;"
strAEnvoyer = Split(TRAME_ACCEPTE_40, ";")
blnEnvoi = True

Exit Sub

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:DemandeInsertion500)"
Err.Clear
Resume Next

End Sub

'Demande d'arrêt d'insertion billet
Public Sub DemandeArretInsertion()

On Error GoTo lblErreur

strAEnvoyer = Split(TRAME_ARRET, ";")
blnEnvoi = True

Exit Sub

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:DemandeArretInsertion)"
Err.Clear
Resume Next

End Sub

'Demande d'arrêt du Timer
Public Sub StopTmr()

On Error GoTo lblErreur

tmrSC83.Actif = False

Exit Sub

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:StopTmr)"
Err.Clear
Resume Next

End Sub

'Demande de stockage billet
Public Sub DemandeStockage()

Dim strTempo As String

On Error GoTo lblErreur

strAEnvoyer = Split(TRAME_STOCKAGE, ";")
strAEnvoyer(3) = HEXA & "0" & Hex(intBilletAccepte)
blnEnvoi = True

Exit Sub

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:DemandeStockage)"
Err.Clear
Resume Next

End Sub

'Calcul du CheckSum
Private Function GetCheckSum(strMessage() As String) As String

Dim strRetourne As String
Dim strTempo As String
Dim Ind As Integer

On Error GoTo lblErreur

strRetourne = strMessage(1)
For Ind = 2 To CInt(strMessage(1)) - 3
strTempo = strRetourne Xor strMessage(Ind)
strRetourne = strTempo
Next Ind
GetCheckSum = HEXA & Hex(strRetourne)

Exit Function

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:GetCheckSum)"
Err.Clear
Resume Next

End Function

Public Function GetLecteur() As Boolean

On Error GoTo lblErreur

GetLecteur = bLecteurOFF

Exit Function

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:GetLecteur)"
Err.Clear
Resume Next

End Function

Public Sub SetLecteur(bLecteur As Boolean)

On Error GoTo lblErreur

bLecteurOFF = bLecteur

Exit Sub

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:SetLecteur)"
Err.Clear
Resume Next

End Sub

Private Sub tmrSC83_Action()

Dim Ind As Integer
Dim Jnd As Integer
Dim strTempo() As String
Dim intTempoEtat As Integer
Dim intTempoBillet As Integer
Dim intTempoDivers As Integer
Dim blnNouvelEtat As Boolean
Dim bTrameFormat As Boolean
Dim blnDef As Boolean
'Dim i As Integer
'Dim strTrame As String

On Error GoTo lblErreur

DoEvents

blnNouvelEtat = False
blnDef = False
'strTrame = ""
If (blnEnvoi) Then
If (UBound(strAEnvoyer) > 0) Then
' Si un message est prêt à être envoyé
' On positionne le bon ACK
strAEnvoyer(2) = HEXA & "1" & CStr(intACK)
' On calcule le checksum de fin!
strAEnvoyer(UBound(strAEnvoyer)) = GetCheckSum(strAEnvoyer)

'i = 0
' Affichage de la trame envoyée du lecteur
'Do While (i <= UBound(strAEnvoyer))
' strTrame = strTrame & " " & strAEnvoyer(i)
' i = i + 1
'Loop
'RecupTrace "Trame envoyée = " & strTrame
'strTrame = ""

' ENVOI ====> de la trame au lecteur de billet
' strEnvoyer contient la trame à envoyer au lecteur
' strTempo contient la trame émise en retour par le lecteur
strTempo = Emettre(strAEnvoyer)

' Affichage de la trame reçue du lecteur
'i = 0
'Do While (i <= UBound(strTempo))
' strTrame = strTrame & " " & strTempo(i)
' i = i + 1
'Loop
'RecupTrace "Trame reçue = " & strTrame

' On teste la valeur ACK renvoyée par le lecteur
' Appli Lecteur
' 10 =>
' <= 20
' 11 =>
' <= 21
' 10 =>
' ...
' Sinon il faut renvoyer la même trame
' Si trame reçue <> "0"
bTrameFormat = True
If (UBound(strTempo) >= 2) Then
' Si le ACK renvoyé par le lecteur = 0
If (Int(strTempo(2) And (2 ^ 0)) = 0) Then
n20 0 ' ACK 20
Else
n20 1 ' ACK 21
End If
intACK = (n20 + 1) Mod 2
Else
bTrameFormat = False
End If

' Test la trame reçue qu'elle soit au bon format
If (UBound(strTempo) > 0) Then
' Format trame retour
' 0x02 Length ACK "Data Field" 0x03 Checksum
' Test STX
If (Int(strTempo(0)) <> 2) Then
bTrameFormat = False
End If
' Test la longueur
'If CLng(strTempo(1)) <> (UBound(strTempo) + 1) Then
'bTrameFormat = False
'End If
' Test ACK
' si <> 0x20 et 0x21
If (Int(strTempo(2)) <> 32) And (Int(strTempo(2)) <> 33) Then
bTrameFormat = False
End If
' EXT
If (UBound(strTempo) > 8) Then
If (Int(strTempo(9)) <> 3) Then
bTrameFormat = False
End If
End If
End If

If Not bTrameFormat Then
' Le format de la trame émise par le lecteur est invalide, on ne traite pas cette trame!
Exit Sub
End If

' Certaines trames envoyées par le lecteur ne sont pas complètes cad différentes de:
' 0x02 Length ACK "Data Field" 0x03 Checksum
' Dans ce cas il faut quand même faire un traitement au cas où cette trame incomplète
' soit primordiale pour la suite d'une séquence
If (UBound(strTempo) >= 4) Then
intTempoEtat = ETAT_LECTEUR_BILLET_ENCOURS
'Test si le lecteur de billet est en défaut

' Test si le lecteur est encombré <=> Byte 1 / Bit 2 = 1
If (Int(CInt(strTempo(4)) And (2 ^ 2)) > 0) Then
bLecteurFull = True
blnDef = True
If (intTempoEtat <> 4) Then
ETAT_LECTEUR_BILLET_ENCOURS = 4
RaiseEvent Etat(4)
End If
Else
If Not blnDef Then
bLecteurFull = False
End If
End If

' Test si le lecteur est plein <=> Byte 1 / Bit 3 = 1
If (Int(CInt(strTempo(4)) And (2 ^ 3)) > 0) Then
bLecteurFull = True
blnDef = True
If (intTempoEtat <> 8) Then
ETAT_LECTEUR_BILLET_ENCOURS = 8
RaiseEvent Etat(8)
End If
Else
If Not blnDef Then
bLecteurFull = False
End If
End If

' Test si le LRC est en place (tiroir à billet) <=> Byte 1 / Bit 4 = 0
If (Int(CInt(strTempo(4)) And (2 ^ 4)) = 0) Then
bLecteurFull = True
blnDef = True
If (intTempoEtat <> 16) Then
ETAT_LECTEUR_BILLET_ENCOURS = 16
RaiseEvent Etat(16)
End If
Else
If Not blnDef Then
bLecteurFull = False
End If
End If
End If

If (UBound(strTempo) >= 3) Then
' Si il n'y a pas de défaut au niveau du lecteur alors on regarde le Byte 0
If Not (blnDef) Then
Ind = 6
Do While Ind >= 0
'For Ind = 0 To 6
' Etat de retour du lecteur
' Bit Description "1" indication
'--------------------------------------------------------
' 0 En attente d'un billet Pas de billet
' 1 Accepte un billet Vu un billet passé
' 2 Escrowed Billet maintenant escrow
' 3 Empilage En cours d'empilement
' 4 Empilé Le billet est empilé
' 5 Retour En cours de retour
' 6 Retourné Le billet est retourné
' 7 Non utilisé
If (Int(strTempo(3) And (2 ^ Ind)) > 0) Then
If (intTempoEtat <> Ind) Then
ETAT_LECTEUR_BILLET_ENCOURS = Ind
blnNouvelEtat = True

Select Case ETAT_LECTEUR_BILLET_ENCOURS
Case 0
RecupTrace "Etat du lecteur : IDLING"
Case 1
RecupTrace "Etat du lecteur : ACCEPTING"
Case 2
RecupTrace "Etat du lecteur : ESCROWED"
Case 3
RecupTrace "Etat du lecteur : STACKING"
Case 4
RecupTrace "Etat du lecteur : STACKED"
Case 5
RecupTrace "Etat du lecteur : RETURNING"
Case 6
RecupTrace "Etat du lecteur : RETURNED"
End Select
Exit Do
Else
If Ind 4 Then '> si Byte 0 = 0x11 alors ne pas continuer la boucle, si je veux!!!
Exit Do
End If
End If
End If
Ind = Ind - 1
Loop
'Next Ind
Else
Pause 100
StopLecteurBillet
SetLecteur (True)
bFin = False
End If

' Le lecteur a changé d'état
If ((blnNouvelEtat) Or (bFin And (ETAT_LECTEUR_BILLET_ENCOURS = 0))) Then
intTempoBillet = BILLET_ENCOURS

Select Case ETAT_LECTEUR_BILLET_ENCOURS
Case 0
' IDLING"
If bFin Then
RecupTrace "IDLING + FIN"
DemandeArretInsertion
Pause 100
StopLecteurBillet
SetLecteur (True)
End If
Case 1
' ACCEPTING"
Case 2
' ESCROWED"
DemandeStockage
Pause 300
If bFin Then
DemandeInsertion500
Else
DemandeInsertion
End If

Case 3
' STACKING"
Case 4
' STACKED"
If (UBound(strTempo) < 6) Then
intTempoEtat = 1
End If

' On teste le billet inséré et on avertit l'application
Select Case (CInt(strTempo(5)) And 56)
' Byte 2 - Bit 3-4-5
' Valeur Bit 5 Bit 4 Bit 3
' 5€ 0 0 1 = And 8
' 10€ 0 1 0 = And 16
' 20€ 0 1 1 = And 24
' 50€ 1 0 0 = And 32
' 100€ 1 0 1 = And 40
' 200€ 1 1 0 = And 48
' 500€ 1 1 1 = And 56
Case 8
'Type 1 <=> 5€
If (intTempoBillet <> 0) Then
BILLET_ENCOURS = 0
RaiseEvent Billet(0)
RecupTrace "Billet inséré = 5€"
End If
Case 16
'Type 2 <=> 10€
If (intTempoBillet <> 1) Then
BILLET_ENCOURS = 1
RaiseEvent Billet(1)
RecupTrace "Billet inséré = 10€"
End If
Case 24
'Type 3 <=> 20€
If (intTempoBillet <> 2) Then
BILLET_ENCOURS = 2
RaiseEvent Billet(2)
RecupTrace "Billet inséré = 20€"
End If
Case 32
'Type 4 <=> 50€
If (intTempoBillet <> 3) Then
BILLET_ENCOURS = 3
RaiseEvent Billet(3)
RecupTrace "Billet inséré = 50€"
End If
Case 40
'Type 5 <=> 100€
If (intTempoBillet <> 4) Then
BILLET_ENCOURS = 4
RaiseEvent Billet(4)
RecupTrace "Billet inséré = 100€"
End If
Case 48
'Type 6 <=> 200€
If (intTempoBillet <> 5) Then
BILLET_ENCOURS = 5
RaiseEvent Billet(5)
RecupTrace "Billet inséré = 200€"
End If
Case 56
'Type 7 <=> 500€
If (intTempoBillet <> 6) Then
BILLET_ENCOURS = 6
'RaiseEvent Billet(6)
RecupTrace "Billet inséré = 500€"
End If
End Select
Case 5
' RETURNING"
Case 6
' RETURNED"
End Select
End If
End If
End If
End If

Exit Sub

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:tmrSC83_Action)"
Err.Clear
Resume Next

End Sub

'Envoi d'une trame au Lecteur
Private Function Emettre(strMessage() As String) As String()

Dim strRetourne() As String
Dim strTempo As String
Dim strBuffer As String
Dim strAux As String
Dim Ind As Integer
Dim tmrEnveloppe

On Error GoTo lblErreur

For Ind = 0 To CInt(strMessage(1)) - 1
strTempo = strTempo & Chr(Int(strMessage(Ind)))
Next Ind

tmrEnveloppe = Timer
If (blnEnvoi) Then
MSCSC83.Output = strTempo
Do While (True)
strBuffer = MSCSC83.Input
' Trame reçue
' 0x02 Length ACK DataField 0x03 Checksum
If ((Timer - tmrEnveloppe) > (tmrSC83.Intervalle / 2)) Then
Exit Do
End If
If (strBuffer <> "") Then
If (Int(Asc(Mid(strBuffer, 1, 1))) = 2) Then
'ReDim strRetourne(0 To Int(Asc(Mid(strBuffer, 2, 1))))
ReDim strRetourne(0 To (Len(strBuffer) - 1))
For Ind = 1 To Len(strBuffer)
strAux = Hex(Asc(Mid(strBuffer, Ind, 1)))
strRetourne(Ind - 1) = HEXA & strAux & " "
Next Ind
Else
' La trame reçue est mal formatée
' STX (0x02) non trouvé
ReDim strRetourne(0 To 0)
strRetourne(0) = 0
End If
Exit Do
End If
DoEvents
Loop
End If
Emettre = strRetourne

Exit Function

lblErreur:
RecupErreur Err.Number, Err.Description & " (clsSC83:Emettre)"
Err.Clear
Resume Next

End Function
..........
.....

bakala

3 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut

Et tu crois qu'on va analyser 15 pages de code sur un projet qui traite d'un matériel qu'on n'a pas devant nous ?
Non, soit plus précis sur ce que tu cherches à faire.
Sors du contexte et dis nous quelle structure de programme tu bloques.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
10
Date d'inscription
lundi 10 décembre 2007
Statut
Membre
Dernière intervention
16 septembre 2009

Slt Jack
merci pour ta réponse et aussi pour la remarque que j juge raisonnable.
en effet , je souhaite avoir un algo simple et clair m permettant de dialoguer avec le lecteur de billet, sachant que le billet doit passer en 5 etapes ( d'après le doc du constructeur)
1- IDLING
2- ACCEPTING
3 -ESCROWED
4- STRACKING
5- STRACKED
et aussi afficher la valeur du billet ds chaque étape.
ensuite rembourser le client en cas de défaut ( commande non livré, billet coincé,...)
j n sais pas si j'ai été un peu précis
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
Bonjour,

Les réponses à tes questions dépendent de ton matériel (ton lecteur de billet), normalement accompagné d'une documentation de la (des) librairies qu'il utilise !

Seule la partie "rendu de la monnaie" pourra éventuellement, une fois les premières étapes passées, relever de l'utilisation du code VB6 approprié.