PB LIAISON SERIE AVEC SERIALPORT SOUS VB.NET

Résolu
cs_jeanmi45 Messages postés 27 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 6 avril 2010 - 17 sept. 2009 à 13:44
cs_jeanmi45 Messages postés 27 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 6 avril 2010 - 18 sept. 2009 à 11:12
Bonjour, je galère depuis 2 jours sur un truc que je pense tout bête, je suis sur que vous pourrez m'aider:

J'ai un prog sur VB6 qui utilise MSCOMM et envoi des trames en ASCII
Le même soft en vb.net avec Serialport, forcé en ascii ne passe pas, à savoir le périphérique ne comprend pas la trame.

En gros, la même trame avec MSCOMM ne passe pas avec serialport....

trame: Chr(&H1F) & Chr(&H5) & Chr(&HFE)

Merci pour votre aide.

6 réponses

cs_jeanmi45 Messages postés 27 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 6 avril 2010
17 sept. 2009 à 17:48
alors là...bravo !
ça marche nickel...mais je t'avoue franchement que je ne comprends pas le coup du "default"...

si tu as la patience de m'expliquer, je prends l'explication.

un GRAND MERCI
;o)
3
lesdis Messages postés 403 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 7 août 2020
18 sept. 2009 à 10:31
Bonjour,

Pour convertir les valeurs binaires en caractères, ton pc utilise des plages de codes tels que le tableau ASCII, UTF8, Latin1, etc.
Dans le Framework, il existe des classes pour l'UTF7,UTF8,UTF16(Little = Unicode et BigEndian),UTF32 et ASCII. Mais tu peux aussi te baser sur les autres plages de codes existantes grâce à System.Text.Encoding.GetEncoding(Int32). Tu pourras trouver la listes des plages de codes a cette adresse : ici

En France, par défaut nous utilisons le latin1 (ISO-8859-1).

La propriété défaut que je t'ai proposé hier dépendra de la configuration du pc. Si tu prévoit d'utiliser cette application sur d'autre ordinateur, je te conseille donc de modifier ton code de cette façon pour assurer une compatibilité :
COM.Encoding = System.Text.Encoding.Default 

par
COM.Encoding = System.Text.Encoding.GetEncoding(28591) 'Correspondant au latin1 



Bonne Prog
3
lesdis Messages postés 403 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 7 août 2020
17 sept. 2009 à 16:23
Bonjour,

Quel fonction utilises tu avec MSCOMM?
Quel fonction utilises tu avec SerialPort?
Write ou WriteLine? Peut être que le composant attend un CRLF en fin de trame et la fonction

Est ce que les configurations du port COM sont les mêmes?

As tu essayé d'envoyer la trame au format binaire?

Le mieux pour tester serait de pouvoir espionner ce que tu envoi sois en rebouclant vers ton pc si tu as 2 ports Série ou bien d'utiliser un logiciel de sniffeur de port.

Bonne Prog
0
cs_jeanmi45 Messages postés 27 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 6 avril 2010
17 sept. 2009 à 17:16
Merci pour ta réponse rapide. G continué à essayer des choses.
J'ai avancé un peu, à savoir:

appli vb6: proprité en text et non binary

com.output = chr(&hFE) --> 254 reçu sur périphérique (ce que je veux)

appli vb.net:

J'ai forcé ma COM en UTF8:
COM.Encoding = System.Text.Encoding.UTF8
com.write(chr(&hFE)) --> 195 190 reçu

Si je force pas en UTF8, je reçois 063

Si maintenant j'utilise - toujours en UTF8:

Dim TestData() As Byte = {&HFE}
COM.Write(TestData, 0, 1)

--> 254 reçu....

Donc je vois que Write n'a pas le même comportement pour l'envoi de byte et de string. Mon pb c que je dois envoyer des trames du genre
chr(&h40) & "ABCD" & chr(&hFE)

voilà, voilà...je suis un peu perdu...
0

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

Posez votre question
lesdis Messages postés 403 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 7 août 2020
17 sept. 2009 à 17:35
Bonjour,

Essai avec COM.Encoding = System.Text.Encoding.Default
Cela utilisera le codage actuelle de ton OS

le codage ASCII est codé sur 7bit et 254 est codé sur 8bit. Donc l'objet SerialPort remplace ton caractère par celui renseigné dans la propriété ParityReplace. ("?" codé &H63)

Bonne Prog
0
cs_jeanmi45 Messages postés 27 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 6 avril 2010
18 sept. 2009 à 11:12
Bonjour, c la réponse que j'attendais, une valeur par défaut ne me plaisait pas bien évidemment !

Encore merci et bravo pour ton expertise rapide.
0
Rejoignez-nous