Bonjour à tous.
Retour aux sources donc puisque j'ai déjà utilisé Windev il y a une bonne quinzaine d'années.
Là je programme plutôt en "C", le Windev est oublié depuis longtemps.
Abordons le sujet
Avant cela le contexte: je fais de l'électronique, la programmation je l'utilise principalement pour faire marcher les microprocesseurs.
Mais actuellement je dois vérifier si Windev peut répondre à un cas "électronique" particulier.
1) mon premier essai
J'ai un module électronique à microprocesseur (Arm4), programmé en "C", qui peut répondre, via un port série, à des ordres ou questions. le Windev je ne l'ai utilisé il y a longtemps que pour me faire un logiciel de gestion de SAV électronique. A l'époque je ne sais pas s'il pouvait gérer des ports série ou non mais cela ne me concernait pas.
Retour à Windev et recherche.
A priori j'ai donc trouvé la méthode ... mais cela ne marche absolument pas ! ceci dit je pense que ça ne doit pas être grand chose.
Tout d'abord l'erreur:
"Les paramètres d'appel du code 'Déclaration de COL_ProcéduresGlobales' sont incorrects : on attendait 2 paramètres et on en a reçu 0."
Ce que j'ai mis:
1) dans le code d'initialisation du projet
GLOBAL
ChaineG est une chaine
BufferTexte est une chaîne // Texte contenant la valeur actuelle lue sur le port
Resultat est un booléen
Com est un entier
BufferTexte = "" // vidage du buffer de réception série
Com = 4 // Port COM4
// ferme le port COM4
sFerme(Com)
Resultat = sOuvre(Com, 6000, 6000,400,1) // numéro de port,taille buffer entrée, taille buffer sortie,durée d'attente (ms) avant envoi 0 si rien, détection optionnelle d'évènement
SI Resultat = Vrai ALORS
sFixeParamètre(Com, 9600, 0, 8, 1) // 9600, 1 bit stop, pas de parité, 8 bits de données
sEvénement(Com,sEveCaractèreReçu,"LectureOctetRx1") // on active la procédure de lecture sur évenement
SINON
Erreur("Port COM4 non dispo")
FIN
Info("Initialisation terminée")
dans " déclaration de COL_ProceduresGlobales"
L'erreur me dit que je n'ai pas envoyé le bon nombre de paramètres. Pourquoi donc ?PROCEDURE LectureOctetRx1(NumPort,Event)
// JC 09/04/15
NbreOctets est un entier
Str est une chaîne
NbreOctets = sDansFileEntrée (NumPort) // récupère le nombre d'octets présents dans le buffer
Str = sLit (NumPort ,OctetsLus) // transfère les octets dans la chaine Str
BufferTexte = BufferTexte + Str // ajoute au buffer texte
Merci
Question 2, d'ordre plus général:
Je dois donc envoyer, à intervalles réguliers, des commandes de lecture de mes boîtiers électroniques et lire le résultat retourné. Ce résultat ira automatiquement remplir une base de données. D'après mon collègue, il faut dissocier deux programmes: celui qui interroge les boîtiers et l'autre qui gère la base de données uniquement. Pour moi c'est du gaspillage de temps et des problèmes supplémentaires alors que, si Windev (+PC) est assez rapide, il peut faire en tâche de fond cette lecture.
Votre avis ?
Partager