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

Signaler
Messages postés
6
Date d'inscription
lundi 18 avril 2011
Statut
Membre
Dernière intervention
19 avril 2011
-
Messages postés
14774
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
7 mars 2021
-
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

Messages postés
14774
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
7 mars 2021
151
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
Messages postés
6
Date d'inscription
lundi 18 avril 2011
Statut
Membre
Dernière intervention
19 avril 2011

J'adorerai lui envoyer un tableau d'octet mais je n'ai aucune idée de comment faire ... Qu'est ce qu'un MSB ?
Messages postés
14774
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
7 mars 2021
151
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
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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)
Messages postés
6
Date d'inscription
lundi 18 avril 2011
Statut
Membre
Dernière intervention
19 avril 2011

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 ?
Messages postés
14774
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
7 mars 2021
151
Bonjour,

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

Mon site
Messages postés
6
Date d'inscription
lundi 18 avril 2011
Statut
Membre
Dernière intervention
19 avril 2011

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 ?
Messages postés
6
Date d'inscription
lundi 18 avril 2011
Statut
Membre
Dernière intervention
19 avril 2011

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 ?
Messages postés
14774
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
7 mars 2021
151
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
Messages postés
6
Date d'inscription
lundi 18 avril 2011
Statut
Membre
Dernière intervention
19 avril 2011

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 ?
Messages postés
14774
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
7 mars 2021
151
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