Communication avec une balance Precia-Molen

Le
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Romain PETIT
Le #17303011
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é)
Albert P.
Le #17303111
"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é)






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.
Romain PETIT
Le #17305991
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é)
Romain PETIT
Le #17306181
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é)
Albert P.
Le #17309891
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"
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é)




Albert P.
Le #17322561
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.
patrice
Le #17354511
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)
Albert P.
Le #17369081
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" 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)


Albert P.
Le #17373461
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." 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"
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é)








olivier-v
Le #21452711
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
Publicité
Poster une réponse
Anonyme