KelaireM
Messages postés16Date d'inscriptionmercredi 20 avril 2016StatutMembreDernière intervention 5 juillet 2016
-
Modifié par KelaireM le 19/05/2016 à 15:54
KelaireM
Messages postés16Date d'inscriptionmercredi 20 avril 2016StatutMembreDernière intervention 5 juillet 2016
-
5 juil. 2016 à 09:56
Bonjour à tous!
Je suis face au problème suivant : j'envoie et je reçois des données par un port série. Les données envoyées sont tirées d'un fichier .HEX. Il nécessite un certain traitement.
Lors de l'appel d'un sub, qui est relié à une barre de progression, je perd la main sur l'application : impossible de bouger la fenêtre, la barre de progression a du mal à se mettre à jour, son effet visuel de scintillement n'est plus là..
Je pense que c'est à cause des évènements : lorsque je rajoute des "Application.DoEvents", le scintillement revient par moment, il en est de même pour la main : je peux déplacer la fenêtre, la réduire, ...
Tous les wait4 sont des boucles while avec strictement rien à l'intérieur.
WriteRS232 permet d'envoyer des données hexa via le port rs-232.
Ces deux fonctions sont utilisés à d'autre moment et ne supprime pas la main sur l'application..
J'ai une fonction qui permet de lire en continue sur le port série : "duff = duff & CStr(SPort1.ReadExisting)" où duff est une variable globale que je viens regarder lors de l'appel de "wait4". (il semble que ce ne soit pas "Thread-safe", mais je n'ai pas compris ce que ça implique.)
il y a encode du code pour la partie d'initialisation, mais il est long, je le mettrais si vous demandez! (Il existe une balise pour cacher? div et spoiler ne marchent pas!)
vb95
Messages postés3472Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention13 avril 2024169 19 mai 2016 à 16:53
Bonjour
Je serais toi je mettrais ma Sub en tâche de fonds avec un BackGroundWorker
ton projet s'exécute dans un Thread et ta sub s'exécuterait dans un autre !thread ce qui éviterait le blocage de ton interface
Les
Application.Doevents()
semblent un peu corriger le problème car ils obligent le code à retourner dans le système ( donc au niveau de ton interface ) pour rafraichir le système et donc ton projet par la même occasion
Whismeril
Messages postés19022Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention17 avril 2024656 19 mai 2016 à 19:23
Bonsoir
je plussoie
vb95
Messages postés3472Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention13 avril 2024169
>
Whismeril
Messages postés19022Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention17 avril 2024 19 mai 2016 à 20:55
Merci whis pour ton "plussoiement"
On invente des nouveaux mots
bonsoir à toi
Whismeril
Messages postés19022Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention17 avril 2024656
>
vb95
Messages postés3472Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention13 avril 2024 19 mai 2016 à 21:15
Oh c'est pas si nouveau que ça!
Depuis la Zénitude, c'est fou le nombre de néologisme qui ont fleuri
vb95
Messages postés3472Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention13 avril 2024169
>
Whismeril
Messages postés19022Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention17 avril 2024 19 mai 2016 à 21:55
pour le verbe plussoyer ok c'est pas nouveau mais moi j'ai inventé peut-être le "plussoiement"
D'ailleurs il est souligné en rouge comme quoi j'avais fait une faute d'orthographe ou de frappe
bon Weekend à toi
KelaireM
Messages postés16Date d'inscriptionmercredi 20 avril 2016StatutMembreDernière intervention 5 juillet 2016 20 mai 2016 à 08:46
Bonjour, merci de vos réponses!
Je ne suis pas extrêmement douée avec le BackGroundWorker, pour l'instant ça me fait des erreurs, je m'y remet ce matin en espérant être plus fraîche et je tiens au jus! :-)
KelaireM
Messages postés16Date d'inscriptionmercredi 20 avril 2016StatutMembreDernière intervention 5 juillet 2016 20 mai 2016 à 10:20
Rebonjour!
J'ai fais certains tests. Il semblerait que cela ne vienne pas du thread de lecture, mais de l'écriture sur le port..
En effet, cela bloque lorsque je convertie un bloc de 2Ko d'hexa en byte et que je l'envoie..
Pourtant le code est simple.. :
Private Sub WriteRS232(Data As String, nbData As Integer)
Dim Buffer() As Byte Dim i As Integer Dim ChkSum As Integer Dim EntChkSum As Integer Dim RstChkSum As Integer Dim StrEntChkSum As String Dim StrRstChkSum As String
'Buffer of 2KB ReDim Buffer(0 To 2047)
For i = 0 To Data.Length - 1 Step 2 'Conversion in byte Buffer(i \ 2) = Convert.ToByte(Data.Substring(i, 2), 16) Next
'Verify CheckSum For i = 0 To (nbData - 1) ChkSum += Buffer(i) Next
RstChkSum = ChkSum Mod 256 StrRstChkSum = Hex(RstChkSum) If StrRstChkSum.Length = 1 Then StrRstChkSum = "0" & StrRstChkSum End If
RstChkSum = Convert.ToInt32(StrRstChkSum, 16)
EntChkSum = ChkSum \ 256 StrEntChkSum = Hex(EntChkSum) If StrEntChkSum.Length < 2 Then StrEntChkSum = "0" & StrEntChkSum Else StrEntChkSum = StrEntChkSum.Substring(StrEntChkSum.Length - 2, 2) End If
EntChkSum = Convert.ToInt32(StrEntChkSum, 16)
Str_ChkSum = Chr(RstChkSum) & "" & Chr(EntChkSum)
'Send the data SPort1.Write(Buffer, 0, nbData)
End Sub
C'est peut être à cause de la longueur ? 2Ko..
vb95
Messages postés3472Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention13 avril 2024169 Modifié par vb95 le 20/05/2016 à 12:43
Bonjour
Mais WriteRS232 est bien une sub qui est contenue dans la sub qui te bloque ! Et c'est la sub qui te bloque qu'il faut mettre en BackGround !
De plus lorsque Windows écrit sur un port RS232 il n'écrit pas forcement tout le tableau d'un seul coup mais cela on n'y peut rien
KelaireM
Messages postés16Date d'inscriptionmercredi 20 avril 2016StatutMembreDernière intervention 5 juillet 2016
>
vb95
Messages postés3472Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention13 avril 2024 5 juil. 2016 à 09:56
Je suis revenue sur le projet cette semaine.
Ça marche très bien! un grand merci! :-)
vb95
Messages postés3472Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention13 avril 2024169 20 mai 2016 à 23:30
19 mai 2016 à 19:23
je plussoie
19 mai 2016 à 20:55
On invente des nouveaux mots
bonsoir à toi
19 mai 2016 à 21:15
Depuis la Zénitude, c'est fou le nombre de néologisme qui ont fleuri
19 mai 2016 à 21:55
D'ailleurs il est souligné en rouge comme quoi j'avais fait une faute d'orthographe ou de frappe
bon Weekend à toi