-----------------
Simon Brodeur
-----------------
Bonjours, j'ai des données à transferer d'une boîte noire à mon ordinateur. Je me suis fait un terminal et tout marche comme prévu, sauf que la communication est beaucoup trop lente à mon goût. La communication se fait à une baudrate de 9600 sur le port série.
J'ai calculé un débit de 80 données/secondes avec mon terminal. Je suis même obliger de transmettre les données avec une pause de 5ms entre chacune. On dirait que mon microprocesseur à 8mhz est plus rapide que mon ordinateur!!!!!
les données sont transmises comme ceci --->
RD1111yy1111yy111yy111yy1111yy1111yyTC
yy sépare les données de longueures variables (entre 3 et 4 caractères)
et j'ai plusieurs autre commandes spéciale (ex: RD, TC...) pour annoncer la fin de la transmission ou le nombre de données envoyées..
Si vous connaissez un moyen plus rapide de traiter mes données ou si mon code peu être amélioré, dites-moi le...
Voici un APERÇU routine que j'utilise :
PS. J'écrit directement les données dans un fichier texte
[/code]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Do Do DoEvents If Not MSComm1.PortOpen Then GoTo Resetopt End If BufferIN = BufferIN & MSComm1.Input Loop Until InStr(BufferIN, "yy") Or InStr(BufferIN, "TC") Or InStr(BufferIN, "RD") Or InStr(BufferIN, "XY") Or InStr(BufferIN, "NV") Or InStr(BufferIN, "ND") Or InStr(BufferIN, "YD") Or InStr(BufferIN, "PT") Or InStr(BufferIN, "VY") Code = Right$(BufferIN, 2) Data = Left$(BufferIN, (Len(BufferIN) - 2)) Select Case Code Case "TC" MStatus.Text = "Operation Sucessfull..." & vbCrLf & vbCrLf & "Status : Working" Case "RD" FLY.Close LED.FillColor = &HFF00& MStatus.Text = "Operation Sucessfull..." & vbCrLf & vbCrLf & "Status : Ready" Case "XY" MStatus.Text = "Choosing Y Axis..." & vbCrLf & vbCrLf & "Status : Working" MSComm1.Output = "/" & "H" Case "NV" If opt = 3 Then COMResume.Text = COMResume.Text & vbNewLine & vbNewLine & vbNewLine Else COMResume.Text = vbNullString End If COMResume.Text = COMResume.Text & vbNewLine & " Communication Summary (Y) :" & vbNewLine COMResume.Text = COMResume.Text & " ---------------------------------------------------" & vbNewLine COMResume.Text = COMResume.Text & " NO VALUES IN MEMORY" & vbNewLine COMResume.Text = COMResume.Text & " ---------------------------------------------------" & vbNewLine ProgressBar1.Value = ProgressBar1.Max ProgressBar2.Value = ProgressBar2.Max nbvalX.Caption = "NB VALUE : 0" nbvalY.Caption = "NB VALUE : 0" Case "ND" ProgressBar2.Min = 0 nbvalH = Val(Data) / 2 ProgressBar2.Max = nbvalH Case "YD" MStatus.Text = "Downloading..." & vbCrLf & vbCrLf & "Status : Working" Case "yy" Texty.Text = Data FLY.WriteLine (Data) nbvalL = nbvalL + 1 nbvalY.Caption = "NB VALUE : " & Str$(nbvalL) If ProgressBar2.Value < nbvalH Then ProgressBar2.Value = ProgressBar2.Value + 1 End If Case "PT" partRS = Val(Data) FLY.WriteLine ("----Part#" & Str(partRS) & "----") FLY.WriteBlankLines (3) partnb = partnb + 1 Case "VY" nbvalS = Val(Data) If opt = 3 Then COMResume.Text = COMResume.Text & vbNewLine & vbNewLine & vbNewLine Else COMResume.Text = vbNullString End If COMResume.Text = COMResume.Text & vbNewLine & " Communication Summary (Y) :" & vbNewLine COMResume.Text = COMResume.Text & " ---------------------------------------------------" & vbNewLine COMResume.Text = COMResume.Text & " Values Pretended = " & Val(nbvalH) & vbNewLine COMResume.Text = COMResume.Text & " Values Sent = " & Val(nbvalS) & vbNewLine COMResume.Text = COMResume.Text & " Values Received = " & Val(nbvalL) & vbNewLine COMResume.Text = COMResume.Text & " Number of Parts = " & Val(partnb) & vbNewLine COMResume.Text = COMResume.Text & " ---------------------------------------------------" & vbNewLine End Select BufferIN = vbNullString Loop Until Code = "RD"
Partager