IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

Windev : Gestion de liaison série par événement série


Sujet :

Contribuez

  1. #1
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 951
    Points : 9 280
    Points
    9 280
    Par défaut Windev : Gestion de liaison série par événement série
    bonjour,

    voici un exemple de gestion de liaison série par événement.
    j'ai choisi pour illustrer la chose, la réception de trames NMEA par une liaison série provenant d'un GPS.
    J'ai repris l'exemple en windev 7 de WDGPS ( wdgps.com). Celui-ci utilise un timer pour receptionner les trames.
    J'ai donc remplacé le timer par une gestion d'événement série et plus précisément l'événement caractère reçu.
    J'ai gardé le décodage des trames et l'affichage par liste des trames reçues.
    J'ai enlevé la partie sauvegarde de points et de positions et l'utilisation de la dll de WDGPS.
    Tout tient dans une fenêtre ( en téléchargement une copie d'écran et le code en Windev9 ( pour compatibilité).

    voici l'initialisation de la ligne série et de la gestion des événements Série, à partir d'un clic sur un bouton ON/OFF :
    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
     
    LigneCom est un booléen
     
    SI MoiMême..Enfoncé=Vrai ALORS
    	MoiMême..Libellé="ON"		
    	// Port COM choisi
    	// ferme le port COM
    	sFerme(Cb_Port)
     
    	LigneCom = sOuvre(Cb_Port, 6000, 6000,400,1)
    	SI LigneCom = Vrai ALORS
    		// Paramétrage de COM choisi : , parité paire,
    		sFixeParamètre(Cb_Port, Cb_Vitesse, 0, 8, 0) // 8 bits sans parité 1 bit de stop
    		// Détection de caractères sur le port COM choisi
    		sEvénement(Cb_Port,sEveCaractèreReçu,"LecturePortSérie") // on active la procédure de lecture sur évenement
    	SINON
    		Erreur("Erreur d'ouverture du port COM")
    	FIN
    SINON
    	MoiMême..Libellé="OFF"
    	sFinEvénement(Cb_Port,sEveCaractèreReçu )
    	sFerme(Cb_Port)
    FIN
    et voici la procédure de lecture sur événement série :
    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
     
    PROCEDURE LecturePortSérie(NumPort,Event)
    OctetsLus est un entier
    TempBuffer est une chaîne
    i est un entier
     
     
    OctetsLus = sDansFileEntrée (NumPort)
    TempBuffer = sLit (NumPort ,OctetsLus)
     
     
    POUR i = 1 A OctetsLus
    	SI TempBuffer[[i]]=Caract(10)ALORS
    		SI Gauche(phrase,1)<>"$"ALORS phrase=""  // Pas NMEA!!! debut de capture
    		Decodage() // Phrase est variable GLOBALE donc accessible aux procedures globales
    		//phrase_preced=Phrase										
    		phrase=""				
    	SINON
    		SI TempBuffer[[i]]<>Caract(13)ALORS phrase=phrase+TempBuffer[[i]]
    	FIN			
    FIN// de pour i
    Dans l'affichage des trames par une liste, j'affiche toujours la dernière trame reçue en incluant une sélection de la dernière trame juste après l'avoir ajoutée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SI SansEspace(phrase)<>"" ALORS
    	 ListeAjoute(Liste_Trames,phrase)	// remplissage de la liste
         ListeSelectPlus(Liste_Trames, Liste_Trames..Occurrence) // pour toujours afficher dernière ligne

    Ami calmant, J.P
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  2. #2
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 951
    Points : 9 280
    Points
    9 280
    Par défaut
    Bonjour,
    Désolé mais la procédure LecturePortSérie n'était pas fiable en fonction de la vitesse de transmission et du nombre de trames transmises à la fois . J'ai donc remodifié sur le message précédent les procédures. Finalement j'utilise le procédé initial de WDGPS qui a l'air assez robuste.

    P.S j'ai modifié aussi le fichier .zip

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  3. #3
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut WDGPS
    Bonjour,
    Je cherche à télécharger le code WD GPS (de la version 7) mais introuvable. Pouvez-vous me donner un lien ?
    Merci beaucoup
    Cordialement

Discussions similaires

  1. Gestion de données arrivant par le port série
    Par altivisio dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 16/02/2009, 21h15
  2. Pb avec classe CCOM (Gestion de liaison série)
    Par pdaniel dans le forum MFC
    Réponses: 7
    Dernier message: 08/03/2007, 10h09
  3. Gestion de liaison série portable
    Par Bayard dans le forum C
    Réponses: 8
    Dernier message: 17/12/2006, 10h54
  4. VBA, graphiques : Acceder au Range pointé par une série
    Par CCHEVALIER dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/09/2005, 10h56
  5. Interfacer un logiciel et un système hardware par port série
    Par jean-claude74 dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 13/08/2005, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo