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
| Option Explicit
Dim Dimension As String
Dim nBuffer As Integer
Dim i As Integer
Private MonTableau() As String
Dim Row As Integer
Private Sub CmdAcqui_Click()
CmdAcqui.Enabled = False
CmdInit.Enabled = False
MSComm1.Output = Chr(&H22) & Chr(&H14) & Chr(&H0) 'On met 0h a l'adresse 14h => On arrete l'acquisition des temperature avec MIP=0
MSComm1.Output = Chr(&H55) 'On va maintenant lire des données
MSComm1.Output = Chr(&H33) & Chr(&H0) & Chr(&H1A) 'On lit la page avec OOh pour poids fort et 1Ah pour poids faible
Do
nBuffer = MSComm1.InBufferCount 'On fait une boucle pour obtenir que les 8 premieres valeurs de la page recu sur le port serie
Loop While nBuffer < 8
Dimension = MSComm1.Input
Dimension = Asc(Left(Dimension, 1))
ReDim MonTableau(Dimension - 1)
MSComm1.Output = Chr(&H55) 'On va maintenant lire des données
MSComm1.Output = Chr(&H33) & Chr(&H10) & Chr(&H0) 'On lit la page avec 1Oh pour poids fort et 0h pour poids faible
Do
nBuffer = MSComm1.InBufferCount 'On fait une boucle pour obtenir que les 34 premieres valeurs de la page recu sur le port serie
Loop While nBuffer < 34
For i = 0 To Dimension - 1
MonTableau(i) = Mid(MSComm1.Input, i, i + 1) 'On place nos valeurs dans le tableau
Next i
MSChart1.TitleText = "Graphique de températures"
MSChart1.chartType = VtChChartType2dLine
With MSChart1
.Repaint = False ' Pas de rafraichissement
.ColumnCount = 1 ' Nombre de courbe
.RowCount = Dimension ' Nombre de points
'Tracé du graphique
.Column = 1 ' Numero du graphique
.ColumnLabel = "MonTableau" ' Libellé du 1er graphe
'On rentre les valeurs du graphe point par point
For Row = 1 To Dimension
.Row = Row 'Absisse X
.RowLabel = CStr(Row) 'On convertit en Single
.Data = MonTableau(Row) 'Ordonnée Y
Next Row
.Repaint = True ' Rafraîchissement du controle
End With
End Sub
Private Sub CmdInit_Click()
CmdInit.Enabled = False
CmdAcqui.Enabled = False
MSComm1.Output = Chr(&H22) & Chr(&HE) & Chr(&H40) 'On ecrit 40h a l'adresse 0Eh => On met CLR a 1
MSComm1.Output = Chr(&HA5) 'On efface la memoire
Dim i As Variant
For i = 0 To 10000000 'On met en palce une boucle pour laisser le temps au DS1616 d'effacer sa memoire
i = i + 1
Next i
MSComm1.Output = Chr(&H22) & Chr(&H29) & Chr(&H40) 'On ecrit 40h a l'adresse 29h => On met CS0 à 1
MSComm1.Output = Chr(&H22) & Chr(&HE) & Chr(&H10) 'Ecriture de l'octet 10h a l'adresse 0Eh => On met SE a 1
MSComm1.Output = Chr(&H22) & Chr(&HD) & Chr(&H1) 'On ecrit 01h a l'adresse 0Dh => On met 1 minute entre chaque acquisition de temperature
CmdInit.Enabled = True
CmdAcqui.Enabled = True
End Sub
Private Sub Form_Load()
With MSComm1
.CommPort = 1 'On initialise la liaison serie sur le port 1
.Settings = "9600,N,8,1" 'On met une cadence de 9600 bauds, sans parité, 8 bits de données (avec un bit de start) et un bit stop
.PortOpen = True 'On ouvre le port
End With
End Sub
Private Sub Form_Unload(Cancel As Integer)
MsgBox "Etes vous sur de vouloir quitter l'application?", vbQuestion + vbOKCancel, "Sortie"
End Sub |
Partager