Besoin d'aide sous Delphi
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Besoin d'aide sous Delphi



  1. #1
    invite03481543

    Besoin d'aide sous Delphi


    ------

    Bonjour,

    je suis en train de découvrir Delphi que je souhaite utiliser dans le cadre d'une application qui sort de mon domaine de compétence habituelle.

    Je fais appel aux bonnes volontés qui pourront je l'espère me venir en aide dans mon apprentissage de ce formidable outil au potentiel étonnant.
    Mon projet est le suivant, je vais essayer d'être le plus clair possible pour ne pas faire perdre de temps à personne:

    Je souhaite réaliser un interface de communication entre un PC et une carte électronique de mon crû possédant elle même un interface Ethernet ainsi qu'un microcontroleur 8 bits.
    Coté PC mon interface devra me permettre de recevoir des datas provenant de l'application qui viendront remplir les bonnes cases dans l'interface graphique reliant la carte électronique à l'interface connecté par TCP/IP.
    Actuellement la carte électronique comporte une interface RS232 reliée à un module Ethernet qui se charge d'empaqueter les datas au bon format (c'est un module XPORT de chez LANTRONIX).

    Dans un premier temps je souhaite que les datas que renvoie la carte électronique puissent être captées par mon interface PC, décodées et mise aux bons endroits dans mon interface graphique (dans les bons composants).

    Pour ce qui est de la partie graphique j'ai bien compris le rôle des différents composants de Delphi7, boutons,mémo, checkbox, etc mais ce qui me fait cruellement défaut pour l'instant c'est le coté évènementiel que je ne saisis pas vraiment.
    Quelle fonction appeler pour lire des datas ?

    Par exemple, selon l'état logique que je récupère via la carte électronique (une entrée tout ou rien de type capteur) je souhaite que dans l'interface se trouve coché ou non selon l'état reçu une case.
    Comment dois-je procéder pour déclarer cela dans le corps du programme ?
    J'aimerai avoir si possible un exemple de ce que cela donne au niveau de l'implantation dans le code.
    J'ai regardé divers tutoriaux mais je n'ai rien trouvé d'explicite là dessus, ça manque d'exemples d'applications sur ce sujet je trouve.

    Actuellement j'envoie au travers de la RS232 un buffer qui contient les datas suivantes:

    Buffer[]={0,21,1005}
    Buffer[0] est précisément l'état du capteur tout ou rien donc ici à 0 => dans l'interface graphique la case ne doit pas être cochée donc.
    Buffer[1]=21 qui est une température et doit apparaitre dans un champ que j'ai choisit de type Tmémo par exemple
    Buffer[2]=1005 représente une pression en mBar qui devra être récupéré dans un Tmemo également.

    Si quelqu'un peut juste m'indiquer le raisonnement à tenir et la démarche pour interfacer cela dans Delphi7 ça me ferait avancer d'un pas de géant sans nul doute.

    Vous remerciant par avance pour toute l'aide que vous voudrez bien m'apporter.
    Et en espérant avoir été clair... n'utilisant pas forcément le bon vocabulaire.
    PS: je pratique habituellement le langage C ou Pascal mais je ne suis pas encore sensibilisé aux langages orientés objets.

    -----
    Dernière modification par HULK28 ; 25/10/2010 à 17h32.

  2. #2
    Jack
    Modérateur

    Re : Besoin d'aide sous Delphi

    Salut Hulk,

    je ne sais pas si je pourrai beaucoup t'aider car j'utiliser plutôt C++ builder, mais les composants et le classes sont les mêmes que celles de delphi.

    As-tu regardé du côté des composants TClientSocket et TServerSocket? J'avais interfacé un afficheur possédant une rs232 avec un convertisseur RS232<->ethernet assurant la même fonction que ton Xport.

    Sinon, le tuto qui m'a permis de démarrer:
    http://www.developpez.org/club/g3dbu...t/tutoriel.htm

    A+

  3. #3
    invite03481543

    Re : Besoin d'aide sous Delphi

    Salut Jack

    Oui j'utilise ces composants mais je manque d'expérience et d'exemples sur leur usages, je vais regarder ton lien et au besoin je reviendrais avec des questions plus précises.
    Merci à toi.

  4. #4
    invite03481543

    Re : Besoin d'aide sous Delphi

    Bon j'avance bien.
    J'ai un soucis avec une fonction dont je ne suis pas très sur:

    Code:
    procedure TForm1.TcpClient1Receive(Sender: TObject; Buf: PAnsiChar;
      var DataLen: Integer);
    var
      Buffer : string;
      iArobase, iCR : integer;
    
      Message, Capteur, Etat : string;
    begin
      { Copier les données dans un string car c'est plus simple à manipuler }
      SetLength(Buffer, DataLen);
      CopyMemory(@Buffer[1], @Buf[0], DataLen);
      Memo.Lines.add('Reçu : ' + Buffer);
    
      { Analyser Buffer.
    
        On s'attend à ce qu'un message commence avec un '@' et finisse avec un #13.
        De cette façon, nous pourrons détecter si plusieurs messages sont collés.
          }
      iArobase := Pos('@', Buffer); // Chercher le Arobase
      iCR := PosEx(#13, Buffer, iArobase); // Chercher le #13 à partir du Arobase
    
      Message := Copy(Buffer, iArobase + 1, iCR - iArobase - 1);
    
      { Maintenant on s'attend à ce que les 3 premiers caractères du message indique
          le capteur concerné et le 4ème c'est l'état (1 = activé, 0 = désactivé) }
      Capteur := Copy(Buffer, 1, 3);
      Etat := Copy(Buffer, 4, 1);
    
      { Vérifions que les données sont correctes et interprétons-les }
      if Capteur = 'CP1' then
      begin
        // CP1 => Capteur Pression 1
        if Etat = '0' then
          CapteurPression1EtatLabel.Caption := 'Désactivé'
        else if Etat = '1' then
          CapteurPression1EtatLabel.Caption := 'Activé'
        else
          CapteurPression1EtatLabel.Caption := 'Erreur de communication';
      end;
    end;
    CopyMemory me semble mal déclarée, quelqu'un pourrait-il me renseigner mieux sur cette fonction ?
    Merci par avance.

  5. A voir en vidéo sur Futura
  6. #5
    Jack
    Modérateur

    Re : Besoin d'aide sous Delphi

    peut-être
    Code:
     CopyMemory(@Buffer[1], Pointer(@Buf[0], DataLen));
    ?

    Sinon, tu as essayé avec les AnsiStrings?

    Sinon, désolé, mais je suis un peu limité avec Delphi.

    A+

  7. #6
    Cyrille999

    Re : Besoin d'aide sous Delphi

    Bonjour à vous deux,

    Ca fait longtemps --- Delphi ---- je n'ai jamais fait de programmation "technique" avec ce produit --- mais à nous trois, nous devrions y arriver ---

    Tu as de la chance, Hulk28, tu as 2 composantes GRATUITES pour la gestion du RS232:
    http://delphi.developpez.com/freewar...tionTelephonie

    - ComPort Library
    - TurboPower Async Professional


    Sinon pour en revenir à ta question, CopyMemory est une fonction de "l'api windows" et est bien déclaré, comme tu peux le voir ici ---
    en Delphi, @ est un pointeur, c'est tout à fait correct.

    Mais bon TClientSocket, c'est trop générique, alors qu'il existe des composantes spécialisées gratuites

    Cyrille
    La connaissance est la matière première de l'Intelligence.

Discussions similaires

  1. Besoin d'aide sous Orcad 16.0
    Par invitef58e62d1 dans le forum Électronique
    Réponses: 1
    Dernier message: 06/06/2009, 09h25
  2. besoin d'aide sous MAXIMA
    Par invite222cca1a dans le forum Mathématiques du supérieur
    Réponses: 22
    Dernier message: 14/06/2008, 01h21
  3. Réponses: 2
    Dernier message: 07/01/2008, 17h43
  4. communication sous delphi
    Par invitee2e07f1d dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 07/08/2006, 23h08
  5. Kylix (version delphi) sous linux pb de variable
    Par invite5516adb1 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 22/04/2004, 13h22