PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → hexa vers ascii
hexa vers ascii
Débuté par Fritz, 15 mar. 2017 17:38 - 6 réponses
Membre enregistré
128 messages
Posté le 15 mars 2017 - 17:38
Bonjour à toutes et à tous,

je rencontre un problème de conversion d'une valeur hexa "FF" vers ascii . Je m'explique :

Lorsque j' envoie avec socketecrit le valeur Caract(Val("FF","x")) avec le simulateur samsung s6, je réceptionne bien la valeur hexa "FF".
Lorsque je déploie sur mon smartphone, je réceptionne la valeur Hexa "BF".

A savoir que les autres valeurs hexa sont réceptionnées à l'identique.

Auriez vous une ou plusieurs explications à me donner ? Sachant que "FF" corresponf au Form Feed mais là je ne vous apprend rien.

Cordialement

Fréédric
Posté le 15 mars 2017 - 18:56
Bonjour Fritz

"FF" est une chaine.
Sous le simulateur, c'est une chaine ANSI
Sur la matériel, c'est une chaine UNICODE...

Déclare une variable du type PRECIS dont tu as besoin, mets ta chaine
dedans, et utilise la variable.

Ou déclare que tu ne fais que de l'ansi au niveau du projet

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

A votre disposition : WXShowroom.com, WXReplication (open source) et
maintenant WXEDM (open source)

Plus d'information sur http://fabriceharari.com


Le 3/15/2017 à 11:38 AM, Fritz a écrit :
Bonjour à toutes et à tous,

je rencontre un problème de conversion d'une valeur hexa "FF" vers
ascii . Je m'explique :

Lorsque j' envoie avec socketecrit le valeur Caract(Val("FF","x")) avec
le simulateur samsung s6, je réceptionne bien la valeur hexa "FF".
Lorsque je déploie sur mon smartphone, je réceptionne la valeur Hexa "BF".

A savoir que les autres valeurs hexa sont réceptionnées à l'identique.

Auriez vous une ou plusieurs explications à me donner ? Sachant que "FF"
corresponf au Form Feed mais là je ne vous apprend rien.

Cordialement
Fréédric
Membre enregistré
945 messages
Popularité : +102 (110 votes)
Posté le 15 mars 2017 - 19:52
Bonsoir (ma première réponse semble ne pas être enregistrée)
- pourquoi écrire Caract(Val("FF","x")) ? Caract(0xff) ne fonctionne pas ?
- "Form Feed" (FF en abrégé) est codé 0x0c en hexadécimal (voir table ascii sur google)
Membre enregistré
128 messages
Posté le 16 mars 2017 - 09:35
Bonjour,

Merci pour vos réponses.

Pour Philippe : avec Caract(0xff) le résultat réceptionné est également "BF"

Pour Fabrice : tests effectués avec le smartphone

J'ai coché dans l'onglet configuration courante ->onglet unicode -> ansi
le résultat réceptionné ,pour "13FF" envoyé, est "13BF"
le résultat réceptionné ,pour "13FE" envoyé, est "13BE"
le résultat réceptionné ,pour "13AF" envoyé, est "13AF"

lorsque je coche dans l'onglet configuration courante ->onglet unicode -> unicode
le résultat réceptionné ,pour "13FF" envoyé, est "1300FF"
le résultat réceptionné ,pour "13AF" envoyé, est "1300AF"

Voilà donc pour l'instant je cherche une solution pour palier à ce problème. Tant que mon automate n'arrive pas à réceptionner un "FF" dans la trame de connexion, il ne me répondra pas.....;(

Cordialement

Frédéric
Membre enregistré
945 messages
Popularité : +102 (110 votes)
Posté le 16 mars 2017 - 12:24
bonjour
il faut envoyer "FF" (Form Feed) ou Caract(0xff) ? car se n'est pas du tout la même chose
Mettez votre code et/ou lien sur la documentation du protocole de votre automate afin que l'on puisse vous aider
Message modifié, 16 mars 2017 - 12:27
Membre enregistré
945 messages
Popularité : +102 (110 votes)
Posté le 16 mars 2017 - 13:56
Bonjour
je viens de faire un test rapide :
Serveur socket sur Seven + WD20 et portable samsung androïd + WM20 et cela fonctionne très bien
Code WM

Data est une chaîne ANSI = "1234" + Caract(0xff) + "6789"

IF NOT SocketConnecte("MySocket", 5544, "192.168.1.12") THEN RETOUR
Multitâche(50)
IF NOT SocketEcrit("MySocket", Data) THEN
Erreur(ErreurInfo(errComplet))
END
Multitâche(100)
SocketFerme("MySocket")

et je reçois : 0x31 0x32 0x33 0x34 0xFF 0x36 0x37 0x38 0x39 ce qui correspond exactement à «Data»
Membre enregistré
128 messages
Posté le 16 mars 2017 - 15:15
Pour info,

J'ai trouvé comment remédier à ce soucis :

1/ je coche dans l'onglet configuration courante ->onglet unicode -> unicode
2/ je créée une chaine : chaine_ascii est une chaine ansi
3/ puis : chaine_ascii= CaractUnicode(Val("FF","x"))
4/ j'envoie "FF" et je réceptionne "FF"

Voilà , merci pour votre aide

Cordialement

Frédéric