Bon dev!
Merci !
euh, pour la trame de départ envoyé, tu utilise bien SOH CR LF. C'est ce que je fais mais je n'est aucun réponse. (j'utilise un Sévenement :caractère reçu qui marche bien en Maître A... après avoir ouvert le port et ses paramètres)
J'ai aussi essayé SOH ENQ 01 L CR LF !
Code : Sélectionner tout - Visualiser dans une fenêtre à part sEvénement(EnNumPort,sEveCaractèreReçu,"Reception")
>Yo
C'est plutôt SOH+ENQ+01+L+CR+LF (cf exemple p22 de la doc Precia)
Assure toi que cela marche dans l'hyperterminal...
As-tu précédé ton appel d'un sOuvre puis d'un SFixeParamètre?
d'accord, j'ai bien fait souvre et sfixeparametre :
Tout est correct!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 EnNumPort=1 sFerme(EnNumPort) bTest est un booléen = sOuvre(EnNumPort,10000,10000,sTimeoutDéfaut,Vrai) SI bTest ALORS sFixeParamètre(EnNumPort,9600, 0, 8, 0,Vrai,Vrai,Vrai) Trace("Connexion réussie !") sEvénement(EnNumPort,sEveCaractèreReçu,"Reception")
Pour l'envoi de la trame dans l'hyperterminal, tu veux dire qu'il faut envoyer
SoH ENQ 01 L CR LF (en hexa) par "transfert/Envoyer un fichier texte" ???
>Yo
Non, il faut envoyer la trame via SEcrit()
Moi, j'utilise ensuite SLit()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 EnNumPort=1 sFerme(EnNumPort) bTest est un booléen = sOuvre(EnNumPort,10000,10000,sTimeoutDéfaut,Vrai) SI bTest ALORS sFixeParamètre(EnNumPort,9600, 0, 8, 0,Vrai,Vrai,Vrai) Trace("Connexion réussie !") FIN sCommandePoids est un Buffer =Caract(0x1)+Caract(0x5)+Caract(0x30)+Caract(0x33)+Caract(0x4C)+Caract(0x0D)+Caract(0x0A) //Demande de poids brut sEcrit( EnNumPort, sCommandePoids )
C'est ce que je fait ensuite, mais je savais pas qu'il fallait utiliser le type Buffer. Je prenais un type Chaine.
J'essaye ça et je reviens !
>Yo
ce qui m'étonne c'est ta configuration dans sFixeParamètre...
Moi, je suis en 9600-Even-7-1 et je configure ma connexion sans les paramètres DTR/DSR, RTS/CTS et XON/XOFF
càd :
tout simplement!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 sFixeParamètre(1, 9600, 2, 7, 0)
Pour ce qui est de la parité, il y en a aucune et il y a 8 bits par caractère en accord avec la déclaration dans la balance (bits:8nP1) que le commercial de PreciaMolen m'a conseillé de mettre.
Pour les paramètres RTS DTR Xon ... je l'ai laissé dans le doute même s'il ne sont pas utiles pour moi !
Ce changement de paramètres n'ont cependant aucune incidence, je viens de tester...
>Yo
Tu as réussi à faire une demande de poids et avoir une réponse avec l'hyperterminal??
Bonjour !
Non, j'ai repris l'affaire et le poids est enfin envoyé !
En fait l'autre grosse erreur que j'avais faite était le type Chaine que j'envoyais au lieu de Buffer. C'était comme si je n'envoyais rien !
J'utilise Sévenement (je dois) qui m'envoie le poids en deux partie et j'essaie actuellement d'envoyer les différents blocs pour voir ...
A+
>Yo
Pourquoi "dois"-tu utiliser sEvenement alors que tu interroges ta balance en esclave? Vu que c'est le PC qui demande, tu sais quand la balance va te répondre!
Pour des soucis d'optimisation, le Sevenement prend moins de ressource que un thread de fond qui lit le buffer toutes les X centièmes de seconde, non? a moins que je me trompe !
Ce que je fesais :
Ce que je préfère :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Souvre SFixeparamètres Thread lancé (trace(Slit(Buffer d'Entrée))) toutes les 1/2 secondes Sécrit(MaTrame)
>Yo
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Souvre SFixeparamètres Sévenement(caractère reçu, appel procedure) Sécrit(MaTrame) -------------------- Procedure : Trace(Slit(Buffer d'Entrée))
Ce que j'ai fais :
Initialisation de la balance au début de la fenêtre (SOuvre, SFixeParamètre).
Définition d'une procédure locale exécutée en tache de fond toutes les 20ms. Dans cette procédure, : je teste si la balance est stable et si c'est le cas je récupère le poids(SEcrit puis SLit). Quand tu dis que cela prend des ressources c'est que tu l'as observé? C'est un point où j'ai eu un peu de mal aussi mais en jouant avec la fonction Multitache(-1) ça marche du tonnerre!
C'est ce que j'ai lu sur internet !
Oui, je sais j'ai vu plusieurs sujets sur d'autres forums que tu as déposé sur ce sujet (dont celui de WD) je regarde et j'essaye ...
>Yo
salut !
En effet, le multitâche (-1) résoud pas mal de problèmes de gestion du temps...
J'ai tout de même garder mon Sévenement(caractère reçu) qui marche et je fais plusieurs manipulations de la trame reçu pour prendre que ce qui m'intéresse !
Un grand Merci à Fucce qui a bien voulu prendre du temps pour m'aider
> Yo longue vie à developppez.com
Juste une petite remarque, ces paramètres sont loin d'être anodin, ce sont eux qui permettent de gérer le flux de données qui transite sur le port série.
Ces paramètres permettent d'indiquer à l'autre périphérique que l'on est prêt à recevoir ou à émettre. Généralement chaque périphérique possède un buffer de données ou sont stockées les éléments émis par l'autre périphérique. Quand ce buffer arrive proche de sa limite, le périphérique émet un signal pour indiquer à l'autre périphérique d'arrêter d’émettre.
En gros, sans ces paramètres, on risque de perdre des données si un des 2 périphériques n'arrive pas à traiter les données avant que le buffer ne sature.
Ces paramètres sont à définir sur les 2 périphériques et de manière identique. XON/XOFF sont 2 caractères ascii qui sont envoyés sur la paire data du câble, DTS/CTS sont des signaux levés sur une paire spécifique. (il faut donc que le câble soit adapté pour les gérer)
Il est vrai que ce que j'indique là étais valable à l'époque (époque lointaine des VT52/VT100 et des imprimantes séries !!) où je traitais des flux séries, possible que cela ai fortement évolué depuis et que ce soit devenu obsolète, mais cela m'étonnerait beaucoup.
Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !
On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager