Acquisition de données et stockage dans excel

cs_ophe Messages postés 8 Date d'inscription mardi 12 avril 2005 Statut Membre Dernière intervention 13 mai 2005 - 10 mai 2005 à 11:23
macgyver49 Messages postés 58 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 5 août 2005 - 30 mai 2005 à 15:09
Hello,
C'est la première fois que je programme et j'ai un peu de mal (c'est peu dire) à faire une acquisition de données.


En fait j'aimerais récupérer des infos arrivant sur le port com1 du pc et les stocker dans excel.... Ces informations sont en fait issues de capteurs de poids, je travaille à 9600 bauds et la chaine de charactères reçue contient : 1 bit de start, 1 bit de parité, 8 bits de données et 1 bit de stop...


Je n'ai peut etre pas été bien clair dans mon explication, en tout cas siquelqu'un a des astuces je suis preneuse. D'après ce que j'ai pu avoir comme infos il faut que j'utilise la fonction Mscomm, mais malgré des exemples trouvés sur des sites mon programme est vite bloqué et vu que je ne comprends pas grand chose ça marche pas!!!
Merci d'avance...

11 réponses

macgyver49 Messages postés 58 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 5 août 2005
10 mai 2005 à 13:58
Bonjour,

Que veux tu savoir sur la fonction MSComm ?
Pour l'utiliser, il faut:
- définir les paramètres de la communication (Vitesse de transmission, le bit de parité, ...)
- Ouvrir la communication sur le port série que tu veux (.connect)
- Pour la lecture des infos sur le port, il faut utiliser la méthode .Input et pour ecrire la méthode .Output .
- Enfin, il faut fermer le port de communication pour éviter que ça plante.

Pour plus de précisions ou un petit coup de pouce, nous nous tenons à ta disposition.

Titi & Panpan
0
cs_ophe Messages postés 8 Date d'inscription mardi 12 avril 2005 Statut Membre Dernière intervention 13 mai 2005
10 mai 2005 à 14:26
En fait mon programme a cette tête :

Private Sub CommandButton1_Click()
Dim Instring As String


MSComm1.InBufferCount = 0


MSComm1.CommPort = 1


MSComm1.Settings = "9600,e,8,1"


MSComm1.PortOpen = True


MSComm1.Input = "MSV"


Do
dummy = DoEvents()
Loop Until MSComm1.InBufferCount >= 11

Instring = MSComm1.Input


MSComm1.PortOpen = False


End Sub

En fait j'ai pondu ce petit morceau de programme mais vu que c'est la première fois que je touche à la programmation (toutes confondues ) je comprends pas vraiment tous ce que je fais...
Je pense que pour récupérer les données il faut envoyer MSV mais je ne suis pas à 100% car la notice des capteurs n'est pas vraiment explicite...
Quant au reste je ne sais pas comment faire intervenir dans le programme que j'ai 1 bit de start, et que je veux récupérer mes données toutes les 5 secondes...
Que de questions sans réponses... J'apprécierais vraiment votre aide.
Merci d'avance et bonne journée
0
cs_nr Messages postés 164 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 11 juillet 2005
10 mai 2005 à 15:09
Salut,

Tout d'abord avec mscomm l'option settings te permet de fixer le nb de bit de start stop etc...
N'étant pas certain du fonctionnement de tes capteurs, je te propose d'utiliser l'hyperterminal windows en ouvrant une communication sur le port serie avec le format qu'il te faut. Tu tapes MSV au clavier et tu devrai avoir un retour. Quand tu aurras ca déja cela sera bien.
Ensuite il paramétrer ton port serie une seul fois.

Dans

form load
mscomm1.settings = "9600,e,8,1" 'verifie bien le format !
mscomm1.commport = 1
mscomm1.portopen = true

dans

Private Sub CommandButton1_Click()
mscomm1.output = "MSV" ' envois la data MSV en majuscule
Do
Loop Until MSComm1.InBufferCount >= 11
Instring = MSComm1.Input
end sub

dans
form unload
mscomm1.portopen = false
end

@+
0
cs_ophe Messages postés 8 Date d'inscription mardi 12 avril 2005 Statut Membre Dernière intervention 13 mai 2005
10 mai 2005 à 15:31
Je suis un peu blonde sur les bords mais je fais comment pour ouvrir le port et l'interroger avec MSV?
Une autre petite chose : avec l'option setting je fais apparaitre où le fait que j'ai un bit de start? C'est pas la peine de lui préciser? C'est inclu dans ma boucle du fait que je lui demande de compter 11 charactères?
Enfin comment lui faire comprendre que je veux recevoir et enregistrer dans Excel mes données toutes les 5 secondes?
Que de questions... Je n'ai pas de pratique dans ce domaine et j'ai un peu de mal je l'avoue!!!
Merci à tous pour votre participation...
0

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

Posez votre question
cs_nr Messages postés 164 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 11 juillet 2005
10 mai 2005 à 17:35
Dans le menu demarrer programmes accessoires tu as l'hyperterminal. Au demarrage il te propose d'effectuer une nouvelle connexion tu mets un nom quelconque ensuite dans la fenetre suivante dans la rubrique "connecter en utilisant" tu choisit com1. ensuite tu mets tes paramètres (le bit de start fait partie du protocole serie tu n'as pas à le gérer) après avoir cliquer ok, tu tapes MSV et tu observe l'ecran pour voir si tu as une réponse. Si ca n'est pas le cas cela veut dire que tes paramètres de connections ne sont pas bon ou que tes capteurs s'interroge différement.

Sinon en vb dans ta boucle il faut mettre autre chose que 11 (je n'est pas fait gaffe tout à l'heure) car tu recoit que les datas tu n'as pas ni les bits de start stop parité qui apparaisent dans le buffer réception (c'est gérer par l'ocx). Ensuite tu peut créer un fichier txt avec tes valeurs et le lire avec excel.

@+
0
cs_ophe Messages postés 8 Date d'inscription mardi 12 avril 2005 Statut Membre Dernière intervention 13 mai 2005
11 mai 2005 à 09:58
Je ne parviens pas à écrire dans la fenetrede l'hyperterminal... Est-ce normal avec milennium?
Sinon en ce qui concerne à boucle il faut que je lui demande d'avoir 8 characteres si j'ai bien compris... Et une fois cela reglé je peux enregistrer dans excel pas besoin de passer parun fichier texte?
Merci @+
0
macgyver49 Messages postés 58 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 5 août 2005
11 mai 2005 à 13:46
Petite question:
As tu déjà réussi à recevoir des trames venant des capteurs?

Voila ce que l'on te propose comme code:

form load
mscomm1.settings = "9600,e,8,1"
mscomm1.commport = 1
mscomm1.portopen = true
'Le timer se declenchera toutes les 5secondes
Timer1.interval=5000
end sub

Public Sub Timer1_Timer()
'Appel de la fonction Lecture
call lecture
end sub

'Fonction de lecture des valeurs sur les capteurs
Public Sub Lecture()
dim Instring as string
mscomm1.output = "MSV" 'Envoie la data 'MSV' en majuscule
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 8
'Tu peux aussi surveiller les caractères de fin de chaine (souvent VbCrLf). 'Alors, tu pourra recevoir toute la trame

'Lecture de la trame sur le port série
Instring = MSComm1.Input

'Supprime les anciennes trames du port série
MSComm1.OutBufferCount=0

'Ecriture dans le fichier Excel
'Pour cela, soit tu créés une application Excel via VB et tu ajoutes les 'informations cellules par cellules, ou alors, tu peux enregistrer les valeurs 'dans un fichier texte et ouvrir ensuite le fichier texte sous Excel.
end sub

form unload
mscomm1.portopen = false
end
end sub

Si tu as besoin de nous, tu sais où nous trouver.

Titi & Panpan
0
cs_ophe Messages postés 8 Date d'inscription mardi 12 avril 2005 Statut Membre Dernière intervention 13 mai 2005
11 mai 2005 à 14:23
Tout d'abord merci beaucoup pour votre aide. Je vais essayer de suivre votre programme en esperant sortir la tete de l'eau... En fait mon seul probleme est que je ne suis pas encore arrivée à communiquer avec mes capteurs. La notice est en anglais et deja en français je n'aurais peut etre pas trouvé du premier coup alors en anglais vous imaginez même pas.... Finalement ce n'est surement pas la commande MSV... Je continue à potasser et je vous donne de mes nouvelles.
Tchao
0
cs_ophe Messages postés 8 Date d'inscription mardi 12 avril 2005 Statut Membre Dernière intervention 13 mai 2005
13 mai 2005 à 13:44
Au secours, je veux bien utiliser le programme de titi&panpan mais je ne comprends pas à quoi correspond form load,Public Sub Lecture()......
Je ne suis pas tres douée... En plus je ne sais pas comment trouver la commande pour recevoir mes characteres.... L'hyperterminal ne fonctionne pas je ne peux toujours pas ecrire dans la fenetre....
Help....
Merci de votre aide..
0
macgyver49 Messages postés 58 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 5 août 2005
25 mai 2005 à 14:45
Titi & Panpan
0
macgyver49 Messages postés 58 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 5 août 2005
30 mai 2005 à 15:09
Titi & Panpan
0
Rejoignez-nous