DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Fonctions standard / Fonctions de gestion de Windows / Fonctions Ports série et parallèle
  • Fonctionnement
  • Utilisation d'une librairie externe : RXTX
  • Spécificités Android et Widget Android
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Ouvre et initialise :
  • soit un port série.
  • soit un port parallèle.
  • soit un port infrarouge. Dans ce cas, seule la deuxième syntaxe est disponible.
Les valeurs par défaut sont les suivantes :
  • Taux de transfert : 9600 Bauds
  • Parité : Aucune
  • 8 bits de données
  • 1 bit stop
LinuxAndroidWidget AndroidJava La gestion des ports parallèles et infrarouges n'est pas disponible.
WEBDEV - Code Serveur Cette fonction concerne le poste serveur.
WindowsJava
// Ouverture de COM1 (en utilisant le numéro du port)
LigneCom1 = sOuvre(1, 2000, 2000)
SI LigneCom1 = Vrai ALORS
// Paramétrage de COM1 : Taux 9600, parité paire,
// 8 bits de données, 1 bit de stop
sFixeParamètre(1, 9600, 1, 8, 0)
// Suite traitement...
// Fermeture de COM1
sFerme(1)
SINON
Erreur("Erreur d'ouverture de COM1")
FIN
// Ouverture de IR1 (en utilisant le nom du port)
IR1 = sOuvre("IR1", 2000, 2000)
SI IR1 <> 0 ALORS
// Paramétrage de IR1
sFixeParamètre(IR1, 9600, 1, 8, 1)
// Suite traitement...
// Fermeture de IR1
sFerme(IR1)
SINON
Erreur("Erreur d'ouverture de IR1")
FIN
Syntaxe
LinuxAndroidWidget Android Non disponible en Linux, Android et Widget Android

Ouvrir et initialiser un port en spécifiant son numéro Masquer les détails

<Résultat> = sOuvre(<Numéro de port> , <Taille du buffer d'entrée> , <Taille du buffer de sortie> [, <Durée d'attente> [, <Gestion des événements>]])
<Résultat> : Booléen
  • Vrai si le port a été ouvert et initialisé,
  • Faux dans le cas contraire.
<Numéro de port> : Entier
Numéro du port concerné :
  • Numéro du port série : 1, 2, 3, ... 256 pour COM1, COM2, COM3, ... COM256.
  • Numéro de port parallèle : -1, -2, -3 ou -4 pour LPT1, LPT2, LPT3 ou LPT4.
<Taille du buffer d'entrée> : Entier
Taille en octets du buffer d'entrée (32768 au maximum).
<Taille du buffer de sortie> : Entier
Taille en octets du buffer de sortie (32768 au maximum).
<Durée d'attente> : Entier optionnel ou Durée optionnelle
Durée (exprimée en millisecondes) accordée pour la lecture ou l'écriture d'un caractère. Ainsi, si <Durée d'attente> vaut 1s avec une lecture de 1024 octets, la durée d'attente effective sera de 1024s.
Ce paramètre permet d'éviter un blocage lors d'un problème de lecture ou d'écriture sur le port d'impression.
  • si <Durée d'attente> est négatif, la durée d'attente sera constante. Par exemple, si <Durée d'attente> vaut "-1s" avec une lecture de 1024 octets, la durée d'attente effective sera de 1s.
  • Lorsque la <Durée d'attente> est expirée, la fonction de lecture ou d'écriture renvoie 0.
  • La valeur par défaut de ce paramètre est définie au niveau du système.
    Pour utiliser la durée d'attente définie par défaut, utilisez la constante sTimeoutDéfaut.
Ce paramètre peut correspondre à :
  • un entier correspondant au nombre de millisecondes,
  • une variable de type Durée,
  • l'indication directe de la durée (par exemple 1 s ou 10 ms).
Java Si ce paramètre n'est pas spécifié, aucun délai d'attente ne sera appliqué. La constante sTimeoutDéfaut n'est pas disponible. Si un délai est spécifié, il sera appliqué uniquement sur les opérations de lecture sur les ports série.
<Gestion des événements> : Booléen optionnel
  • Vrai pour détecter des événements sur le port série,
  • Faux (valeur par défaut) pour ne pas gérer les événements. Ces événements pourront être gérés par la fonction sEvénement.

Ouvrir et initialiser un port en spécifiant son nom Masquer les détails

<Résultat> = sOuvre(<Nom du port> , <Taille du buffer d'entrée> , <Taille du buffer de sortie> [, <Durée d'attente>])
<Résultat> : Entier
  • Identifiant du port ouvert. Cet identifiant peut être directement utilisé dans les fonctions de gestion des ports.
    Cet identifiant correspond :
    • soit au numéro du port série concerné : 1, 2, 3, ... 256 pour COM1, COM2, COM3, ... COM256.
    • soit au numéro de port parallèle concerné : -1, -2, -3 ou -4 pour LPT1, LPT2, LPT3 ou LPT4.
    • soit au numéro du port infrarouge concerné : 1, 2, 3, ... 256 pour IR1, IR2, IR3, ... IR256.
  • 0 en cas d'erreur.
LinuxAndroidWidget Android Attention :
  • Cet identifiant ne correspond pas au numéro du port série concerné.
  • La gestion des ports parallèles n'est pas disponible.
  • Java La gestion des ports infrarouges n'est pas disponible.
<Nom du port> : Chaîne de caractères
Nom du port concerné :
  • Nom du port série : :
    • COM1, COM2, COM3, ... COM256.
    • Java Nom du port série en Java : /dev/ttyS4, /dev/ttyS5, ... /dev/ttyS9.
    • Linux Nom du port série en Linux (par exemple /dev/ttyS1).
    • AndroidWidget Android Nom du port série renvoyé par la fonction sListePort.
  • Nom du port parallèle : LPT1, LPT2, LPT3 ou LPT4.
  • Nom du port infrarouge : IR1, IR2, ... IR256.
LinuxAndroidWidget Android Rappel :
  • La gestion des ports parallèles n'est pas disponible.
  • Java La gestion des ports infrarouges n'est pas disponible.
<Taille du buffer d'entrée> : Entier
Taille en octets du buffer d'entrée (32768 au maximum).
<Taille du buffer de sortie> : Entier
Taille en octets du buffer de sortie (32768 au maximum).
<Durée d'attente> : Entier optionnel
Durée (exprimée en millisecondes) accordée pour la lecture ou l'écriture d'un caractère. Ainsi, si <Durée d'attente> vaut 1s avec une lecture de 1024 octets, la durée d'attente effective sera de 1024s.
Ce paramètre permet d'éviter un blocage lors d'un problème de lecture ou d'écriture sur le port d'impression.
  • si <Durée d'attente> est négatif, la durée d'attente sera constante. Par exemple, si <Durée d'attente> vaut "-1s" avec une lecture de 1024 octets, la durée d'attente effective sera de 1s.
  • Lorsque la <Durée d'attente> est expirée, la fonction de lecture ou d'écriture renvoie 0.
  • La valeur par défaut de ce paramètre est définie au niveau du système.
    Pour utiliser la durée d'attente définie par défaut, utilisez la constante sTimeoutDéfaut.
Ce paramètre peut correspondre à :
  • un entier correspondant au nombre de millisecondes,
  • une variable de type Durée,
  • l'indication directe de la durée (par exemple 1 s ou 10 ms).
Java Si ce paramètre n'est pas spécifié, aucun délai d'attente ne sera appliqué. La constante sTimeoutDéfaut n'est pas disponible. Si un délai est spécifié, il sera appliqué uniquement sur les opérations de lecture sur les ports série.
Remarques

Fonctionnement

  • L'ouverture d'un port ne peut s'effectuer que si ce port a été correctement fermé.
  • Important : Un port doit être ouvert avec la fonction sOuvre avant d'être paramétré par la fonction sFixeParamètre.
  • Le WLangage ne permet pas de gérer les signaux de contrôle.
  • Deux postes s'envoient des caractères par un port : si le second poste utilise la fonction sOuvre après l'envoi des caractères par le premier poste, ces caractères sont ignorés.
Remarques :
  • WINDEV Si le fichier WIN.INI contient des valeurs d'initialisation pour le port série spécifié, ces valeurs sont utilisées.
  • Windows Il est possible d'obtenir la liste des ports séries et des ports parallèles grâce aux entrées suivantes de la base de registre :
    • "HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM" pour les ports séries.
    • "HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\PARALLEL PORTS" pour les ports parallèles.
Linux Cas particulier sous Linux :
  • Seuls les ports série peuvent être ouverts et initialisés.
  • Par défaut, l'utilisateur n'a pas accès aux ports série. Il est nécessaire de lui accorder des droits spécifiques pour manipuler les ports série.
Java

Utilisation d'une librairie externe : RXTX

En Java, l'utilisation des fonctions de manipulation des ports séries et parallèles (fonctions sOuvre, sEcrit, sLit, ...) nécessite la présence d'une librairie externe : RXTX.
Cette librairie est composée d'une archive Jar et d'une ou plusieurs librairies natives dépendantes du système d'exploitation sur lequel s'exécute l'application. Pour utiliser ces fonctions :
  • l'archive jar (RXTXComm.jar) doit :
    • soit se trouver dans le même répertoire que l'application Java générée par WINDEV,
    • soit se trouver dans le classpath d'exécution de l'application,
    • soit être directement intégrée dans l'application générée (depuis l'assistant de génération Java).
  • la ou ou les librairies natives correspondant au système d'exploitation sur lequel s'exécute l'application doivent se trouver:
    • soit dans le même répertoire que l'application Java générée par WINDEV,
    • soit dans le chemin des librairies de l'application (librarypath).
Il est possible de télécharger la librairie RXTX et sa documentation grâce au lien suivant : http://users.frii.com/jarvi/rxtx/index.html (lien valide lors de l'écriture de cette documentation).
Attention : La gestion des ports infrarouges n'est pas disponible en Java.
AndroidWidget Android

Spécificités Android et Widget Android

Sous Android et en mode Widget Android, les fonctions de manipulations des ports séries et parallèles sont utilisables :
  • Uniquement sur les ports séries (pas sur les ports parallèles ni sur les ports infrarouges).
  • Uniquement avec les appareils qui implémentent le protocole CDC/ACM (Arduino ATmega32U4) et les puces de conversion USB vers série suivantes :
    • FTDI FT232R, FT232H, FT2232H, FT4232H, FT230X, FT231X, FT234XD
    • Silabs CP210x
    • Qinheng CH340, CH341A
    • Prolific PL2303
Spécificités de la fonction sOuvre :
  • Seuls les ports série peuvent être ouverts et initialisés.
  • Une boîte de dialogue sera affichée à l'utilisateur pour autoriser l'application à se connecter au périphérique.
  • Cette fonction doit être appelée dans le thread principal de l'application.
  • La gestion des événements n'est pas supportée.
  • Seule la syntaxe permettant d'ouvrir et initialiser un port en spécifiant son nom est disponible.
Classification Métier / UI : Code métier
Composante : wd300com.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Permettre à chaque poste client de lire et écrire sur son port série
Est-il possible de permettre à chaque utilisateur de l'application sur chacun des postes clients (3 par exemple) d'accéder chacun au port série de sa machine? Si oui comment?
Merci.
Franck
19 déc. 2016

Dernière modification : 06/07/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale