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

Delphi Discussion :

CH341A et bus I2C


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti

    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2024
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2024
    Messages : 26
    Par défaut CH341A et bus I2C
    Bonsoir,

    J'ai enfin trouvé la petite carte qui me permet de communiquer de mon PC à mes périphériques I2C. Le petit logiciel que j'utilise était sur un site Internet, j'ai pu afficher 2 lignes sur mon afficheur LCD. J'ai les sources mais malheureusement pour moi, c'est du C++. Est ce que par le plus grand des hasards, il y aurait un utilisateur qui utilise cette puce pour communiquer en I2C avec un exemple simple ?

    Merci pour vos réponses et votre aide

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Pourquoi ne pas créer une DLL en C++Builder pour l'utiliser en Delphi ?
    Voir même un Component dans un BPL

    On peut utiliser directement du pascal en dans C++Builder, je ne crois pas la réciproque soit possible.


    Ensuite, la traduction du C++ en Delphi est possible, faudra identifier l'extrait de code précis.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 635
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Ensuite, la traduction du C++ en Delphi est possible, faudra identifier l'extrait de code précis.
    Outil CtoDelphi par exemple

  4. #4
    Membre averti

    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2024
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2024
    Messages : 26
    Par défaut ctodelphi
    Bonjour,

    Serait-il possible d'avoir le programme CtoDelphi compilé, le composant pose problème lors de la compilation.

    Merci

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 635
    Billets dans le blog
    65
    Par défaut
    Le lien que j'ai donné pointe sur plusieurs versions, le dossier le premier de la liste contient non seulement les sources mais aussi un zip ((c2delphi-0.9.2.zip) contenant l'exécutable et des dossiers.
    Décompressez ce zip vers un dossier sur le disque (mon habitude : le faire en dehors de "program files")

  6. #6
    Invité
    Invité(e)
    Par défaut
    Si cette puce est pilotée par la lib CH341DLL.DLL il suffirait de traduire les quelques cinq ou six fonctions les plus utiles pour établir une communication I2C.

    Code c++ : 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    HANDLE	WINAPI	CH341OpenDevice(  // Open the CH341 device, return the handle, if an error occurs, it will be invalid
    	ULONG			iIndex );  // Specify the device serial number of CH341, 0 corresponds to the first device
     
     
    VOID	WINAPI	CH341CloseDevice(  // Close the CH341 device
    	ULONG			iIndex );  // Specify the serial number of the CH341 device
     
    BOOL	WINAPI	CH341SetStream(  // Set the serial port flow mode
    	ULONG			iIndex,  // Specify the CH341 device number
    	ULONG			iMode );  // To specify the mode, see Downlink
    // Bit 1-bit 0: I2C interface speed /SCL frequency, 00= low speed /20KHz,01= standard /100KHz(default),10= fast /400KHz,11= high speed /750KHz
    // Bit 2: SPI I/O number /IO pins, 0= single in/single out (D3 clock /D5 out /D7 in)(default),1= double in/double out (D3 clock /D5 out D4 out /D7 in D6 in)
    // Bit 7: Bit order in SPI bytes, 0= low first, 1= high first
    // All other reservations must be 0
     
    BOOL	WINAPI	CH341ReadI2C(  // Read one byte of data from the I2C interface
    	ULONG			iIndex,  // Specify the serial number of the CH341 device
    	UCHAR			iDevice,  // The lower 7 bits specify the I2C device address
    	UCHAR			iAddr,  // Address of specified data unit
    	PUCHAR			oByte );  // Address of specified data unit
     
     
    BOOL	WINAPI	CH341WriteI2C(  // Write a byte of data to the I2C interface
    	ULONG			iIndex,  // Specify the serial number of the CH341 device
    	UCHAR			iDevice,  // The lower 7 bits specify the I2C device address
    	UCHAR			iAddr,  // Address of specified data unit
    	UCHAR			iByte );  // Byte data to be written
     
     
    BOOL	WINAPI	CH341StreamI2C(  // Process I2C data stream, 2-wire interface, clock line for SCL pin, data line for SDA pin (quasi-bidirectional I/O), speed of about 56K bytes
    	ULONG			iIndex,  // Specify the CH341 device number
    	ULONG			iWriteLength,  // Number of bytes of data to write out
    	PVOID			iWriteBuffer,  // Points to a buffer to place data to be written, usually with the I2C device address and read/write direction bits as the first byte
    	ULONG			iReadLength,  // Number of bytes of data to be read
    	PVOID			oReadBuffer );  // Points to a buffer and returns the data read in

    equivalent en Delphi:
    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
    function CH341OpenDevice(iIndex: ULONG): THandle; stdcall; external 'CH341DLL.DLL';
     
    procedure CH341CloseDevice(iIndex: ULONG); stdcall; external 'CH341DLL.DLL';
     
    function CH341SetStream(iIndex: ULONG; iMode: ULONG): BOOL; stdcall; external 'CH341DLL.DLL';
     
    function CH341ReadI2C(iIndex: ULONG; iDevice: UCHAR; iAddr: UCHAR;var oByte: UCHAR): BOOL; stdcall; external 'CH341DLL.DLL';
     
    function CH341WriteI2C(iIndex: ULONG; iDevice: UCHAR; iAddr: UCHAR; iByte: UCHAR): BOOL; stdcall; external 'CH341DLL.DLL';
     
    function CH341StreamI2C(iIndex: ULONG; 
    			iWriteLength: ULONG; 
    			iWriteBuffer: PVOID; 
    			iReadLength: ULONG; 
    			oReadBuffer: PVOID): BOOL; stdcall; external 'CH341DLL.DLL';

Discussions similaires

  1. Clavier matriciel via bus I2C
    Par chibi95 dans le forum Général Java
    Réponses: 0
    Dernier message: 13/05/2009, 11h07
  2. bus I2C avec compilateur c de CCS
    Par damousino dans le forum C
    Réponses: 3
    Dernier message: 23/02/2009, 19h14
  3. Bus I2C entre Zigbee et PCF8575
    Par seicom2008 dans le forum C
    Réponses: 0
    Dernier message: 01/02/2008, 11h52
  4. Creer un bus I2c en C++
    Par ToMs dans le forum C++
    Réponses: 3
    Dernier message: 28/03/2006, 17h10
  5. acceder au bus i2c avec visual c++
    Par ledaker dans le forum MFC
    Réponses: 1
    Dernier message: 06/03/2006, 10h43

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