Bonjour à tous les Windèviens
J'ai un problème pourtant traité déjà à de nombreuses reprises mais je ne trouve pas, ou tout du moins, je m'y prend mal à mon avis !
Je dois envoyer une commande sur une carte électronique via le port COM, qui me retourne directement sa valeur.
Quand je fais l'essai via HyperTerminal, ça fonctionne très bien. J'envoie ma commande et boum j'ai le retour immédiat de la carte via ce même port COM.
Bref, le port COM et mon OS fonctionnent bien
Maintenant, sous mon Windev 20, voici ce que je cherche à faire donc : (en gros, j'envoie ma demande sur mon port COM; et ensuite je lis)
Ma procédure locale "Lecture" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 /////////////////////////// // // ECRITURE SUR PORT COM // /////////////////////////// // Ouverture de COM1 NumPort est un entier = SAI_NUM_PORT_COM // Numéro du port // Fermeture du port COM si déjà ouvert sFerme(NumPort) // Ouverture du port SI sOuvre(NumPort, 6000, 6000,400, 1) = Faux ALORS // Traitement de l'erreur d'ouverture Erreur("Erreur d'ouverture de COM " + NumPort) SINON // Paramétrage du port SI sFixeParamètre(NumPort, 9600, 0, 8, 1, 1, 0, 0) = Faux ALORS // Traitement de l'erreur de paramétrage Erreur("Erreur de paramétrage de COM" + NumPort) SINON // -- Procédure Ecriture SI (sEcrit(NumPort, SAI_commande) = Faux) ALORS Trace("Erreur d'écriture") SINON // Attendre la fin de l'écriture BOUCLE SI sDansFileSortie(NumPort) = 0 ALORS Trace("=> Commande "+SAI_commande+" envoyée avec succès !") SORTIR FIN FIN FIN // Une fois les caractères écrits, on peut lire le retour // -- Procédure Lecture sEvénement(NumPort,sEveCaractèreReçu,"Lecture") FIN // Fermeture de COM1 sFerme(NumPort) FIN
Je pense déjà que ma fonction n'est pas exécutée puisque mon "trace(ok)" ne renvoie rien !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 PROCEDURE Lecture() Trace("ok") NumPort = 1 OctetsLus est un entier Str est une chaîne OctetsLus = sDansFileEntrée (NumPort) Str = sLit (NumPort ,OctetsLus) Trace(Str)
Auriez-vous une idée de ce qui m'échappe ?
Merci d'avance !
Partager