Bonjour, quelqu'un a t'il déja émulé une ligne I2C via RS232 avec borland C++ builder?
Merci de votre aide.
Bonjour, quelqu'un a t'il déja émulé une ligne I2C via RS232 avec borland C++ builder?
Merci de votre aide.
pas avec le port RS232 mais avec le port parallèle
mickael
Je ne suis pas raciste...Envoyé par mic.29
Est ce facile à mettre en oeuvre?
Comment as tu fais? dll? interface hard?
je suis un peu en galere Merci de ton aide....
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
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...
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.Envoyé par jeannot27
As-tu :Envoyé par jeannot27
- Linké la librairie d'importation (.LIB) de ta DLL ?
- S'il n'existe pas, as-tu appelé LoadLibrary/GetProcAddress ?
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.Envoyé par jeannot27
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
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
Quel est le nom exact de la fonction qui manque, stp ?Envoyé par jeannot27
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
Ce n'est pas une fonction qui manque, mais n'importe quelle fonction de la dll provoque ce message....Envoyé par Mac LAK
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.Envoyé par jeannot27
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
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...Envoyé par Mac LAK
Pas possible : soit ce n'est pas le bon entête, soit ta DLL n'est pas compatible BCB.Envoyé par jeannot27
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
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....
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é.Envoyé par jeannot27
Tu dois avoir, dans ton entête, des trucs de ce genre :Et, dans le .CPP :
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.OK ?
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");
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
Partager