Problème d'envoi de trame sur port série.

slashidou Messages postés 6 Date d'inscription lundi 18 avril 2011 Statut Membre Dernière intervention 19 avril 2011 - 18 avril 2011 à 18:39
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 - 22 avril 2011 à 13:47
Bonjour,

Voici mon problème, j'ai codé un petit programme qui se charge de commander un robot aspirateur de type Roomba. Le but du jeu c'est d'envoyer une bête trame sur le port série et la bête s'éxecute. Mon souci c'est que j'utilise la commande suivante pour envoyer la trame :

serialport.Write("" + Chr(137) + Chr(0) + Chr(20) + Chr(128) + Chr(0))


J'utilise un port série virtuel pour lire les trames envoyées par mon programme, sauf qu'au lieu d'avoir :

137 0 20 128 0

J'ai

63 20 0 0 0 ( en héxa : 3F 14 00 00 00 )

Alors là, j'y pige rien, il me plafonne tout à 3F ..

Please Gods help me !

11 réponses

NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
18 avril 2011 à 19:01
Bonjour,

Au lieu de lui envoyé une chaine, pourquoi tu ne lui passe pas un tableau d'octet ?
Sinon, ton encodage de caractère "mange" peut être le MSB de l'octet (ASCII7).

Mon site
0
slashidou Messages postés 6 Date d'inscription lundi 18 avril 2011 Statut Membre Dernière intervention 19 avril 2011
18 avril 2011 à 19:05
J'adorerai lui envoyer un tableau d'octet mais je n'ai aucune idée de comment faire ... Qu'est ce qu'un MSB ?
0
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
18 avril 2011 à 19:18
Bonjour,

MSB : Most Significan Bit (bit le plus signiificatif)
LSB : son opposé.

Pour l'utiliser, déclarer un tableau de Byte puis regarder l'aide et utiliser la bonne surcharge :
http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.write.aspx
Write(MonTableau,0,Montableau.Length)

Mon site
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 avril 2011 à 19:19
Salut

"envoyer un tableau d'octet"
Tu mets ton curseur sur le mot Write et tu appuis sur F1

"MSB"
Tu ouvres ton navigateur favori et tu tapes MSB -> Most Significant Bit -> Bit de poids fort (à gauche)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0

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

Posez votre question
slashidou Messages postés 6 Date d'inscription lundi 18 avril 2011 Statut Membre Dernière intervention 19 avril 2011
18 avril 2011 à 21:18
Sub avancer()
        Dim Buffer() As Byte
        Buffer = New Byte() {137, 0, 255}
        serialport.Write(Buffer, 0, Buffer.Length)
    End Sub


Mon port série recoit : 137 255 0, il me met par défaut les zéros à la fin, l'ordre est important pour moi, comment faire ?
0
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
18 avril 2011 à 21:41
Bonjour,

Comment tu visualise le résultat de l'envoi ?
Car normalement, il ne devrait pas y avoir de pb.

Mon site
0
slashidou Messages postés 6 Date d'inscription lundi 18 avril 2011 Statut Membre Dernière intervention 19 avril 2011
19 avril 2011 à 10:04
J'utilise un port série virtuel car je ne dispose pas d'un port série sur l'ordinateur où je code ..

Eltima Software Virtual Serial Port Driver 6.0 .. Puis un petit logiciel qui s'appelle RS232 Monitor.

C'est de là que viens le problème tu penses ?
0
slashidou Messages postés 6 Date d'inscription lundi 18 avril 2011 Statut Membre Dernière intervention 19 avril 2011
19 avril 2011 à 10:07
J'ai un programme type qui envoit les trames pour que je vérifie et même avec le port série virtuel et le monitor, il me laisse les 0 là où je les met, alors qu'avec mon programme, non.

Je ne peux pas spécifier chaque octet pour un rang de mon tableau ?
0
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
19 avril 2011 à 10:21
Bonjour,

Je ne comprend pas d'où vient le problème, car sur un projet pro, j'utilise la même syntaxe sans pb (sinon, ça ferait longtemps que j'en aurais entendu parler).

As-tu définit toutes le propriétés de l'objet du port série ? (NullDiscard par exemple).

Concernant mes outils :
Vin Soft Virtual Serial Cable et des équipements de terrain et un programme d'affichage maison pour l'affichage en test.

Mon site
0
slashidou Messages postés 6 Date d'inscription lundi 18 avril 2011 Statut Membre Dernière intervention 19 avril 2011
19 avril 2011 à 10:37
Je n'avais pas pensé aux propriétés, j'ai mis DiscardNull = False mais toujours le même problème, y'a t'il d'autres propriétés qui peuvent influer sur l'ordre des octets ?
0
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
22 avril 2011 à 13:47
Bonjour,

Je ne sais pas, je n'ai pas eu de problèmes avec mes tests au travail (code de la boite, donc non copiable ici, dsl).

Mon site
0
Rejoignez-nous