pictogram Auteur: Patrick Biker
Date: 18 mars 2006
Maj : 21 Mars 2015

Exemples évolués

Chaque exemple montre une utilisation pratique de la fonction du WLangage.

Quand plusieurs syntaxes sont possibles, chacune est illustrée indépendamment.

Revenir à la page des exemples évolués


Cet exemple ouvre un port série avec gestion du délai d'attente.



NumPort est un entier = 1 // Numéro du port
// Chaîne à écrire sur le port
ChaîneAEcrire est une chaîne = "Chaîne à écrire"
TailleEcrite est un entier // Taille de la chaîne qui a pu être écrite
TailleBufferEntrée est un entier = 5000 // Taille du buffer des lectures
TailleBufferSortie est un entier = 5000 // Taille du buffer des écritures
// Temps d'attente des fonctions sLit/sEcrit entre deux caractères (en ms)
TempsAttentePort est un entier = 100

// Ouverture du port
SI PAS sOuvre ( NumPort , TailleBufferEntrée , TailleBufferSortie , TempsAttentePort ) ALORS
    // Traitement de l'erreur d'ouverture
    Erreur ( "Erreur d'ouverture de COM" + NumPort )
SINON
  
// Paramétrage du port
   SI PAS sFixeParamètre ( NumPort , 9600 , 0 , 8 , 0 , Vrai , Vrai , Vrai ) ALORS
      // Traitement de l'erreur de paramétrage
      Erreur ( "Erreur de paramétrage de COM" + NumPort )
  SINON
      BOUCLE
      // Ecriture sur le port
      TailleEcrite = sEcrit ( NumPort , ChaîneAEcrire )
      // On teste ce qui a pu être écrit
      SI TailleEcrite = 0 et ChaineAEcrire <> "" ALORS
         // Rien n'a été écrit alors que la chaîne à écrire n'est pas vide
         // Vérification du buffer de sortie
         SI sDansFileSortie ( NumPort ) < TailleBufferSortie ALORS
            // Le buffer de sortie n'est pas plein : problème de périphérique
            SI PAS OuiNon ( "Impossible d'écrire sur le port" +...
                         "COM" + NumPort ,...
                         "Vérifier qu'un périphérique est prêt" +...
                         "et correctement connecté." ,...
                         "Voulez-vous ré-essayer ?" ) ALORS
                SORTIR // Abandon de l'écriture
            FIN
         SINON
            // Le buffer de sortie est plein
            // Temporisation pour que le buffer de sortie puisse se vider
            Multitache ( 200 )
            // Re-vérification du buffer de sortie
            SI sDansFileSortie ( NumPort ) >= TailleBufferSortie ALORS
                // Le buffer de sortie est plein
                SI PAS OuiNon ( "Impossible d'écrire sur le port" +...
                  "COM" + NumPort ,...
                  "Vérifier qu'un périphérique est prêt" +...
                  "et correctement connecté." ,...
                  "Voulez-vous ré-essayer ?" ) ALORS
                  SORTIR // Abandon de l'écriture
                FIN
            FIN
         FIN
      SINON
         SI TailleEcrite = Taille ( ChaîneAEcrire ) ALORS
           // Tout a été écrit
            SORTIR
           // Sinon, seule une partie a été écrite
           // Mais on a écrit, donc on continue d'essayer
         FIN
      FIN
    FIN
  
FIN
   // Fermeture de COM1
   sFerme ( NumPort )
FIN