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

Java Discussion :

Echange variable Programme C, programme Java


Sujet :

Java

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 14
    Par défaut Echange variable Programme C, programme Java
    Salut à tous.

    Je souhaiterai savoir si il est possible (et comment faire) pour pouvoir transmettre une variable d'un programme A en java vers un programme B en C (et réciproquement).
    On peut utiliser des fichiers dans lesquels on va écrire mais je dois échanger rapidement un nombre raisonnable de petites variables (des chaines de caractères, des nombres etc).

    Pour donner une idée c'est pour transmettre des ordres à un robot du genre va à gauche, va à droite. Le programme Java réceptionne et interprète les commandes bluetooth et le programme C envoie les trames CAN.

    Merci.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Par défaut
    A l'aide de Socket

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 14
    Par défaut
    Salut

    Merci de ta réponse.

    On m'a dit que c'était compliqué à mettre en oeuvre (pas les socket mais l'échange de variable entre deux programmes en langage différents), est ce vrai ?

    Par ailleurs quelles librairies (C et Java) puis-je utiliser pour utiliser des socket dans ce contexte.

    Merci.

  4. #4
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Si tu n'as pas besoin d'une synchronisation parfaite, le plus simple reste la communication par fichier du moins si cela concerne des applications sur le même poste.
    Il y a pas mal d'application qui dispose de dossier "in"/"out". Où ceux-ci lisent ou écrivent pour d'autres programmes des fichiers de données.

    Après il est aussi possible de faire des échanges d'informations via une base de données.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 14
    Par défaut
    Je n'avais pas pensé à la base de donnée en effet.

    Sinon si je veux échanger une 50 aine de variables (pour prendre large) de type char, int etc en un dixième de seconde par exemple c'est faisable via les fichiers ou les temps d'accès sont trop lents ?

    Merci.

  6. #6
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    socket + byte buffer (java.nio)
    parfait pour retranscrire/recoder des données d'un mode dans un autre (caractères, petit-boutien/gros-boutien, ...)
    dans notre projet on pilote des tas de hardware (mais on se casse pas la tête: c'est uniquement des chaines de caractères envoyées directement sur la socket en mode ligne ....et on les recode)

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Les fichiers ça a une réactivité très imprévisible, je ne recommande pas.

    Je rejoindrais plutôt prof shadoko. Ou à la rigueur une BDD qui peut faire l'affaire, mais ça fait un tiers en plus, c'est un peu compliqué pour pas grand-chose.

    En conclusion donc, oui, échanger des variables d'un programme à un autre est nettement plus compliqué qu'à l'intérieur d'un seul programme. Mais en utilisant des String passées par socket comme le propose prof Shadoko, ce n'est pas si difficile que ça quand même.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 14
    Par défaut
    Merci de vos réponses.
    Je vais donc m'orienter sur l'aspect socket pour le transfert.

    Auriez vous un cours efficace sur le sujet ?
    Les sockets ça s'utilise toujours pareil ou il y a plein de types de Socket pour chaque utilisation avec des manières de programmer différentes à chaque fois ? (on en a un peu utilisé pour le bluetooth mais c'était java vers java).

    Nous sommes des débutants en programmation.

    Cdlt

  9. #9
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Première question, vu que le protocole n'est pas établis entre les deux programmes, j'en conclue qu'ils sont tous les deux en cours de réalisation => Pourquoi diable se compliquer la vie en faisant 2 programmes?
    L'échange entre des programmes de langage différents n'est pas plus compliqué que l'échange entre programmes de même langage. C'est chiant dans les deux cas
    Si tu est sous une os de type unix, tu aussi l'option des pipes nommés, qui ressemblent comme deux goutes d'eau à des fichiers mais n'ont pas le problème des performances et permettent un transfert producteur => consomatteur
    Tu as aussi l'option de faire un pipe entre les deux programme: le standard output de l'un est lu dans le standard input de l'autre.

  10. #10
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 14
    Par défaut
    Salut.

    Concernant les programmes c'est trop tard, je suis obligé d'en avoir deux, un en C et un en Java.

    Les OS sont basés sur linux debian (en fait on utilise des raspberry, l'OS exact est "raspbian").

    Pour le pipe, je connais légèrement linux et je crois comprendre ce que tu veux dire (ça me fait penser au |qui permet de rediriger les flux de sorties d'un prgm vers les flux d'entrée d'un autre).

    J'ai trouvé plusieurs ressources en C sur ce dont tu parles : http://www-igm.univ-mlv.fr/~dr/NCSPDF/chapitre10.pdf
    http://www-int.impmc.upmc.fr/impmc/E...chap3/323.html

    Tu penses que pour un débutant c'est vraiment compliqué à mettre en oeuvre ou c'est abordable ?

    Par ailleurs je serai soumis à des problèmes si je fais un pipe de Java vers C ou bien c'est exactement comme si je faisais de Java vers Java (enfin les noms des fonctions et des bibliothèques diffèrent mais la méthodologie serait exactement identique) ?

    Enfin il n'y aurai pas une solution plus simple, du genre executer une commande console via le programme 1 en java du genre programme1java | programme2C mais quand les deux programmes sont déjà lancés ? Ou bien ça revient en fait à utiliser ce qui est décrit plus haut ?

    Merci.

  11. #11
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    10.6 tubes nommé, tu le fait avec la commande mkfifo du shell, c'est le plus simple. Tu aura un final un "Fichier". T'as plus qu'à avoir un process qui l'ouvre en lecture, un autre en écriture et t'aura ton tube de communication


    Si tu veux du bidirectionnale, faut créer deux pipes, mais la logique reste la même.

    java sur raspberry => T'as vraiment pris l'option la plus adaptée à ton architecture toi :s

    Pourquoi tout n'a pas été fait dans le même language???

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/01/2006, 22h52
  2. Réponses: 3
    Dernier message: 07/11/2005, 17h33
  3. Réponses: 2
    Dernier message: 08/09/2005, 12h18
  4. Envoyer plusieur variable a un programme
    Par scaleo dans le forum Langage
    Réponses: 9
    Dernier message: 06/09/2005, 11h09
  5. [JDBC] Programmation autre que Java
    Par Vow dans le forum JDBC
    Réponses: 2
    Dernier message: 23/06/2004, 11h22

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