Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Communication avec une balance Precia-Molen

10 réponses
Avatar
Albert P.
Bonjour,

Je suis en train de me battre avec une balance Precia Molen (Modèle
BV-P3828).

Si j'ai bien compris la documentation, je dois écrire sur le port com la
chaine suivante :
"98PPPPPC"+crlf ou PPPPP correspond au prix au kilo (00123 = 1.23 euro du
kilo), C correspond à a somme logique (XOR) de tous les caractères
antérieurs (donc 98PPPPP) et je termine par un CRLF.

J'ai testé différentes methodes pour calculer cette fameuse somme logique
(fonction OuBinaire et OuExclusifBinaire) mais rien n'y fait.

Une piste ou mieux une solution serait la bienvenue.

Merci d'avance,

Albert.

10 réponses

Avatar
Romain PETIT
Albert P. avait prétendu :
Bonjour,



Bonjour,

Une piste ou mieux une solution serait la bienvenue.



Que dit la doc exactement ?
En général, un calcul de XOR doit ressembler à ça :

PROCEDURE CX_mfCalculeChecksum_XOR(LOCAL sBuffer est une chaîne)
// OU exclusif (XOR) des donnees
// (le buffer ne concerne que les data)

sChecksum est une chaîne
c est un entier
eChecksum est un entier

sCar est une chaîne
BOUCLE
c++
sCar=sBuffer[[c]]
SI sCar="" ALORS SORTIR
eChecksum = OuExclusifBinaire(eChecksum, Asc(sCar))
FIN
// pour certains protocoles, ETX doit être remplacé par DEL
// SI eChecksum=0x03 ALORS eChecksum = 0x7f

sChecksum = Caract(eChecksum)
RENVOYER sChecksum

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Albert P.
"Romain PETIT" a écrit dans le message de news:

Albert P. avait prétendu :
Bonjour,



Bonjour,

Une piste ou mieux une solution serait la bienvenue.



Que dit la doc exactement ?
En général, un calcul de XOR doit ressembler à ça :

PROCEDURE CX_mfCalculeChecksum_XOR(LOCAL sBuffer est une chaîne)
// OU exclusif (XOR) des donnees
// (le buffer ne concerne que les data)

sChecksum est une chaîne
c est un entier
eChecksum est un entier

sCar est une chaîne
BOUCLE
c++
sCar=sBuffer[[c]]
SI sCar="" ALORS SORTIR
eChecksum = OuExclusifBinaire(eChecksum, Asc(sCar))
FIN
// pour certains protocoles, ETX doit être remplacé par DEL
// SI eChecksum=0x03 ALORS eChecksum = 0x7f

sChecksum = Caract(eChecksum)
RENVOYER sChecksum

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)






Bonjour,

Merci pour la procedure, je viens de tester mais sans succés :-(

La doc est assez succeinte :

Protocole
Caisse Enregistreuse Balance
Envoyer : 98PPPPPCCRLF
Recevoir : 99SWWWWWEIIIIIICCRLF
Où:
98: 0x38h y 0x39h
PPPPP: 5 digits pour le prix.
C: Checksum, somme logique (XOR) de tous les caractères antérieurs.
CR: 0x0Dh LF: 0x0Ah
99: 0x39h y 0x39h
S: État du poids. (S: 0x30h Correct. S: 0x31h Erreur.)
WWWWW: 5 digits pour le POIDS.
E: État du montant. (E: 0x30h Correct. E: 0x31h Erreur.)
IIIIII: 6 digits pour le montant.

C'est malheureusement tout ce que j'ai.

Albert.
Avatar
Romain PETIT
Il se trouve que Albert P. a formulé :

Protocole
Caisse Enregistreuse Balance
Envoyer : 98PPPPPCCRLF
Recevoir : 99SWWWWWEIIIIIICCRLF



C: Checksum, somme logique (XOR) de tous les caractères antérieurs.



CC est sur 2 caractères, il faut donc probablement convertir en hexa
(remplacer l'avant-dernière ligne) :

...
sChecksum = NumeriqueVersChaine(eChecksum, "02X")

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Romain PETIT
Romain PETIT a exprimé avec précision :

CC est sur 2 caractères, il faut donc probablement convertir en hexa
(remplacer l'avant-dernière ligne) :



Ah non pardon, le 2ème C est celui du CR...
Sinon, tu as peut être des exemples de trames ?

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Albert P.
Bonjour,

Et non, malheureusement pas de trames, par contre j'ai fait un mail au
constructeur. Si j'arrive à avoir des infos je les posterais ici.

Merci en tout cas pour ton aide.

Albert.


"Romain PETIT" a écrit dans le message de news:

Romain PETIT a exprimé avec précision :

CC est sur 2 caractères, il faut donc probablement convertir en hexa
(remplacer l'avant-dernière ligne) :



Ah non pardon, le 2ème C est celui du CR...
Sinon, tu as peut être des exemples de trames ?

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)




Avatar
Albert P.
Bonjour à tous,

Concernant le problème de communication, le calcul du CRC est ok tel que
romain PETIT me l'a communiqué. J'ai reçu du fabricant un utilitaire de test
"maison" qui produit le même résultat que mon code ... à savoir, la balance
s'éteind lorsque je lui envoie la trame :-) ... la feignante.

Si certains d'entre vous ont des pistes à explorer, merci d'avance.

Bon dev,

Albert.
Avatar
patrice
Albert P. a écrit :
Bonjour à tous,

Concernant le problème de communication, le calcul du CRC est ok tel que
romain PETIT me l'a communiqué. J'ai reçu du fabricant un utilitaire de test
"maison" qui produit le même résultat que mon code ... à savoir, la balance
s'éteind lorsque je lui envoie la trame :-) ... la feignante.

Si certains d'entre vous ont des pistes à explorer, merci d'avance.

Bon dev,

Albert.





ca me semble pas normal, contacte le sav du constructeur.
J'ai une fois ce genre de symptome avec une balance dont l'alim etait
défectueuse: elle activait l'écran pour écrire des infos, ca tirait trop
sur l'alim, => elle s'éteignait)
Avatar
Albert P.
Merci pour l'information, je viens d'avoir un tech du constructeur qui
m'envoi de quoi réinitialiser la balance et recharger les programmes,
protocoles, ... Si cela ne fonctionne pas avec ces modifs, je le
questionnerais sur l'alim.


Albert P.

"patrice" a écrit dans le message de news:
48de250a$0$15461$
Albert P. a écrit :
Bonjour à tous,

Concernant le problème de communication, le calcul du CRC est ok tel que
romain PETIT me l'a communiqué. J'ai reçu du fabricant un utilitaire de
test "maison" qui produit le même résultat que mon code ... à savoir, la
balance s'éteind lorsque je lui envoie la trame :-) ... la feignante.

Si certains d'entre vous ont des pistes à explorer, merci d'avance.

Bon dev,

Albert.



ca me semble pas normal, contacte le sav du constructeur.
J'ai une fois ce genre de symptome avec une balance dont l'alim etait
défectueuse: elle activait l'écran pour écrire des infos, ca tirait trop
sur l'alim, => elle s'éteignait)


Avatar
Albert P.
Bonjour à tous,

Le problème est résolu, le code était bon, il y'avait eu un problème lors du
téléchargement des protocoles dans la balance à l'usine. Un petit reset
grace aux programmes fournis par le support technique et hop tout
fonctionne.

Bon dev à vous.

Albert P.



"Albert P." a écrit dans le message de news:
48d88e7a$0$850$
Bonjour,

Et non, malheureusement pas de trames, par contre j'ai fait un mail au
constructeur. Si j'arrive à avoir des infos je les posterais ici.

Merci en tout cas pour ton aide.

Albert.


"Romain PETIT" a écrit dans le message de news:

Romain PETIT a exprimé avec précision :

CC est sur 2 caractères, il faut donc probablement convertir en hexa
(remplacer l'avant-dernière ligne) :



Ah non pardon, le 2ème C est celui du CR...
Sinon, tu as peut être des exemples de trames ?

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)








Avatar
olivier-v
Albert P. a écrit le 22/09/2008 à 17h36 :
Bonjour,

Je suis en train de me battre avec une balance Precia Molen (Modèle
BV-P3828).

Si j'ai bien compris la documentation, je dois écrire sur le port com la

chaine suivante :
"98PPPPPC"+crlf ou PPPPP correspond au prix au kilo (00123 = 1.23
euro du
kilo), C correspond à a somme logique (XOR) de tous les
caractères
antérieurs (donc 98PPPPP) et je termine par un CRLF.

J'ai testé différentes methodes pour calculer cette fameuse somme
logique
(fonction OuBinaire et OuExclusifBinaire) mais rien n'y fait.

Une piste ou mieux une solution serait la bienvenue.

Merci d'avance,

Albert.


Bonjour Albert P
J'ai le meme probleme
J'ai recuperé une balance de meme reference d'occasion
Quand je la branche sur le port serie le pc allumé elle en s'allume pas
je l'allume et la branche alors sur le port serie du pc (j'utilise un cable serie standard et non un null modem)
mais je n'ai aucun protocole, aucune doc
Pourriez vous svp me faire parvenir ce que vous avez (ce que vous a transmis le service technique du fabricant) et d em'aider brievement sur la marche à suivre.
Davance merci
Olivier