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

API, COM et SDKs Delphi Discussion :

Multi RS232


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 86
    Par défaut Multi RS232
    Bonjour,
    Je developpe une petite aplli delp qui utilise plusieurs ports RS232
    J'ai un soucis, j'aimerais ne pas avoir a attendre d'avoir "causer" sur un port pour pouvoir "causer" sur le suivant. J'aimerais donc parler aux 4 ports en meme temps et renvoyer toutes ces donnees dans ma base de données. (il s'agit de relevé de pression de températures et autres) .
    Je gagnerais un temps fou!! Merci d'avance !!

  2. #2
    Membre Expert
    Avatar de Bestiol
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 515
    Par défaut
    Je ne sais pas si c'est faisable :

    créer un thread par port avec lequel tu veux communiquer ??

    Après pour l'accès à la BDD je ne sais pas si ça se passerait bien ou pas... Et il y a peut-être une solution plus "matérielle" ?
    Mea est trop forte, elle flotte : mea coule pas !

    Basically this boot sector (Win95) code is 32 bit extension for a 16 bit patch to an 8 bit boot sector originally coded for a 4 bit microprocessor, written by a 2 bit company, that can't stand 1 bit of competition.

    olance.developpez.com
    Servez-vous, profitez, abusez de la FAQ Delphi !!

  3. #3
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    La solution est effectivement de passer par des threads : Windows est parfaitement capable (surtout vu la lenteur d'un port série par rapport au processeur) de gérer 4 ports COM simultanément.
    Simplement, pourquoi te casser la tête à les gérer toi-même, ces threads, quand des gens l'ont déjà (bien) fait ? :-D

    Va voir là :
    AsyncFree : http://delphree.clexpert.com/pages/app_ASYNCFREE.htm
    et
    ComPort : http://sourceforge.net/projects/comport/

    J'ai essayé les deux, voici mon compte-rendu :
    - AsyncFree est très bien, mais peut poser des problèmes si les timings d'échanges sur les LS sont "courts". J'ai dû abandonner cette librairie parcequ'elle ne pouvait pas supporter facilement des timeouts de l'ordre de quelques millisecondes. Par contre, pour les transferts "lourds" continus et plus ou moins unidirectionnels, elle est d'enfer.
    - CPort est (à mon sens) plus primitive d'accès, moins facile à utiliser et moins documentée, mais permet des timings ultra serrés. Elle est plus adaptée à des "ping-pongs" permanents sur la LS.

    Les deux librairies marchent de 95 à XP, et gèrent les ports COM de 1 à 255 si jamais tu en as besoin... ;-)

    Bref, si ton protocole ressemble à du ModBus, passe direct sur ComPort. Si c'est un flux genre Telnet, prends AsyncFree. Si c'est un mélange des deux, essaie les deux !

    Pour la centralisation en BDD, par contre, c'est pas mon rayon... Mais tu peux être amené à utiliser un thread supplémentaire par port, en plus d'un objet de synchro comme TMultiReadExclusiveWriteSynchronizer, sauf si ton accès BDD est d'ores et déjà protégé contre les accès concurrents.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  4. #4
    Expert confirmé

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Par défaut
    On peut le faire sans utiliser un seul Thread auxiliaire et en utilisant seulement les APIs windows avec les structures OverLapped. Je me suis servi de cette méthode pour accéder à plus de 10 ports RS232 en même temps sans créer de thread.
    Par contre, le code est sous copyright, mais je suis parti seulement de l'aide MS livrée avec Delphi

    Le plus simple utilise des composants tous faits. J'ai déjà utilisé TComPort et il intègre directement un thread par liaison.
    Delphi :
    La F.A.Q. , 877 réponses à vos questions !
    264 sources à consulter/télécharger !

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Arf, oui, les Overlapped... J'avoue que je n'y pense jamais pour du multiplexé...
    Monstrueusement puissant, abominable à mettre au point, mais quand (enfin) ça marche, c'est génial !!!
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 86
    Par défaut
    Merci pour toutes ces reponses, Comport est le GEstionnaire serie que j'utilise donc je ne vais pas etre trop depaysé. Je vais essayer de m'y plonger un peu plus profondement pour voir!!! merci beaucoup a topus et bonne journee!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Multi-selection dans une ComboBox ?
    Par Moloko dans le forum MFC
    Réponses: 5
    Dernier message: 07/07/2021, 17h26
  2. RS232 multi plateforme
    Par supposeitwar dans le forum EDI et Outils pour Java
    Réponses: 0
    Dernier message: 09/10/2009, 16h58
  3. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  4. [TP][MULTI-PROBLEME]Comment afficher des images pcx
    Par mikoeur dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 24/10/2002, 13h57
  5. Multi-acces a la BD Paradox
    Par _Rico_ dans le forum Paradox
    Réponses: 3
    Dernier message: 22/07/2002, 15h33

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