OVH Cloud OVH Cloud

CARACTERE INCONNU (  )

20 réponses
Avatar
lou
bonjour

je reçois des data via une balance connectée au port com
le test effectué sur le HYPER TERMINAL fourni avec WIN XP me donne ceci:

" NUMERO PESEE 00000001 BRUT 1326 kg TARE 0 kg NET 1326
kg T D"

le test effectué avec un form +champ text multi ligne me renvoi ceci
(fait avec vb6)

" NUMERO PESEE 00000001 BRUT 1326 kg TARE 0 kg NET 1326
kgTD"

certains espaces vides sont remplis avec ce carré (  ) je ne comprends
pas pourquoi ?
et ce signe correspond a quoi sur le clavier ?

UN GRAND MERCI

10 réponses

1 2
Avatar
X
Bonsoir,

Tu dis: "et ce signe  correspond a quoi sur le clavier ?"

Pour le signe on peut l'avoir avec les codes ascii (il me semble de
mémoire > 127 et < 256 ?), mais il n'y a aucune touche (des 3 claviers) qui
correspondent directement...
---------------------





"lou" a écrit dans le message de news:
43303e53$0$10960$
| bonjour
|
| je reçois des data via une balance connectée au port com
| le test effectué sur le HYPER TERMINAL fourni avec WIN XP me donne ceci:
|
| " NUMERO PESEE 00000001 BRUT 1326 kg TARE 0 kg NET 1326
| kg T D"
|
| le test effectué avec un form +champ text multi ligne me renvoi ceci
| (fait avec vb6)
|
| " NUMERO PESEE 00000001 BRUT 1326 kg TARE 0 kg NET 1326
| kgTD"
|
| certains espaces vides sont remplis avec ce carré (  ) je ne comprends
| pas pourquoi ?
| et ce signe correspond a quoi sur le clavier ?
|
| UN GRAND MERCI
|
|
|
Avatar
lou a écrit :

bonjour

je reçois des data via une balance connectée au port com
le test effectué sur le HYPER TERMINAL fourni avec WIN XP me donne ceci:

" NUMERO PESEE 00000001 BRUT 1326 kg TARE 0 kg NET 1326
kg T D"

le test effectué avec un form +champ text multi ligne me renvoi ceci
(fait avec vb6)

" NUMERO PESEE 00000001 BRUT 1326 kg TARE 0 kg NET 1326
kgTD"

certains espaces vides sont remplis avec ce carré (  ) je ne comprends
pas pourquoi ?
et ce signe correspond a quoi sur le clavier ?

UN GRAND MERCI







Bonjour,

Test la valeur avec ASC() je pense qu'il s'agit de CR (carriage return)
ou LF (line feed), respectivement chr(13), chr(10)
chr étant la fonction inverse de asc()

Christophe
Avatar
X
Le 1ere caractère à tester, si ça t'avance ???

Dim octet As String * 1
Dim ascii As Integer
octet = Mid(text1, 1, 1)
ascii = Asc(octet)
MsgBox ascii
--------------






"X" <.> a écrit dans le message de news:
%
| Bonsoir,
|
| Tu dis: "et ce signe  correspond a quoi sur le clavier ?"
|
| Pour le signe on peut l'avoir avec les codes ascii (il me semble de
| mémoire > 127 et < 256 ?), mais il n'y a aucune touche (des 3 claviers)
qui
| correspondent directement...
| ---------------------
|
|
|
|
|
| "lou" a écrit dans le message de news:
| 43303e53$0$10960$
|| bonjour
||
|| je reçois des data via une balance connectée au port com
|| le test effectué sur le HYPER TERMINAL fourni avec WIN XP me donne ceci:
||
|| " NUMERO PESEE 00000001 BRUT 1326 kg TARE 0 kg NET
1326
|| kg T D"
||
|| le test effectué avec un form +champ text multi ligne me renvoi ceci
|| (fait avec vb6)
||
|| " NUMERO PESEE 00000001 BRUT 1326 kg TARE 0 kg NET
1326
|| kgTD"
||
|| certains espaces vides sont remplis avec ce carré (  ) je ne
comprends
|| pas pourquoi ?
|| et ce signe correspond a quoi sur le clavier ?
||
|| UN GRAND MERCI
||
||
||
|
|
Avatar
Fred
Dans : news:43303e53$0$10960$,
lou disait :
bonjour



Bonsoir,

le test effectué avec un form +champ text multi ligne me renvoi ceci
(fait avec vb6)

" NUMERO PESEE 00000001 BRUT 1326 kg TARE 0 kg NET
1326 kgTD"



Plutôt que de mettre ta chaîne (appelons la «trame») dans le champ
texte, met plutôt ToHex(trame) où ToHex est la fonction qui suit. Ainsi
on verra clairement les codes des caractères que tu reçois. Si tu as
d'autres occasions de gérer des communications avec des matériels tels
que ta balance, c'est la première chose à faire. L'affichage du texte ne
montre pas tout. Ou montre des choses bizarres :-)

8<------------------
Function ToHex(s As String)
Dim h As String
Dim i As Integer
For i = 1 To Len(s)
h = h & Right$("0" & _
Hex$(Asc(Mid(s, i, 1))), 2) _
& " "
Next i
ToHex = h
End Function
8<---------------------

Tu peux faire un copier-coller du bout de code. Les lignes sont courtes
et ne devraient pas avoir été coupées.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
lou
merci a tous et en particulier a fred ta fontion m 'a beaucoup aidé
ceci dit en passant et sans abuser j'essaie de trouver une fontion qui
suprime tout ce qui est texte dans un champ
encore merci pour votre aide

"Fred" a écrit dans le message de news:
#
Dans : news:43303e53$0$10960$,
lou disait :
> bonjour

Bonsoir,

> le test effectué avec un form +champ text multi ligne me renvoi ceci
> (fait avec vb6)
>
> " NUMERO PESEE 00000001 BRUT 1326 kg TARE 0 kg NET
> 1326 kgTD"

Plutôt que de mettre ta chaîne (appelons la «trame») dans le champ
texte, met plutôt ToHex(trame) où ToHex est la fonction qui suit. Ainsi
on verra clairement les codes des caractères que tu reçois. Si tu as
d'autres occasions de gérer des communications avec des matériels tels
que ta balance, c'est la première chose à faire. L'affichage du texte ne
montre pas tout. Ou montre des choses bizarres :-)

8<------------------
Function ToHex(s As String)
Dim h As String
Dim i As Integer
For i = 1 To Len(s)
h = h & Right$("0" & _
Hex$(Asc(Mid(s, i, 1))), 2) _
& " "
Next i
ToHex = h
End Function
8<---------------------

Tu peux faire un copier-coller du bout de code. Les lignes sont courtes
et ne devraient pas avoir été coupées.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT



Avatar
Fred
"lou" a écrit dans le message de
news:4330993b$0$10960$

merci a tous et en particulier a fred ta fontion m 'a beaucoup aidé
ceci dit en passant et sans abuser j'essaie de trouver une fontion qui
suprime tout ce qui est texte dans un champ
encore merci pour votre aide



Peux-tu préciser ta question ? Avec un exemple, et peut-être
l'équivalent hexa (fonction ToHex) de ton champ.
Veux-tu dire que tu ne souhaite garder que les caractères représentant
des chiffres ?

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
lou
bonjour
oui n effet je ne veux garder que ce qui est numerique
de 0 a 9
du genre si c'est 0 tu laisses si c'est 1 tu laisses etc etc
pour le moment j'emploie REPLACE
mais c'est fastidieux le champ qui est assez long peux contenir +-200 mots
, je voudrais si c'est possible nettoyer tout en un clic
merci


"Fred" a écrit dans le message de news:

"lou" a écrit dans le message de
news:4330993b$0$10960$

> merci a tous et en particulier a fred ta fontion m 'a beaucoup aidé
> ceci dit en passant et sans abuser j'essaie de trouver une fontion qui
> suprime tout ce qui est texte dans un champ
> encore merci pour votre aide

Peux-tu préciser ta question ? Avec un exemple, et peut-être
l'équivalent hexa (fonction ToHex) de ton champ.
Veux-tu dire que tu ne souhaite garder que les caractères représentant
des chiffres ?

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT



Avatar
driss hanib
Lou

voici une fonction qui t'extrait que les chiffre en comparant chaque
caractère ascii aux chiffres
Function ExtraitNum(MaChaine As String) As String
Dim Car As String
Dim NouvChaine As String
NouvChaine = vbNullString
For I = 1 To Len(MaChaine)
' extraction de chaque caractère
Car = Mid$(MaChaine, I, 1)
Select Case Asc(Car)
Case 48, 49, 50, 51, 52, 53, 54, 55, 56, 57
nouchaine = NouvChaine = Car
Case Else
End Select
Next
ExtraitNum = NouvChaine
End Function


Driss

"lou" a écrit dans le message de news:
4330f740$0$10952$
bonjour
oui n effet je ne veux garder que ce qui est numerique
de 0 a 9
du genre si c'est 0 tu laisses si c'est 1 tu laisses etc etc
pour le moment j'emploie REPLACE
mais c'est fastidieux le champ qui est assez long peux contenir +-200
mots
, je voudrais si c'est possible nettoyer tout en un clic
merci


"Fred" a écrit dans le message de news:

"lou" a écrit dans le message de
news:4330993b$0$10960$

> merci a tous et en particulier a fred ta fontion m 'a beaucoup aidé
> ceci dit en passant et sans abuser j'essaie de trouver une fontion qui
> suprime tout ce qui est texte dans un champ
> encore merci pour votre aide

Peux-tu préciser ta question ? Avec un exemple, et peut-être
l'équivalent hexa (fonction ToHex) de ton champ.
Veux-tu dire que tu ne souhaite garder que les caractères représentant
des chiffres ?

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT







Avatar
Fred
Dans le message:,
driss hanib écrit:
Lou

voici une fonction qui t'extrait que les chiffre en comparant chaque
caractère ascii aux chiffres
Function ExtraitNum(MaChaine As String) As String
Dim Car As String
Dim NouvChaine As String
NouvChaine = vbNullString
For I = 1 To Len(MaChaine)
' extraction de chaque caractère
Car = Mid$(MaChaine, I, 1)
Select Case Asc(Car)
Case 48, 49, 50, 51, 52, 53, 54, 55, 56, 57
nouchaine = NouvChaine = Car
Case Else
End Select
Next
ExtraitNum = NouvChaine
End Function



Bonjour Driss et lou

Je propose la variante suivante car avec ce programme, les nombres
seront accolés et s'ils ne sont pas formatés suivant des longueurs
prédéfinies, ce sera difficile de faire le tri.
La fonction ci-dessous renvoie un tableau de chaînes.
Il y a possibilité d'avoir des séparateurs décimaux (j'ai mis le point
par défaut mais cela peut être changé en virgule).

Function ExtraireNombres(s As String) As String()
Dim tmp As String
Dim res As String
Dim car As String
Dim dercar As String
tmp = s
dercar = " "
While Len(tmp) <> 0
car = Left$(tmp, 1)
If (car >= "0" And car <= "9") Or car = "." Then
res = res & car
dercar = car
Else
If dercar <> " " Then
res = res & " "
dercar = " "
End If
End If
tmp = Mid$(tmp, 2)
Wend
ExtraireNombres = Split(RTrim$(res), " ")
End Function

Sub test()
Dim s As String
Dim a() As String
Dim i As Integer
s = " 124.5kg 45 toto 65titi"
a = ExtraireNombres(s)
For i = LBound(a) To UBound(a)
MsgBox a(i)
Next
End Sub


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Aski
Bonjour driss hanib,

Tu t'es vachement avancé en affirmant :

Lou

voici une fonction qui t'extrait que les chiffre en comparant chaque
caractère ascii aux chiffres
Function ExtraitNum(MaChaine As String) As String
Dim Car As String
Dim NouvChaine As String
NouvChaine = vbNullString
For I = 1 To Len(MaChaine)
' extraction de chaque caractère
Car = Mid$(MaChaine, I, 1)
Select Case Asc(Car)
Case 48, 49, 50, 51, 52, 53, 54, 55, 56, 57
nouchaine = NouvChaine = Car
Case Else
End Select
Next
ExtraitNum = NouvChaine
End Function



OK, si les valeurs sont des entiers, mais il se pose le cas du point ou de
la virgule décimale.

Cordialement

Aski
1 2