|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Débuté par PIERRO, 01 juin 2005 17:51 - 5 réponses |
| |
| | | |
|
| |
Posté le 01 juin 2005 - 17:51 |
bonjour, le programme si dessous permet d'envoyer une trame(suite de chiffre et de lettre) par le port serie d'un pc vers un transmetteur et de recevoir la reponse sur le port serie:
GLOBAL Port est un entier
LOCAL Nombre est un entier retourchaine est une chaîne Taux est un entier Parite est un entier BitDonnee est un entier BitStop est un entier i est un entier j est un entier trame est une chaîne i=0 j=0 trame=Caract(0x01)+Caract(0x03)+Caract(0X00)+Caract(0x00)+Caract(0x00)+Caract(0x01)+Caract(0x84)+Caract(0x0A) Port=1 Taux–00 Parite=0 BitDonnee=8 BitStop=1 TANTQUE i<1 SI sOuvre(Port,5000,5000)=Faux ALORS Erreur("Erreur lors de l'ouverture du port "+Port) Ferme() FIN sFixeParamètre(Port,Taux,Parite,BitDonnee,BitStop) sEcrit(1,trame) TANTQUE j<10 //tempo avec affichage Info(j) j=j+1 FIN Nombre =sDansFileEntrée(1)
retourchaine=sLit(1,Nombre) Info(retourchaine) sFerme(Port) i=i+1 FIN
le probleme c'est que la variable retourchaine me renvoie des caracteres illisibles au lieu de me renvoyer une trame du type: 01030200F97806.
je me demande si le probleme ne vient pas de ma declaration de ma variable? car j'ai l'impression que le programme interprete la variable comme etant une valeur hexadecimal et le traduit par son code ascii pour chaque chiffre ou lettre.
Or ce que moi je souhaite c'est de pouvoir avicher sur mon ecran la trame, donc je pense qu'il faut dire a l'ordinateur que la trame en question est deja en ascii comme ca il ne convertira pas. Mais je ne sais pas comment lui faire comprendre ca? si quelqu'un voit le probleme et peut m'aider, merci d'avance. Pierro. |
| |
| |
| | | |
|
| | |
| |
Posté le 02 juin 2005 - 00:31 |
Bonsoir,
Il y a 2 possibilités :
1 - si le Buffer contenant une chaîne au format ANSI alors on n’a pas à faire quoi que ce soit.
2 – si par contre le Buffer contenant une chaîne au format UNICODE alors il faut la convertir en une chaîne de caractères au format ANSI (Windows).
Dans le deuxième cas utilisez la fonction UnicodeVersAnsi(). retourchaine est un buffer MonBufferAnsi est un buffer MonBufferAnsi = UnicodeVersAnsi (retourchaine)
Bonne Chance
----------- //**// |
| |
| |
| | | |
|
| | |
| |
Posté le 02 juin 2005 - 09:53 |
Bonjour, la solution est plus simple que celle indiqué ! Si tu envoie caract(0x02) qui dans la table ascii représente le caractère de CONTROLE : STX (Start of Text) et que tu affiche ce que tu reçois alors l'affichage sera spécial et c'est normal !
Essaye ça qui affiche la valeur hexa des caractères contenus dans la chaîne reçue
RetourChaine=sLit(1,Nombre) if Taille(RetourChaine)>0 then for i=1 to Taille(RetourChaine) Trace(NumeriqueVersChaine(Asc(RetourChaine[[i]]),"02X")) end end
"PIERRO" <QUATTERMINT@VOILA.FR> a écrit dans le message de news:429db13d$1@news.pcsoft.fr...
bonjour, le programme si dessous permet d'envoyer une trame(suite de chiffre et de
lettre) par le port serie d'un pc vers un transmetteur et de recevoir la reponse sur le port serie:
GLOBAL Port est un entier
LOCAL Nombre est un entier retourchaine est une chaîne Taux est un entier Parite est un entier BitDonnee est un entier BitStop est un entier i est un entier j est un entier trame est une chaîne i=0 j=0
trame=Caract(0x01)+Caract(0x03)+Caract(0X00)+Caract(0x00)+Caract(0x00)+Carac t(0x01)+Caract(0x84)+Caract(0x0A)
Port=1 Taux–00 Parite=0 BitDonnee=8 BitStop=1
TANTQUE i<1 SI sOuvre(Port,5000,5000)=Faux ALORS Erreur("Erreur lors de l'ouverture du port "+Port) Ferme() FIN sFixeParamètre(Port,Taux,Parite,BitDonnee,BitStop)
sEcrit(1,trame) TANTQUE j<10 //tempo avec affichage Info(j) j=j+1 FIN Nombre =sDansFileEntrée(1)
retourchaine=sLit(1,Nombre) Info(retourchaine) sFerme(Port) i=i+1 FIN
le probleme c'est que la variable retourchaine me renvoie des caracteres illisibles au lieu de me renvoyer une trame du type: 01030200F97806.
je me demande si le probleme ne vient pas de ma declaration de ma
variable? car j'ai l'impression que le programme interprete la variable comme etant une valeur hexadecimal et le traduit par son code ascii pour chaque chiffre ou lettre.
Or ce que moi je souhaite c'est de pouvoir avicher sur mon ecran la trame,
donc je pense qu'il faut dire a l'ordinateur que la trame en question est deja en ascii comme ca il ne convertira pas. Mais je ne sais pas comment lui faire comprendre ca? si quelqu'un voit le probleme et peut m'aider, merci d'avance.
Pierro.
|
| |
| |
| | | |
|
| | |
| |
Posté le 02 juin 2005 - 11:31 |
j'ai essayé comme vous m'avez di de faire mais ca n'a pas l'air de fonctionner car j'obtiens d'autres caracteres differents avant j'avais des carrées maintenant j'ai un carre et un apostrofe et un point d'interrogation. |
| |
| |
| | | |
|
| | |
| |
Posté le 02 juin 2005 - 14:45 |
Pourriez vous envoyer le code complet ??
"PIERRO" <QUATTERMINT@VOILA.FR> a écrit dans le message de news:429ea9bd$1@news.pcsoft.fr...
j'ai essayé comme vous m'avez di de faire mais ca n'a pas l'air de
fonctionner car j'obtiens d'autres caracteres differents avant j'avais des carrées maintenant j'ai un carre et un apostrofe et un point d'interrogation.
|
| |
| |
| | | |
|
| | |
| |
Posté le 02 juin 2005 - 15:41 |
merci monsieur, en fait ca marche avec votre code, mais lorsque j'ai envoyé mon message je n'avais pas encore recu le votre, donc suite a votre message j'ai essayé sur mon programme et ca fonctionne a merveille. merci beaucoup, ca fait une semaine que j'etais bloqué la dessus. pierro |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|