[Catégorie encore modifiée VB6 -> VBA] Bug récupération de valeurs :O

shinrei69 Messages postés 75 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 30 juin 2011 - 24 mai 2011 à 10:41
shinrei69 Messages postés 75 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 30 juin 2011 - 25 mai 2011 à 13:58
Bonjour bonjour, j'ai un petit problème de récupération de données via une balance "sartorius". Mon code ne me permet pas de récupérer les valeurs comme je le voudrais :/. Pourtant pour la partie récupération il s'agit du même code qu'une autre balance (de même modèle je vous vois venir) possède et qui marche :(. J'ai peut être oublié quelque chose, si vous pouviez y jeter un coup d'oeil.. Merci :D


Private Sub MSComm1_OnComm()

    Dim tampon As String
    'Si la communication sur le port Comm n'est pas mis en route
    If Ufrm_Comm.MSComm1.PortOpen = False Then
        
        'Ouverture du UserForm permettant de lancer la communication sur le port Comm
        Ufrm_Comm.Show
    
    End If
    
    'Si la communication sur le port Comm est bien en route
    If Ufrm_Comm.MSComm1.PortOpen = True Then
    
        Ufrm_Comm.MSComm1.Output = Chr(27) & Chr(84) & Chr(13) & Chr(10)    'Envoie des caractères "ESC" + "T" + "CR" + "LF"
        
    End If
    
End Sub
    
    Select Case MSComm1.CommEvent
    
    
        Case comEvReceive       ' Si on reçoit des données
            tampon = MSComm1.Input
            Call traitement(tampon) ' Routine de traitement
    
        'Case comEvSend          ' Il y a des caractères à envoyer
        'Case comEvEOF           ' On a reçu le caractère EOF
        MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,7,1"
MSComm1.InputMode = comInputModeText
MSComm1.InputLen = 0 'all buffer from port
MSComm1.NullDiscard = True
'Use in Sub MSComm_OnComm() all string conversion and port reading.
        
    End Select
End Sub




CODE CODE CODE


UserForm_Terminate() = Fermeture_Port
    'Script qui se lance à la fermeture du UserForm
    'Appel de la routine de fermeture du port de communication
  

End Sub


Le but est de récupérer des valeurs dans un classeur excel pour faciliter la vérifications de cartons expédiés


Merci d'avance

38 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
24 mai 2011 à 14:16
si tu as dit
J'ai appelé le constructeur Balance, donc j'ai 9 600 bits par secondes, 7 bits de données, parité = pair, 1 Bit d'arrêt.


alors
parité pair
MSComm1.Settings = "9600,E,7,1"
0
SebSemos Messages postés 57 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 13 juin 2011 1
24 mai 2011 à 14:29
Sinon si tu sait quand tu vas recevoir des données tu peut faire une boucle du genre :
 Sub lecture() 'Lecture du port série et renvoi la valeur dans k
        Dim sInput As String
        Dim Count As Integer
        Count = 0
        For Count = 0 To 100000 'environ 2secondes de lecture
            sInput = XMCommCRC1.Input 'Lecture du buffer d'entré du port série
            If (Len(sInput) > 0) Then 'Si sInput n'est pas vide
                TextBox1.SelectedText = sInput 'On place sInput dans une Textbox, à la suite des caractères précédents
                If (Len(TextBox1.Text) > 1) Then 'Si la longueur de la chaine de caractère de la textbox est égale à 2
                    TextBox1.SelectionStart = 0 'Début de la sélection avant le caractère n°0
                    TextBox1.SelectionLength = 2 'Longueur de la sélection : 2 Caractères
                    k = TextBox1.SelectedText 'Texte séléctionné copié dans la variable k
                    Count = 100000 'Compteur au maximum pour stopper la lecture
                End If
            End If
        Next Count 'Incrémentation de Count
End Sub



et dans le reste du code tu colle un : call lecture
c'est peut être pas la façon la plus propre...




Public Semos as String'
0
shinrei69 Messages postés 75 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 30 juin 2011
24 mai 2011 à 14:37
Et ce ne serait pas possible, juste de récupérer la valeur lue et de la mettre dans une variable pour s'en servir tout au long du programme après?


[Pour ucfoutu, effectivement si je me suis inscrit dans la section "débutant" c'est que je n'y connais pas grand chose, voir rien si c'est ce que tu préfère entendre et je n'ai jamais revendiqué le contraire mais ce n'est pas pour ça qu'à été créée la section débutant?]
0
SebSemos Messages postés 57 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 13 juin 2011 1
24 mai 2011 à 14:44
Bah c'est bien ce que fait mon code il me semble

Faut juste penser à déclarer k comme string en globale, donc en début de programme

ici les caractères envoyés sont lus un à un, pour une balance je suppose que tu connait le nombre de caractères, il te reste à adapté le deuxième if.

Une petite modif tout de même ma syntaxe marche sur du .net, pour du VBA il faut :
TextBox1.SelText = sInput
TextBox1.SelStart = 0
TextBox1.SelLength = 2


Public Semos as String'
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 mai 2011 à 14:50
Sans doute, sans doute ...
Mais nous avons tous forcément été débutant au ... début. Je l'ai donc été, comme toi, comme tout le monde.
On débute généralement (informatique ou non) par l'apprentissage des bases les plus élémentaires, ce que tu ne me parais pas avoir même tenter de commencer.
Mais il y a autre chose de non moins important : savoir (informatique ou non, encore une fois) sens et la portée supposée de ce que l'on écrit, afin d'éviter (informatique ou non) ce qui est un non-sens, ce qui ne correspond à rien ou (bien pire) ce que le simple bon sens (informatique ou non) permet d'en déceler le côté saugrenu !
Analyse la phrase suivante et tu commenceras à comprendre, par exemple :
"Je n'aime pas les épinards. Et heureusement que je ne les aime pas, car, si je les aimais, j'en mangerais. Et comme je n'aime pas les épinards ..." !
Saugrenu, n'est-ce pas ?



____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
shinrei69 Messages postés 75 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 30 juin 2011
24 mai 2011 à 14:58
Je suis totalement d'accord avec toi sur le fait que j'ai fait un apprentissage à la va vite. Mais je ne demande qu'à apprendre et personne ne pourras me blâmer pour ça. Je fait ce que je peux avec les moyens que j'ai de rendre service à mon entreprise pour des raisons personnelle. je suis déjà relativement content de moi du fait que mon code marche en mode test. (C'est à dire en remplaçant mes variables par du chiffre). Après c'est su que pour le puritain ce seras moche. J'avais juste posé une question afin de pouvoir bouclé ce projet et commencer la prog' comme hobbie, pas pour embêter.


Et merci SebSemos, je tenterais ton code demain et je re posterais pour te tenir informé ;)
0
SebSemos Messages postés 57 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 13 juin 2011 1
24 mai 2011 à 16:00
Une dernière précision :
N'oublie pas de vider la textbox après chaque lecture pour éviter les données érronés
TextBox1.Text = ""

Rajoute sa après le Next Count ;)

_______________________
Imports System.Thinking
Public Semos As String 'Variable facultative
Public Class
'La vie Roxxx un max à qui s'en donne la peine
End Class
0
shinrei69 Messages postés 75 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 30 juin 2011
25 mai 2011 à 11:02
je revient aux nouvelles, cela ne marche toujours pas, de plus j'ai appris aujourd'hui qu'il fallait ajouter un paramètre de tarage à la balance, c'est à dire que je doit non seulement réceptionner ses donnés afin de pouvoir les utiliser après, mais aussi lui en envoyer pour pouvoir la remettre à zéro en chaque début de cycle. Je croit que je ne m'en sortirais pas. Vraiment au pire si quelqu'un est ultra motivé à m'aider (moyennant toute ma gratitude), je suis prêt à envoyer les deux programmes (l'ancien et le mien) par mail..

Avec (encore) tout mes remerciements d'avoir tenté de faire quelque chose pour moi :)
0
SebSemos Messages postés 57 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 13 juin 2011 1
25 mai 2011 à 11:21
Sa ne marche toujours pas? alors peut être que le soucis ne vient pas du prog, as tu testé ton port série, si tu as un autre pc, utilise d'abord hyper terminal pour voir si tu peut dialoguer entre les deux, ensuite, utilise le programme pour voir si tu peut recevoir ce qu'envoi hyper terminal depuis l'autre pc. Si sa sa marche, c'est qu'il y a un soucis avec la balance, tu peut aussi essayer de lire la balance avec hyper terminal ;)

_______________________
Imports System.Thinking
Public Semos As String 'Variable facultative
Public Class
'La vie Roxxx un max à qui s'en donne la peine
End Class
0
shinrei69 Messages postés 75 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 30 juin 2011
25 mai 2011 à 11:33
Quand je test l'ancien programme, il reçoit les données exacte de la balance. Jpense qu'on peux en déduire que c'est le mien qui bug quelque part^^
0
SebSemos Messages postés 57 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 13 juin 2011 1
25 mai 2011 à 11:38
Alors dans ce cas, repars depuis l'ancien programme. Tu rajoute les modifs nessecaires, et hop plus de soucis ( en principe ) ^^

_______________________
Imports System.Thinking
Public Semos As String 'Variable facultative
Public Class
'La vie Roxxx un max à qui s'en donne la peine
End Class
0
shinrei69 Messages postés 75 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 30 juin 2011
25 mai 2011 à 11:43
Hum, c'est bien ça le problème; c'est ce que j'essaye de faire depuis hier matin :O. En gros l'autre programme récupère les valeurs et les écrit dans un label après appuie sur une touche , moi je voudrais faire de même mais automatiquement et en appliquant plus de critère de variables.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
25 mai 2011 à 11:46
Salut
Oh moins tu sais où tu en es

les écrit dans un label après appuie sur une touche , moi


c'est pas mieux ?
0
SebSemos Messages postés 57 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 13 juin 2011 1
25 mai 2011 à 12:06
moi je voudrais faire de même mais automatiquement


Hum, donc tu es obligé de passer par le Case OnComm, :s perso j'ai jamais pu faire marcher le port avec sa, en même temps, j'ai pas chercher lomgtemps non plus vu que mon prog marchais ac ma boucle.
Mais a y réfléchir un peu, je crois que le soucis devais pas être bien différent du tiens, j'avais jamais rien qui se passais.... désolé de pas pouvoir plus t'aider.


_______________________
Imports System.Thinking
Public Semos As String 'Variable facultative
Public Class
'La vie Roxxx un max à qui s'en donne la peine
End Class
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
25 mai 2011 à 12:19
0
shinrei69 Messages postés 75 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 30 juin 2011
25 mai 2011 à 13:19
Ou Sinon SebSemos je te file mon adresse e-mail par mp et on voit ça directement, ce serait peut être plus simple^^
0
SebSemos Messages postés 57 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 13 juin 2011 1
25 mai 2011 à 13:54
Plus simple je pense pas, j'ai pas le net la semaine en degors du boulot, (Sauf si je vais manger au Mac Do ) et le weekend, j'aimerais déja qu'il y ai 2 jours en plus pour faire ce que je prévois donc j'ai pas le temps du tout. Je t'ai donner mon astuce de la boucle, mais j'ai pas le temps de me replonger dans histoire de port série pour le moment. Si jamais je trouve un solution ( Notament en explorent le lien de ShayW ) je te retiendrai au jus par MP, j'ai des projet perso qui se servirons du port série, sa sera l'ocas pour moi de m'y replonger, mais, sa sera pendant les vacances :)

_______________________
Imports System.Thinking
Public Semos As String 'Variable facultative
Public Class
'La vie Roxxx un max à qui s'en donne la peine
End Class
0
shinrei69 Messages postés 75 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 30 juin 2011
25 mai 2011 à 13:58
Pas de problèmes, je comprends ;). Au pire si quelqu'un d'autre est motivé à ce que je lui passe les deux programmes, histoire de comparer les deux, pas de soucis :D
0
Rejoignez-nous