cs_jeanmi45
Messages postés27Date d'inscriptionmercredi 31 mars 2004StatutMembreDernière intervention 6 avril 2010
-
17 sept. 2009 à 13:44
cs_jeanmi45
Messages postés27Date d'inscriptionmercredi 31 mars 2004StatutMembreDerniè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....
lesdis
Messages postés403Date d'inscriptionmercredi 19 avril 2006StatutMembreDerniè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
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
lesdis
Messages postés403Date d'inscriptionmercredi 19 avril 2006StatutMembreDerniè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.
cs_jeanmi45
Messages postés27Date d'inscriptionmercredi 31 mars 2004StatutMembreDerniè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...
Vous n’avez pas trouvé la réponse que vous recherchez ?
lesdis
Messages postés403Date d'inscriptionmercredi 19 avril 2006StatutMembreDerniè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)