Rapatriement de données par rs232

cs_manuel24 Messages postés 5 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 25 mai 2004 - 7 mai 2004 à 15:51
enbaouiimed Messages postés 5 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 16 mai 2005 - 16 mai 2005 à 22:21
bonjour quelqu'un, je lance une bouteille dans l'océan des programmeurs au cas où (on ne sait jamais) la réponse serait connu d'un quidam.
Alors voilà, je suis en plein travail sur une régulation de température à effet Peltier commandée par un générateur programmable HP que je commande par RS232 (visual basic 6)
Sur ce point pas de problème, j'utilise le port 1 et tout va pour le mieux.

De l'autre côté (port2) j'ai un traceur numérique qui me sert de voltmètre (j'ai ainsi accès à la température), bref...
Je connais les commandes de ce traceur, je lui demande de m'envoyer les valeurs, (chose qu'il effectue très bien) mais impossible de créer un programme capable de stocker ces valeurs dans un fichier. Il faut dire que la programmation et moi ça fait trois... Voilà si quelqu'un sait...aidez-moi

15 réponses

cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007
8 mai 2004 à 09:50
Je ne connai pas tout ce qui est pilotage d'interface mais tu pourrai peut etre mettre ton code pour récuperer des valeurs, apres on verai petu etre mieux comme il faut les stocker

@Z3RtY25 ==
0
cs_manuel24 Messages postés 5 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 25 mai 2004
10 mai 2004 à 09:42
eh bien...c'est pas compliqué, j'ai le code qui permet de démarrer, de stopper l'acquisition, jusque là pas de problème. Ensuite je ramène les valeurs et les fais afficher par la commande suivante:

Private Sub valeur_Click()
'aller chercher les valeurs sur le yoko

Dim valeur As String
valeur = MSComm2.Input
Open "C:\Documents and Settings\All Users\Documents\Manuel\RS-232\valeur" For Output As #1
MSComm2.Output = "data:channel1:send?" & vbCrLf
Print #1, valeur
valeurtxt.Text = valeurtxt.Text & valeur & vbCrLf
Close #1

End Sub

Mais les valeurs arrivent par paquets d'environ 30 valeurs chacun, du style:
1.136,1.135,1.135,1.136,1.135 etc....

J'ai comme projet de rentrer cette commande dans une boucle pour comparer les valeurs que me donne la machine à une référence pour créer un asservissement.

Ma question est : comment séparer ces foutus paquets en valeurs indépendantes qui serait: 1.135
1.135
1.136 etc...
Que le PC gère les paquets inscrits sur le tampon indépendamment en ne considérant que les valeurs comprises entre les ",", j'ai essayé un truc avec split sans succés, voilà, j'espère que c'est devenu un peu plus clair.
:clown)
0
cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007
10 mai 2004 à 13:05
Ci je dit une erreur dans ce qui suit, c'est que ton code n'est pas le bon, alors fait signe, il faut corriger ;)

La variable valeur prend apparament ce qui arrive depuis l'interface (valeur = MSComm2.Input)

Apres tu ouvre le fichier valeur
Open "C:\Documents and Settings\All Users\Documents\Manuel\RS-232\valeur" For Output As #1
Sans extension donc ?!

MSComm2.Output = "data:channel1:send?" & vbCrLf
La tu envoye sur l'interface

Apres tu enregistre dans le fichier la valeur qui est arrivée (Print #1, valeur)

La tu met dans une textbox (valeurtxt) le contenu de valeurtxt et la valeur arrivée par l'interface et un saut de ligne(valeurtxt.Text = valeurtxt.Text & valeur & vbCrLf)

Ensuite si tu veux séparer les valeurs par un split sur les virgules, c'est très simple, tu fait
Dim variable() as long 'on déclare un tableau de variables vide qui contient des chiffres, tu peux changer le type de variable, sa dépend apres de toivariable split(valeur,",") 'variable() est dimensionné tout seul et variable(0) est la premiere valeur de la chaine que tu récupere et que tu veux séparer, variable(1) la deuxieme etc @Z3RtY25 ==
0
cs_manuel24 Messages postés 5 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 25 mai 2004
10 mai 2004 à 14:44
salut, j'ai suivi tes conseils quant à la séparation de mes variables, j'ai cependant essayé de faire afficher variable(1), par exemple, dans une textbox (mais ça n'est sûrement pas possible) et ça n'a pas fonctionné, il m'affiche un message d'erreur; "tableau attendu"

Private Sub valeur_Click()
'aller chercher les valeurs sur le yoko
Dim valeur As String
Dim variable As Single
valeur = MSComm2.Input
Open "C:\Documents and Settings\All Users\Documents\Manuel\RS-232\valeur.txt" For Output As #1
MSComm2.Output = "data:format ascii" & vbCrLf
MSComm2.Output = "data:channel1:send?" & vbCrLf
Print #1, valeur
variable = Split(valeur, ",")
valeurtxt.Text = valeurtxt.Text & variable(1) & vbCrLf
Close #1
End Sub

mais c'est pas grave, pour le moment je vais essayé de traiter ces valeurs sous la forme d'un tableau en créant une boucle qui gèrera chaque variable(x) indépendamment

concernant le manque d'extention de mon fichier, je t'avoue que je ne sais pas quoi lui mettre, je ne vais pas mettre un .txt alors???

bon, en tout cas , c'est bien sympa de t'intéresser à ce problème, parceque là je suis dans une galère où je suis le seul à tapoter le clavier, vois tu?

bon, à plus :)
0

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

Posez votre question
cs_manuel24 Messages postés 5 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 25 mai 2004
10 mai 2004 à 14:54
Bon, autant pour moi, je n'avais déjà pas déclarer la variable() comme il fallait....

Voici ce que j'ai mis:

Private Sub valeur_Click()
'aller chercher les valeurs sur le yoko

Dim valeur As String
Dim variable() As Single

valeur = MSComm2.Input
Open "C:\Documents and Settings\All Users\Documents\Manuel\RS-232\valeur.txt" For Output As #1
MSComm2.Output = "data:format ascii" & vbCrLf
MSComm2.Output = "data:channel1:send?" & vbCrLf
Print #1, valeur
variable = Split(valeur, ",")
valeurtxt.Text = valeurtxt.Text & variable(1) & vbCrLf
Close #1
End Sub

Et il aime pas du tout (?????)
0
cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007
10 mai 2004 à 18:28
J'ai testé la partie que je peux, et le probleme que j'ai vu est au niveau des declarations de variables, si valeur est une string et que le tableau est un single, sa le fait pas. Si les données arrivant de ton engin est sous forme d'une chaine, déclare alors ton tableau comme contenant des chaines aussi : Dim variable() As String

@Z3RtY25 ==
0
cs_manuel24 Messages postés 5 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 25 mai 2004
25 mai 2004 à 10:43
Merci bien, l'ami(e), je travaille depuis sur ce problème et la seule solution, comme bien souvent, c'est de travailler, si tu plonges un peu ton nez dans des bouquins tu peux faire des miracles.
En tout cas, saches que je suis arrivé à créer une régulation PID en gérant les deux ports et ça fonctionne à merveille.
Voilà, merci bien pour ton coup de main mais la prochaine fois je poserai des questions une fois que toutes les pistes auront été explorées.
Allez, bonne journée à toi et merci encore. ;)
0
cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007
26 mai 2004 à 00:27
Mais de rien l'ami ;)
Bonne prog
PS : Moi être 1 mâââââle ;)

@Z3RtY25 ==
0
cs_natan59 Messages postés 3 Date d'inscription lundi 24 mai 2004 Statut Membre Dernière intervention 22 juin 2004
17 juin 2004 à 14:58
lut les cocos
moi etre male too
je voudrai savoir si il y a possibilité que l'on m'aide car moi je n'arrive pas a faire un prog en Access qui lit mon port serie (rs232). si quelqu'un pouvais m'aider a récuperer cette info avec Access.
amicalement
le lapinoux :-x
0
cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007
17 juin 2004 à 18:05
J'en sais absolument rien et encore moins en Access :(

@Z3RtY25 ==
0
cs_natan59 Messages postés 3 Date d'inscription lundi 24 mai 2004 Statut Membre Dernière intervention 22 juin 2004
22 juin 2004 à 14:28
lol
ba c'est pas grave, maintenant j'arrive a le lire, mais pour mettre "en page" mon code, il me faudrai savoir comment faire pour effacer le buffer et a suprimer ma zone de texte.

voila voilou.
amicalement

le lapinoux :-x
0
enbaouiimed Messages postés 5 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 16 mai 2005
16 mai 2005 à 22:21
Salut je cherche à faire une petite supervision avec un automate Siemens
0
enbaouiimed Messages postés 5 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 16 mai 2005
16 mai 2005 à 22:21
Salut je cherche à faire une petite supervision avec un automate Siemens
0
enbaouiimed Messages postés 5 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 16 mai 2005
16 mai 2005 à 22:21
Salut je cherche à faire une petite supervision avec un automate Siemens
0
enbaouiimed Messages postés 5 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 16 mai 2005
16 mai 2005 à 22:21
Salut je cherche à faire une petite supervision avec un automate Siemens
0
Rejoignez-nous