Gambas France BETA


Pas de compte ? Incription

valider la réception d'une chaine RS232...

1
AuteurMessages
spheris#1 Posté le 14/10/2014 à 18:34:41
Je recois une chaine de caractères provenant d'un peripherique branché sur un port RS232 toutes les 2 secondes.
Cette chaine est capitale pour le fonctionnement de mon programme. Dans ce cas précis ou je ne recois rien dans les 2 secondes, mon programme interprete une mauvaise chaine et peut avoir de graves repercutions sur l'usinage de mes pieces.
Comment pourrais-je faire pour etre sur de receptionner correctement cette chaine toutes les 2 secondes. (detection de plantage de l'interface RS232/USB) par exemple ?

Merci pour vos reponses.

;)
Reivillo#2 Posté le 14/10/2014 à 20:53:18
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »Re.

Tu pourrais, nous montrer un exemple de chaînes de caractères Valide.
Parce-que des chaînes de caractères y en as...bofff...même plus que ça.
Nombres de mots constants ou pas, Codes spéciaux(mots clés, par exemple),
et que sais-je encore...
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
jpw#3 Posté le 14/10/2014 à 21:16:25
le problème peu devenir rapidement très complexe surtout si la transmission n'est pas très fiable: j'ai dû écrire un truc comme cela pour récupérer les mesures d'un multimêtre (volt, ampère, température, résistance...).
Il faut parfois une procédure spécifique à chaque type de message...

Si tu veux de l'aide il nous faut plus d'information.

Commence par tester la longueur du message, existe-t-il une somme de contrôle ?

Bon courage
spheris#4 Posté le 17/10/2014 à 07:06:16
Bonjour à tous et merci pour vos réponses.
Coté emetteur :
4800 baud sans controle de flux bit de stop a 1 :

1
42501245(et 2 retourschariots Chr(10))


Coté recepteur :

1
2
3
4
5
6
7
8
9
10
11
PUBLIC SUB sportserie_Read()
DIM toto AS STRING
READ #sportserie, toto, Lof(sportserie)
textarea1.Insert(toto)
IF textarea1.line > 0 THEN
monaxe1 = Left$(textarea1.Text, 4)
monaxe2 = Mid$(textarea1.Text, 5, 4)
textarea1.Text = NULL
ENDIF
CATCH
END


je recupere bien les valeurs de mes axes 1 et 2 qui sont respectivement : 4250 et 1245

Visiblement avec ça cela marche à chaque fois.
Mais sans le CATCH, cela bugue parfois. Je ne sais pas pourquoi.
et entre nous l'utilisation du catch plusieurs fois dans mon programme, je trouve ce procédé abusif et ne résout pas le chmilblic.
Qu'en pensez-vous?
;)
Reivillo#5 Posté le 17/10/2014 à 13:53:37
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »Bonjour sphéris.

Tes erreurs ne viendrait-elle pas du traitement,de la textarea1.Text.
Tu part sur un traitement de 8 chiffres!
est tu sûr, que le contenu de la textarea1 à toujours ces 8 premiers caractères.
Tu pourrais enregistrer la variable toto ou la textarea1, dans un fichier avant son traitement.
Et après ERREUR, consulter ce fichier qui se trouve dans ton projet.
En déclaration:
1
PUBLIC $sPATHCONTROL AS STRING = Application.path & "/pathcontrol"

et entre les lignes 3 et 4
1
file.save($sPATHCONTROL, file.load($SPATHCONTROL) & "\n" & toto)
Reivillo.

Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
spheris#6 Posté le 17/10/2014 à 22:33:32
Reivillo,
Merci pour ta réponse.
L'erreur vient tout simplement de ces convertisseurs USB/RS232 pas franchement fiables.
par chance je ne fais que recevoir des données.
De temps en temps je ne recois pas la chaine complète.
Le CATCH m'aide donc lors de la conversion en Cint(axe1), car si je ne recois qu'une partie du chiffre axe1, le soft plante.
L'astuce réside dans le retour chariot qui marque une fin de ligne. Si ma textarea a plus d'une ligne j'efface tout et à la prochaine réception j'aurais (je l'espere) la bonne chaine.

Comment faites-vous (linuxos ou les autres) pour recevoir une chaine en RS232 et l'interpréter ?
;)
Reivillo#7 Posté le 18/10/2014 à 01:51:14
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »Mais tu ne donnes pas beaucoup de Grain à moudre, pour avoir du bon Pain!
Tu contrôle quoi? Un moteur pas à pas?
Tes tensions sont-elles bien référencées et stables?
Tes bus de données, ont-ils une résistance pull-up ou pull-down?
Pour garantir un niveau Haut ou Bas, et écarter toute ambiguïté.
Et que sais-je encore...
Dans le Vague, personnellement je Nage. ;)
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
linuxos#8 Posté le 18/10/2014 à 02:11:13
Un peu de sel, de poivre et la crevette sera... Spheris,

Peux tu nous donner le reste du code, a savoir comment tu invoques le process d'écoute de ton port stp.

Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
spheris#9 Posté le 19/10/2014 à 11:53:49
Reivillo,
Je controle une carte relais via des ULN2803.
Les tensions sont hyper stables et référencé sur un 0 virtuel.
Les bus de données ont bien une resistance pull up and down, no problem.

Linuxos,
tout le code du processus d'ecoute est dans le post #4.
rien de plus.
Super simple.

Bon week-end
;)
spheris#10 Posté le 19/10/2014 à 11:56:17
Pour info c'est la suite de Gbdomotic sur mon site :

http://gambaslinux.fr/articles.php?lng=fr&pg=473
spheris#11 Posté le 22/10/2014 à 00:05:12
Double emploi de ce post.
Je suis vraiment alzheimer....

http://www.gambasforge.org/sujet-4381-recuperer-tous-les-caracteres-d-une-chainegb2-page-1.html

;)
1