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

Composants VCL Delphi Discussion :

TComPort dans Fiche DLL pour Delphi2


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3
    Par défaut TComPort dans Fiche DLL pour Delphi2
    Bonjour
    Je dois ajuter la gestion du port Serie a une vielle appli ecrite en Delphi2.

    La basculer en Delphi7 serait plus lourd que lui adjoindre une dll.

    J'ai donc mis sur une fiche un TComPort (via Delphi7)
    et j'ai transformé la fiche en DLL. La Dll contient des fonctions
    permettant de creer une fiche Non visible qui active selon
    la demande, le TComPort.
    On peut en modifier les principaux parametres.

    J'arrive à envoyer des données via le port serie.
    Mais la reception est en général nulle.
    Rarement et de facon aléatoir, en deconectant le TComport,
    il arrive parfois que ca capte une chaine recue.

    J'ai constaté que par defaut SyncMethod est à smThreadSync

    Quand je le positionne à SmNone
    Les emissions et recptions fonctionnent,
    mais au bout d'environ 5 receptions,
    Violation d'acces dans l'exe sous delphi 7 (l'editeur en executant le dll exe en param)

    Si j'execute l'exe(apres compliation delphi 2) l'appli se ferme brutalement
    sans message d'erreure, ou se fige(Ne repond plus)
    au bout d'une dizaine d'echanges.

    Si SyncMethod est à smWindowSync, c'est pire !

    TComPort ne supporte pas d'etre dans une DLL ?

    Merci pour vos pistes

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3
    Par défaut
    Nous avons procédé autrment, et ca semble marché
    Dans le fichier ReadMe du ComPort 3.0 il y a les lignes suivantes
    Note about Delphi 2:

    Note: Delphi 2 is no longer suported, however, with some minor changes,
    it should compile under Delphi 2 as well.

    Use "Component/Install" menu item to add "CPortReg.pas" unit to the
    component library. This unit registers ComPort components on
    "CPortLib" page of component pallete.
    Nous avons ajouté les lignes suivantes dans le Fichier CPort.Inc
    apres le
    {$IFDEF VER110} { C++ Builder 3 }
    {$ObjExportAll On}
    {$ENDIF}
    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
     
    //Moi Theo Deb ************************************************
    {$IFDEF VER80}//Delphi 1.x
      {$DEFINE Delphi1}
      {$DEFINE DELPHI_1}
      {$DEFINE DELPHI_1_OR_HIGHER}
    {$ENDIF}
     
    {$IFDEF VER90}//Delphi 2.x
      {$DEFINE Delphi2}
      {$DEFINE DELPHI_2}
      {$DEFINE DELPHI_2_Maxi}
      {$DEFINE DELPHI_2_Or_Higher}
    {$ENDIF}
     
    {$IFDEF VER100}//Delphi 3.x
      {$DEFINE Delphi3}
      {$DEFINE DELPHI_3}
      {$DEFINE DELPHI_3_OR_HIGHER}
    {$ENDIF}
    //Moi Theo Fin ************************************************
    A la compilation nous avons,via compilation conditionnelle,
    cacher au Delphi2 les codes qu'il n'aimait pas

    Mais le fichier gnugettext.pas nous a franchement embetté,
    surtout a cause du TMultiReadExclusiveWriteSynchronizer.
    Ne voulant pas bidouillé les Sections critiques dans ce fichier,
    nous avons laissé tombé ComPort 3.0.
    D'autant que le "gnugettext.pas" semblait etre écrit pour Delphi6 et +.

    Nous avons recuperer le ComPort 264
    et avec le meme principe (CPort.Inc ...).
    et dans le fichier CPortReg.Pas nous avons fait la modif suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Implementation
     
    {$IFDEF DELPHI_2}
      //Echec Compliation comme quoi : Duplicate Ressource
    {$Else}
      {$R CPortImg.res}
    {$ENDIF}
    Apres compilation(reconstruction Biblihoteque), nous avons pu obtenir
    notre palette CPortLib sous Delphi 2 8)

    Ouf nous avons echappé a la reecriture en Delphi7 de cette grosse appli (initialement Delphi2).

    En fait nous avions ecrit nos propres functions de gestion du port serie via les api windows, mais nous avons constaté,
    qu'avec certaines machines CPU > 1,5Go nos transferts foiraient quelques fois.
    De temps en temps, on sait pas pourquoi(1fois sur 5 a peu près),
    le premier caractere envoyé n'est pas recu.
    quand l'appli envoie "abcd" et bien c'était la chaine "bcd" qui était recu
    mais desfois ca marche à 100%.

    Je pense que ca va marché toujours à 100% maintenant.

    On a encore une semaine pour faire nos tests et on validera
    cette option beaucoup plus tot que prévu.

    Si quelqu'un sait où on va se faire avoir...nous sommes tout ouï.

    (je dis nous car on est 2 sur ce taf)

    A+

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/12/2011, 12h00
  2. Réponses: 2
    Dernier message: 19/04/2007, 16h57
  3. Réponses: 7
    Dernier message: 02/11/2006, 14h37
  4. Fermer une fiche contenue dans une dll
    Par pdgnr dans le forum Delphi
    Réponses: 2
    Dernier message: 14/10/2006, 19h09
  5. Réponses: 5
    Dernier message: 14/05/2006, 12h57

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