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

C++Builder Discussion :

Ligne I2C [Non suivi]


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 115
    Par défaut Ligne I2C
    Bonjour, quelqu'un a t'il déja émulé une ligne I2C via RS232 avec borland C++ builder?
    Merci de votre aide.

  2. #2
    Membre averti
    Inscrit en
    Août 2003
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 16
    Par défaut
    pas avec le port RS232 mais avec le port parallèle

    mickael

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 115
    Par défaut
    Citation Envoyé par mic.29
    pas avec le port RS232 mais avec le port parallèle

    mickael
    Je ne suis pas raciste...
    Est ce facile à mettre en oeuvre?
    Comment as tu fais? dll? interface hard?
    je suis un peu en galere Merci de ton aide....

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 115
    Par défaut
    help mic.29.....

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Le protocole I²C "soft" n'est pas hyper difficile dans le cas nominal, mais devient assez infect si tu dois gérer tous les cas possibles (multi-maître, lignes pouvant être polarisées, mode esclave, etc...). Tu dois pouvoir le faire avec la RS-232 en utilisant CTS/RTS et DTR/DSR pour gérer la bidirectionnalité, mais à mon avis tu ne tiendras même pas les 100 kbits/s !!!

    Faut pas être trop accro aux performances, mais admettons.

    Sinon, j'en ai déjà fait un via les GPIOs d'un CPU embarqué, c'est pas la mort. Dans ton cas, avec le port parallèle, il y a un composant BCB pour gérer ça, mais je n'ai pas le nom en tête (TDlIo ou un nom comme ça). Fais une recherche rapide sur le forum sur la gestion du port parallèle, ça sera rapide à trouver, ça revient régulièrement.

    Sinon, tu as des problèmes sur le protocole I²C lui-même ?
    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
    Octobre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 115
    Par défaut
    Non le protocole i2c est ok, je cherche juste une dll pour pouvoir faire un start, envoyer l'adresse de mon module, tester l'acknoledge...
    La performance m'est tout a fait secondaire, je veux juste essayer de communiquer avec l'esclave lui envoyer une trame d'ecriture toute bete....c super simple dans le principe mais qd j'utilise la dll que j'ai et que dans mon code je me sers d'une fonction de la dll, j'ai un message d'erreur du lieur....
    pourtant la dll est censee fonctionner, je pense l'avoir bien installée....est ce qu'il y a pas une otpion a cocher sous BCB dans le projet..je sais pas je bloque...

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par jeannot27
    La performance m'est tout a fait secondaire, je veux juste essayer de communiquer avec l'esclave lui envoyer une trame d'ecriture toute bete....
    Attention quand même, certains esclaves I²C font n'importe quoi si l'on ne respecte pas les vitesses prévues (100 et 400 kbits/s), surtout si ce sont des microcontrôleurs. Mais y'a pas de problèmes par contre avec les composants type EEPROM, par exemple.

    Citation Envoyé par jeannot27
    c super simple dans le principe mais qd j'utilise la dll que j'ai et que dans mon code je me sers d'une fonction de la dll, j'ai un message d'erreur du lieur....
    As-tu :
    - Linké la librairie d'importation (.LIB) de ta DLL ?
    - S'il n'existe pas, as-tu appelé LoadLibrary/GetProcAddress ?

    Citation Envoyé par jeannot27
    pourtant la dll est censee fonctionner, je pense l'avoir bien installée....est ce qu'il y a pas une otpion a cocher sous BCB dans le projet..je sais pas je bloque...
    Je pense tout simplement que tu n'as pas lié correctement ta DLL, tu devrais faire une recherche sur les FAQ et tutos sur le sujet, histoire de vérifier que tu n'as pas fait d'erreur sur ce point précis.

    Si par contre ta DLL est correctement liée (mais ça semble peu probable), alors donne le message d'erreur ici.
    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

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 115
    Par défaut
    J'ai linké la librairie en faisant une commande DOS IMPLIB....
    Je l'ai ensuite inclus dans mon projet....
    Que faire d'autre?
    Mon message d'erreur est :

    "[Lieur Erreur]Unresolved external 'fonctiondll()'referenced
    from C:\TEST I2C VIA RS232\UNIT1.OBJ".

    Merci

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par jeannot27
    "[Lieur Erreur]Unresolved external 'fonctiondll()'referenced
    from C:\TEST I2C VIA RS232\UNIT1.OBJ".
    Quel est le nom exact de la fonction qui manque, stp ?
    Sinon, c'est qu'il te manque une DLL, ou que ta DLL n'est pas compatible avec BCB (DLL Visual C++ exportant une classe C++, par exemple).

    Normalement, une DLL est documentée en donnant l'intégralité des fonctions qu'elle exporte, avec leurs paramètres. Si tu n'as pas cette "liste" (même via un simple header .H/.HPP), c'est mort de toutes façons.
    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

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 115
    Par défaut
    Citation Envoyé par Mac LAK
    Citation Envoyé par jeannot27
    "[Lieur Erreur]Unresolved external 'fonctiondll()'referenced
    from C:\TEST I2C VIA RS232\UNIT1.OBJ".
    Quel est le nom exact de la fonction qui manque, stp ?
    Sinon, c'est qu'il te manque une DLL, ou que ta DLL n'est pas compatible avec BCB (DLL Visual C++ exportant une classe C++, par exemple).

    Normalement, une DLL est documentée en donnant l'intégralité des fonctions qu'elle exporte, avec leurs paramètres. Si tu n'as pas cette "liste" (même via un simple header .H/.HPP), c'est mort de toutes façons.
    Ce n'est pas une fonction qui manque, mais n'importe quelle fonction de la dll provoque ce message....
    Oui j'ai un header file qui reference toutes les fonctions de la dll, je l'ai ajouté a mon projet.

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par jeannot27
    Ce n'est pas une fonction qui manque, mais n'importe quelle fonction de la dll provoque ce message....
    Oui j'ai un header file qui reference toutes les fonctions de la dll, je l'ai ajouté a mon projet.
    Bon, ben tu n'as pas importé les fonctions de ta librairie, c'est tout... En gros, tu les déclares, mais tu ne les "linke" pas de manière dynamique à ton programme.

    Regarde l'aide des fonctions LoadLibrary, GetProcAddress et FreeLibrary, sur MSDN d'une part, et il doit y avoir une QR de FAQ sur le sujet (regarde "Développement Windows", "Visual C++" et bien sûr "Borland C++ Builder).
    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

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 115
    Par défaut
    Citation Envoyé par Mac LAK
    Bon, ben tu n'as pas importé les fonctions de ta librairie, c'est tout... En gros, tu les déclares, mais tu ne les "linke" pas de manière dynamique à ton programme.

    Regarde l'aide des fonctions LoadLibrary, GetProcAddress et FreeLibrary, sur MSDN d'une part, et il doit y avoir une QR de FAQ sur le sujet (regarde "Développement Windows", "Visual C++" et bien sûr "Borland C++ Builder).
    J'ai deja essaye de charger la librairie a l'aide de loadlibrary et les fonctions a l'aide de getprocaddress, des que j'ajoute le .h a mon projet j'obtiens le meme resultat...

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par jeannot27
    J'ai deja essaye de charger la librairie a l'aide de loadlibrary et les fonctions a l'aide de getprocaddress, des que j'ajoute le .h a mon projet j'obtiens le meme resultat...
    Pas possible : soit ce n'est pas le bon entête, soit ta DLL n'est pas compatible BCB.

    Quels sont les résultats de LoadLibrary et GetProcAddress ? As-tu listé les fonctions exportées de ta DLL, avec Dependancy Walker par exemple ?

    Et ton .H, ce sont bien des fonctions qui sont déclarées dedans, pas une classe au moins ?
    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

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 115
    Par défaut
    suite à load library, j'ai une fenetre de presentation du createur de la dll, ensuite qd je fais un getprocadress d'une fonction qui existe il me retourne bien l'adresse, si je met une fonction inconnue il me renvoit NULL, donc ca fonctionne, mais quand je veux utiliser la focntion à l'aide du pointeur obtenu par getprocadress, il me dit que la fonction n'a pas de paramètre alors qu'elle en a..... cette dll a ete cree avec visual, je pense qu'il y a un problème de compatibilité....
    Dans le .H du coup peut etre que l'entete change...en tout cas pas de class que des fonctions....

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par jeannot27
    Dans le .H du coup peut etre que l'entete change...en tout cas pas de class que des fonctions....
    Oui, mais as-tu utilisé des variables fonctionnelles pour stocker ces fonctions ? Il ne faut pas déclarer uniquement un prototype (ça ne fonctionne pas), mais déclarer une variable fonctionnelle d'un type donné.

    Tu dois avoir, dans ton entête, des trucs de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // Type fonctionnel .
    typedef INT FFonction1 ( BYTE Param1, BYTE Param2, WORD Param3, LPWORD Param4 ) ;
     
    // Fonctions de la DLL
    extern FFonction1* Fonction1 ;	// Importation 1ère fonction.
    Et, dans le .CPP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    FFonction1* Fonction1 = NULL ; // Initialiser la variable fonctionnelle.
     
    ....
     
    Fonction1=(FFonction1*)GetProcAddress(DllHandle,"Fonction1");
    OK ?

    Si ce ne sont que des fonctions, le fait qu'elle soit créée avec Visual C++ ne pose pas de problèmes.
    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

Discussions similaires

  1. Réponses: 9
    Dernier message: 12/08/2002, 07h38
  2. Aide en ligne
    Par étoile dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/08/2002, 14h00
  3. [TP]lire une ligne de l'ecran et la stocker dans une chaine
    Par Bleuarff dans le forum Turbo Pascal
    Réponses: 26
    Dernier message: 02/07/2002, 10h08
  4. Couleur des lignes dans DBGrid
    Par eddie dans le forum C++Builder
    Réponses: 5
    Dernier message: 21/06/2002, 18h15
  5. String Grid et choix d'une couleur pour une ligne
    Par Gigottine dans le forum C++Builder
    Réponses: 12
    Dernier message: 17/05/2002, 15h23

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