basamir
Messages postés335Date d'inscriptionvendredi 21 octobre 2005StatutMembreDernière intervention 8 mars 2008
-
12 mai 2007 à 17:05
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
12 mai 2007 à 19:24
bonjour,
je reçoit d'un terminal une chaîne de caratères composé de 'maximum' 5 digits par exemple 80000
je dois ensuite écrire sur un port com cette même valeur sous forme de trame ASCII, qui commence par 02 en ascii et se termine par 03 (retour chariot), cette information devrait être étalée sur 7 ou 8 octets.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 12 mai 2007 à 18:24
Re
MSComm1.Output = Chr(02) & Right$("00000000" & Text4.Text, 8) & Chr(03)
Si tu ne reçois rien, vérifie d'abord ton cablage.
Si ta connexion à l'imprimante est de type RJ11, tu ne dois pas poiuvoir utiliser le contrôle de flux matériel, juste XOn/XOff
--> Modifie le paramétrage de ta MSComm1 en conséquence (Handshaking = 1)
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 12 mai 2007 à 17:13
Salut
En fait, tu te compliques la vie pour rien :
Quand tu envoies des infos sur ton port COM, tu peux les écrire de différentes manières :
Soit caractère par caractère en ASCII, 02 en tête et 03 en queue
Soit constituer une chaine composée de tout le message et le 'balancer' d'un seul coup :
Chr(02) & "80000" & Chr(03)
Lors d'une écriture, les données sont, de toute façon, converties en ASCII, le format d'écriture côté VB est libre, ASCII avec une suite de Chr(Valeur_en_ASCII), ou texte (String), ou une combinaison des deux.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
basamir
Messages postés335Date d'inscriptionvendredi 21 octobre 2005StatutMembreDernière intervention 8 mars 2008 12 mai 2007 à 17:21
Peut etre bien je me complique la vie te je te remercie pour cette remarque bien placée, mais je ne maitrise pas du tout les com.
En fait pourqoui j'ai demandé celà car je dois mettre sur un port comm cette chaine de caractère pour qu'elle soit lue par un autre terminal, le problème c'est que ce terminal ne comprend qu'une seule trame, la voici:
02, information sur 8 octects, 03
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 12 mai 2007 à 17:28
Re
Oui, j'ai oublié ton histoire de 8 octets
8 octets, c'est à dire 8 caractères : Si la donnée de base est 80000, c'est à dire 5 octets, il va falloir boucher les 3 octets manquants : Avec quoi ?
Des espaces ou des 0 devant le chiffre ?
Chr(02) & Right$("00000000" & "80000", 8) & Chr(03)
Tu remplaceras le "80000" par ta varaible qui contient la vraie valeur à transmettre.
Si tu as choisis de mettre des espaces devant, replace les 8 "0" par 8 " "
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Vous n’avez pas trouvé la réponse que vous recherchez ?
basamir
Messages postés335Date d'inscriptionvendredi 21 octobre 2005StatutMembreDernière intervention 8 mars 2008 12 mai 2007 à 17:50
merci jack je vais essayer cela tout de suite et je verrai avec hyperterminal si je reçoit quelque chose
le premier problème que je ne rencontre est le suivant:
sur ma feuille principale je dois écrire ma variable sur le port com1, voici le code:
sur form_load()
j'ai mis ceci:
With MSComm1 'configuration du port
.CommPort = 1 'On utilise le port COM1:
.Handshaking = 2 'RTS
.RThreshold = 1
.RTSEnable = True 'mieux pour le port COM:
.Settings = "9600,n,8,1"
.SThreshold = 1
.PortOpen = True 'ouverture du port
End With
et sur la partie de calcul de la variable , j'ai mis ceci:
MSComm1.Output = Text5.Text
avec text5.text = Chr(2) & Text4.Text & Chr(3)