1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
| Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Form_Open(Cancel As Integer)
'A l'ouverture, on ouvre en grand
DoCmd.Maximize
'On positionne le curseur sur le contrôle Journal(pour éviter qu'il ne soit sur l'afficheur qui sera en noir du coup...)
Me!Journal.SetFocus
End Sub
Private Sub Form_Close()
'A la fermeture, on ferme aussi le port Comm
Dim intPortID As Integer ' Ex. 1, 2, 3, 4 for COM1 - COM4
intPortID = 2
Call CommClose(intPortID)
End Sub
Private Sub Form_Timer()
Call ScaleAll
End Sub
Private Sub ScaleAll()
Dim intPortID As Integer 'Ex. 1, 2, 3, 4 for COM1 - COM4
Dim lngStatus As Long 'Statut du port Comm pour gestion d'erreurs
Dim strData As String 'Texte à envoyer et à lire
'Initialisation et ouverture Port Comm
intPortID = 2
lngStatus = CommOpen(intPortID, "COM" & CStr(intPortID), _
"baud=9600 parity=E data=7 stop=1")
'######### Ecriture données vers Port Comm, ici on demande le poids
strData = "W"
lngStatus = CommWrite(intPortID, strData)
'######### Temps de réponse de la balance
Call Sleep(225)
'######### Lecture données reçues depuis Port Comm
lngStatus = CommRead(intPortID, strData, 10)
'Vérifie si le formulaire est encore ouvert, sinon, on laisse tomber
If CurrentProject.AllForms("New affichage").IsLoaded = False Then
'On ferme quand même le port Comm
Call CommClose(intPortID)
Exit Sub
'Si réponse avec d,D, balance considéré comme défaut de zéro
ElseIf Mid(strData, 3, 1) = "d" _
Or Mid(strData, 3, 1) = "D" Then
'Afficheur sans chiffres
Me!Afficheur.Value = "-0,-0-"
'Affichage message non stable,
StudyMessage ("DZ")
'Si réponse avec M,I,m,i balance non stable
ElseIf Mid(strData, 3, 1) = "I" _
Or Mid(strData, 3, 1) = "i" _
Or Mid(strData, 3, 1) = "M" _
Or Mid(strData, 3, 1) = "m" Then
'Afficheur sans chiffres
Me!Afficheur.Value = "__,___"
'Affichage message non stable,
StudyMessage ("NS")
'Si réponse avec t, balance stable, tare disparue
ElseIf Mid(strData, 3, 1) = "t" Then
'Afficheur exclamation
Me!Afficheur.Value = "!!,!!!"
'Affichage message non stable, balance stable, tare disparue
StudyMessage ("TD")
'Si poids présent mais pas suivi de N, poids = poids Brut
ElseIf Mid(strData, 4, 1) = "." And Mid(strData, 8, 1) <> "N" Then
'Afficheur poids avec virgule
Me!Afficheur.Value = (Mid(strData, 2, 2) & "," & Mid(strData, 5, 3))
'Affichage message net
StudyMessage ("PB")
'Si poids présent suivi de N, poids = poids Net
ElseIf Mid(strData, 8, 1) = "N" Then
'Afficheur avec virgule
Me!Afficheur.Value = (Mid(strData, 2, 2) & "," & Mid(strData, 5, 3))
'Affichage message net
StudyMessage ("PN")
'Dans tous les autres cas :
Else
'Afficheur avec points d'interrogation
Me!Afficheur.Value = "??,???"
'On écrit la réponse de la balancec dans le controle Journal
Me!Journal.Value = strData
'Affichage message autre cas
StudyMessage ("X")
End If
'######### Fermeture Port Comm
Call CommClose(intPortID)
End Sub
Private Sub StudyMessage(ScaleMessage)
'Mise en forme du formulaire en fonction de la réponse de la balance
'On vérifie si le formulaire est chargé, sinon on laisse tomber
If CurrentProject.AllForms("New affichage").IsLoaded = False Then
Exit Sub
'Si considérée comme défaut de zéro = DZ
ElseIf ScaleMessage = "DZ" Then
'Fond Rouge
Me!Afficheur.BackColor = 255 'Rouge
'message Tare disparue
Me!AfficheMessage.BackColor = 255
Me!AfficheMessage.Caption = "Défaut de zéro"
'Si pas stable = NS
ElseIf ScaleMessage = "NS" Then
'Fond Orange
Me!Afficheur.BackColor = 52479 'Orange
'message Non Stable On
Me!AfficheMessage.BackColor = 52479 'Orange
Me!AfficheMessage.Caption = "Balance non stabilisée"
'Si pas stable avec tare disparue = TD
ElseIf ScaleMessage = "TD" Then
'Fond Rouge
Me!Afficheur.BackColor = 255 'Rouge
'message Tare disparue
Me!AfficheMessage.BackColor = 255 'Rouge
Me!AfficheMessage.Caption = "Balance stabilisée avec tare disparue"
'Si stable brut = PB
ElseIf ScaleMessage = "PB" Then
'Fond Bleu
Me!Afficheur.BackColor = 16776960 'Bleu
'message Poids Brut
Me!AfficheMessage.BackColor = 16776960 'Bleu
Me!AfficheMessage.Caption = "Poids Brut"
'Si stable net = PN
ElseIf ScaleMessage = "PN" Then
'Fond Vert
Me!Afficheur.BackColor = 65280 'Vert
'message Poids net
Me!AfficheMessage.BackColor = 65280 'Vert
Me!AfficheMessage.Caption = "Poids Net"
'Dans tous les autres cas
ElseIf ScaleMessage = "X" Then
'Fond violet
Me!Afficheur.BackColor = 16711935 'Violet
'message Poids net
Me!AfficheMessage.BackColor = 16711935 'Violet
Me!AfficheMessage.Caption = "Non prévu"
End If
End Sub |
Partager