je souhaite réaliser une interface VB me permettant d'envoyer des données en hexadécimal vers un microcontrolleur via le RS232.
J'ai trouvé ceci : http://www.siteduzero.com/tuto-3-323...ort-serie.html qui m'explique comment paramétrer et envoyer des données au RS232. Toutefois, comment fait-on pour envoyer des données de type hexadécimal ou même binaire ? pour que mon microcontrolleur puisse y comprendre.
dois-je juste faire par exemple au lieu de M dans l'exemple, mettre : $8 ou($)8 ?
Il faut par exemple que si j'envoie 79 de l'interface au microcontrolleur, alors mon programme du microcontrolleur devra ouvrir tel port... si il reçoit 85 il ouvrira tel ports....
Si quelqu'un a une petite idée sur l'envoie de données hexadécimale, je lui serais très reconnaissant
Une liaison série ne connait que des octets. Donc si tu écris :
Code:
MSComm.Output = "M"
MSComm.Output = chr$(77)
Dans les deux cas il y a un octet binaire 01001101 ou l'héxa 0x4D qui est envoyé sur la liaison RS232
L'age n'est pas un handicap .... Encore faut-il arriver jusque là pour le constater !
17/02/2008 - 12h03
lil-vince
Date d'inscription
février 2008
Localisation
Lyon
Âge
26
Messages
1 112
Re : VB envoyer des données avec le rs232
Toutefois, comment fait-on pour envoyer des données de type hexadécimal ou même binaire ? pour que mon microcontrolleur puisse y comprendre
Je ne sait pas si tu sais que que t´écrive un nombre en hexa, en décimal ou en binaire, dans tous les cas dans ton proc c´est inscrit en binaire!
Donc il n´y a rien à faire (d´ailleurs, la lettre "M" ca n´est pas du binaire!)
17/02/2008 - 18h19
gedonet
Date d'inscription
février 2004
Messages
616
Re : VB envoyer des données avec le rs232
Bonjour
Attention coté PC si le µC doit envoyer des données, les valeurs superieurs à 128, en dehors de la table ascii, peuvent avoir des effets curieux si on les affiche comme un ascii.
Gilles
20/02/2008 - 13h30
Panda184
Date d'inscription
janvier 2008
Messages
50
Re : VB envoyer des données avec le rs232
Pour l'instant je ne recçoit pas de données du µC. Je verrais cela plus tard.
Je vais suivre cette procédure donc : MSComm.Output = chr$(77)
Il me reste à voir maintenant comment gérer ces données dans le µC. C'est à dire que quand le µC reçoit 77 alors la pinA1 est activée. J'en ai pas la moindre idée je dois avouer.
Sinon sur Visual Basic est-ce que vous savez comment faire pour lorsque j'appuie sur un bouton, outre les données envoyer avec le RS232, faire défiler un bloc, un objet. Je sais pas comment m'exprimer.
Je vais essayer de prendre une image: Vous voyez les volets électriques qui s'ouvre et se ferme verticalement ? Les volets roulants, et bien j'aimerais avoir le même effet. En quelque sorte avoir un volet roulants qui monte quand j'appuie sur un bouton, ou s'arrête ou descend.
Un truc de ce genre. Je sais pas si vous voyez ce que je veux dire.
J'ai fais des recherches google mais rien ne va, je ne sais pas trop quoi mettre en mot clef lors de la recherche.
Si quelqu'un sait comment on fait, il est le bienvenue
Merci d'avance
Bonne journée
20/02/2008 - 15h04
DAUDET78
Date d'inscription
septembre 2006
Localisation
Ile de France
Âge
69
Messages
32 131
Re : VB envoyer des données avec le rs232
J'ai déjà entendu quelqu'un parler de ce truc Pour le Modo : Ce programme est copyright DAUDET78 (ainsi que les photos) et j'en autorise la publication.......
L'age n'est pas un handicap .... Encore faut-il arriver jusque là pour le constater !
L'envoie de donnée via le RS232 m'a l'air assez compliqué dans votre programme, ça me paraissait beaucoup plus simple dans le tutoriel que j'avais. J'utiliserais d'ailleurs la méthode du tutoriel dans mon programme, bien que cela doit revenir au même résultats que votre programme mais ça me parait plus abordable.
Le programme d'écriture RS232 est ultra simple
Code:
MSComm1.Output = Cr$ + S1$ + S2$ + Lf$
le programme de lecture RS232, je le fais dans Form_Activate (il y a d'autres solution)
Envoyé par Panda184
Pourriez vous m'expliquer comment vous procédez précisément ? Ou si vous avez un tutorial qui l'explique, ça me convient parfaitement
Il y avait deux volets à piloter, un seul (celui de gauche) est validé
Code:
Dim VoletUP%(2) ' si >0 volet à monter
Dim VoletDOWN%(2) ' si >0 volet à descendre
Dim VoletHeight%(2) ' hauteur du volet
Que signifie ceci ?
Code:
Private Sub Timer1_Timer()
If VoletUP%(0) > 0 Then
VoletUP%(0) = Volet(0).Height
VoletUP%(0) = VoletUP%(0) - VoletHeight%(0) / 100
If VoletUP%(0) > VoletMin% Then Volet(0).Height = VoletUP%(0)
End If
If VoletDOWN%(0) > 0 Then
VoletDOWN%(0) = Volet(0).Height
VoletDOWN%(0) = VoletDOWN%(0) + VoletHeight%(0) / 100
If VoletDOWN%(0) > 0 Then Volet(0).Height = VoletDOWN%(0)
If VoletDOWN%(0) > VoletMax% Then Volet(0).Height = VoletMax%: VoletDOWN%(0) = 0
End If
End Sub
C'est la gestion de monté et de descente du volet "0". Cette routine est automatiquement appellée toutes les 50 millisecondes . Rien ne se passe si VoletDOWN%(0)=0 ET VoletUP%(0)=0
Code:
VoletUP%(0) = VoletHeight%(0)
VoletDOWN%(0) = 0
C'est pour fixer les paramètres d'ouverture des volets.
L'age n'est pas un handicap .... Encore faut-il arriver jusque là pour le constater !
20/02/2008 - 17h26
Panda184
Date d'inscription
janvier 2008
Messages
50
Re : VB envoyer des données avec le rs232
Bien, merci pour ces précisions. Et désolé je ne savais pas que vous ne répondiez pas au MP.
Par contre je n'ai jamais vu dans votre programme la création de l'objet volet. J'ai peut être sauté une étape, mais où se trouve t-elle dans le programme ?
Merci encore
20/02/2008 - 17h41
Panda184
Date d'inscription
janvier 2008
Messages
50
Re : VB envoyer des données avec le rs232
Je n'ai rien dit, il est tout en bas du programme, je ne l'avais pas vu.
Je vais essaer de faire mon programme, je vous tiendrais au courant.
Par contre avez vous une idée pour gérer les données envoyés par le PC dans le µC ? J'utilise un PIC 16F877.
Y a t-il une structure bien définit ?
Merci encore
20/02/2008 - 17h42
DAUDET78
Date d'inscription
septembre 2006
Localisation
Ile de France
Âge
69
Messages
32 131
Re : VB envoyer des données avec le rs232
Les "frames" Volet(0) et Volet(1)
Je ne réponds pas en MP car c'est un forum et tout le a le droit de participer aux échanges, ce qui permet de donner des avis différents, de corriger des erreurs.
L'age n'est pas un handicap .... Encore faut-il arriver jusque là pour le constater !
Bien Merci en tout cas.
Je suis en train de créer mon programme, je vous tiendrais au courant pour d'autres informations
Euh juste une petite chose, est-ce vraiment important de voir les données qu'on envoie via le RS232 sur le programme ? Comme vous l'avez fait sur ce programme sur le côté gauche.
J'ai bien envie d'essayer de le faire, mais comment procéder vu que je vais envoyer mes code hexadécimaux de cette manière:
Code:
1.
Private Sub cmdEnvoi_Click()
2.
MSComm.CommPort = 1
3.
MSComm.Settings = "4800,n,8,1"
4.
MSComm.PortOpen = True
5.
MSComm.Output = chr$(77)
6.
MSComm.PortOpen = False
7.
End Sub
Et enfin dois-je vraiment à chaque fois mettre MSComm.PortOpen = False à la fin de chaque bouton ?
Et est-ce que je peux mettre un if après le MSComm.PortOpen = True en disant que si MSComm.PortOpen = False alors un label dit qu'il n'y a pas de port activé.
Merci encore
21/02/2008 - 09h56
DAUDET78
Date d'inscription
septembre 2006
Localisation
Ile de France
Âge
69
Messages
32 131
Re : VB envoyer des données avec le rs232
1/ il n'y a pas de
MSComm.PortOpen = False
après chaque bouton dans mon soft. On ferme le port uniquement en sortant du programme (par le bouton "FIN" ou la "Croix"
2/ Les fenêtres de visualisation des codes Hexa en entrée et en sortie servent uniquement à vérifier le bon fonctionnement du programme (en rebouclant la pin 3 sur la pin 2 du port) en absence de hard de volet à piloter
L'age n'est pas un handicap .... Encore faut-il arriver jusque là pour le constater !
21/02/2008 - 12h16
Panda184
Date d'inscription
janvier 2008
Messages
50
Re : VB envoyer des données avec le rs232
J'ai bien étudié votre code pendant plusieurs heures, je pense avoir tout compris. C'est vraiment intéressant d'envoyer les trames d'octets de cette manière. Je pense même que c'est un moyen très rapide de faire comme vous l'avez fait lorsqu'on doit envoyer beaucoup de trames.
Mais j'ai une petite question pour mon projet je doit gérer 3 boutons et dans un autre 5 boutons.
J'aimerais savoir si je suis obligé d'envoyer comme vous 4 trames c'est à dire par exemple : 0D 4F 31 05
ou alors je peux juste envoyer 05 pour un bouton; 06 pour un autre et 07 pour le dernier.
Je pense que c'est largement suffisant non ? Après pour que le microcontrolleur gère ces données ça va être un autre problème, je créerais un autre topic si j'ai besoin.
Merci infiniment
21/02/2008 - 12h58
DAUDET78
Date d'inscription
septembre 2006
Localisation
Ile de France
Âge
69
Messages
32 131
Re : VB envoyer des données avec le rs232
Envoyé par Panda184
J'aimerais savoir si je suis obligé d'envoyer comme vous 4 trames c'est à dire par exemple : 0D 4F 31 05
1/ C'est une trame de 4 octets 0D 4F 31 0A
2/ Le fait d'envoyer des codes "imprimables" (OD= retour_chariot 4F="O" 31="1" 0A=LineFeed) te permet de visualiser avec un espion RS232 (HyperTerminal par exemple) les codes envoyés (alors que 05 06 ou 07 te donne du chinois sur l'écran)
3/ une trame commence toujours par 0D. donc le PIC attend cet octet, ensuite, il lit les deux suivants (pour les interpréter) et contrôle qu'il y a ensuite l'octet 0A pour exécuter la commande (la trame est bonne, Ouf!)
On peut compléter le système en disant que si le PIC reçoit une bonne trame à exécuter, il renvoi les octets 0D 4F 4B 0A (Cr "OK" Lf) qui indique au PC que la commande est faite par le PIC et que ce n'est pas la peine de la renvoyer .
L'age n'est pas un handicap .... Encore faut-il arriver jusque là pour le constater !