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 Discussion :

Fonctions python dans programme C, possible ?


Sujet :

C

  1. #1
    Membre habitué
    Femme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Octobre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 15
    Par défaut Fonctions python dans programme C, possible ?
    Bonjour à tous !

    Je dispose d'une libraire de fonctions écrite en python. Pensez vous qu'il serait possible de l'utiliser à partir de mon programme C ?

    J'ai besoin d'appeler des fonctions retournant des entiers, dans la plupart des cas, à partir de mon code C.

    Merci !

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Je ne pensais pas que c'était possible vu que Python était de plus haut niveau que le C mais j'ai trouvé ça.

    Mais (avis perso) si tes fonctions font juste du calcul, tu devrais les réécrire en C, elles iront dix fois plus vite...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre habitué
    Femme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Octobre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 15
    Par défaut
    En fait il s'agit d'une librairie qui permet de piloter une carte labjack avec une raspberry pi. Elle utilise un driver développé par les fabricants de la labjack. La librairie permet de lire ou d'écrire sur des pins de la labjack avec une simple connexion USB.

    J'ai essayé de réécrire les fonctions mais ça me demanderait trop de temps de comprendre le driver, puis de réutiliser ses fonctions...

    Merci quand même =)

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Essaie de voir s'ils ne possèdent pas une bibliothèque pour le C (un binding).
    Sinon, la solution de Sve@r peut t'aider.

    Tu peux aussi voir l'autre côté et te lancer dans le python

  5. #5
    Membre habitué
    Femme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Octobre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 15
    Par défaut
    Citation Envoyé par leternel Voir le message
    Essaie de voir s'ils ne possèdent pas une bibliothèque pour le C (un binding).
    Sinon, la solution de Sve@r peut t'aider.

    Tu peux aussi voir l'autre côté et te lancer dans le python
    Merci pour ta réponse =)

    Alors j'ai cherché mais malheureusement ils ne l'ont développé qu'en python...

    Le soucis c'est que ma raspberry est connectée à un écran en série dont le driver est écrit en C...

    Alors à l'inverse, s'il y a un moyen d'interfacer du code C dans un programme python, pourquoi pas

  6. #6
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Les deux sont possibles, mais laborieux.

    Es-tu coincé en C? parce qu'en C++, il y a boost.python...

    Dans tous les cas, bon courage

  7. #7
    Membre habitué
    Femme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Octobre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 15
    Par défaut
    Citation Envoyé par leternel Voir le message
    Les deux sont possibles, mais laborieux.

    Es-tu coincé en C? parce qu'en C++, il y a boost.python...

    Dans tous les cas, bon courage
    Ben si je résume j'ai :

    Une bibliothèque en C pour piloter mon écran.
    Une bibliothèque en python pour piloter ma labjack
    Une application graphique qui gère tout ce beau monde libre, sans contrainte de langage.

    Le plus simple ce serait de choisir entre le python et le C en fonction de la simplicité d'interfaçage de l'un dans l'autre...

    Merci !

  8. #8
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Je n'ai pas de bon avis, parce que je n'ai jamais utilisé python comme ca.
    Si boost.python remplit ton besoin de connection, puisque le C est utilisable (en général) tel quel en C++, ca pourrait être une solution viable.
    à condition que tu connaisses le C++.

    Autre piste il y a certainement dès bibliothèque pour piloter de l'usb (dont libusb?)

  9. #9
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Hello,

    Citation Envoyé par leternel Voir le message
    Tu peux aussi voir l'autre côté et te lancer dans le python
    Je partage cet avis.

    Appeler du python à partir du C, je l'ai fait il y a quelques années, c'est possible mais c'est une usine à gaz. C'est encore pire au moment du déploiement. Je n'avais pas le choix, c'était pour une émulation sur PC de produit embarqué, usage interne, je n'ai jamais eu à la déployer, heureusement. J'ai donc fait tourner le source C (pour 8 bits originalement) sur PC, j'ai remplacé le custom LCD par la SDL et quelques bouts de code, j'ai écrit vite fait en python quelques fonctions genre getSerialByte, putSerialByte... Je déconseille vraiment, sauf si c'est un exercice de style... une piste ici: https://docs.python.org/2.5/ext/callingPython.html bonne chance.

    A+

    Pfeuh

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Appeler C depuis Python est (relativement) assez facile => http://cython.org/...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #11
    Membre habitué
    Femme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Octobre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 15
    Par défaut
    Merci à tous pour votre aide !

    J'ai effectivement réussi à appeler les fonctions d'une librairie C dans un programme python mais j'ai finalement réalisé qu'au vu du petit nombre de fonctions dont j'avais besoin, je pouvais utiliser les fonctions du driver de la labjack (la couche en dessous de la librairie). C'est moins épuré mais ça marche tout aussi bien.

    Bon dev' !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/07/2009, 09h58
  2. Réponses: 6
    Dernier message: 07/05/2008, 13h54
  3. Réponses: 2
    Dernier message: 10/03/2008, 12h37
  4. Python dans un programme en C
    Par Franck.H dans le forum Interfaçage autre langage
    Réponses: 21
    Dernier message: 01/01/2008, 20h42
  5. Réponses: 3
    Dernier message: 26/06/2006, 13h48

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