PB LIAISON SERIE AVEC SERIALPORT SOUS VB.NET [Résolu]

cs_jeanmi45 27 Messages postés mercredi 31 mars 2004Date d'inscription 6 avril 2010 Dernière intervention - 17 sept. 2009 à 13:44 - Dernière réponse : cs_jeanmi45 27 Messages postés mercredi 31 mars 2004Date d'inscription 6 avril 2010 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
cs_jeanmi45 27 Messages postés mercredi 31 mars 2004Date d'inscription 6 avril 2010 Dernière intervention - 17 sept. 2009 à 17:48
3
Merci
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)

Merci cs_jeanmi45 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de cs_jeanmi45
Meilleure réponse
lesdis 401 Messages postés mercredi 19 avril 2006Date d'inscription 6 juin 2011 Dernière intervention - 18 sept. 2009 à 10:31
3
Merci
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

Merci lesdis 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de lesdis
lesdis 401 Messages postés mercredi 19 avril 2006Date d'inscription 6 juin 2011 Dernière intervention - 17 sept. 2009 à 16:23
0
Merci
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
Commenter la réponse de lesdis
cs_jeanmi45 27 Messages postés mercredi 31 mars 2004Date d'inscription 6 avril 2010 Dernière intervention - 17 sept. 2009 à 17:16
0
Merci
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...
Commenter la réponse de cs_jeanmi45
lesdis 401 Messages postés mercredi 19 avril 2006Date d'inscription 6 juin 2011 Dernière intervention - 17 sept. 2009 à 17:35
0
Merci
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
Commenter la réponse de lesdis
cs_jeanmi45 27 Messages postés mercredi 31 mars 2004Date d'inscription 6 avril 2010 Dernière intervention - 18 sept. 2009 à 11:12
0
Merci
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.
Commenter la réponse de cs_jeanmi45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.