electro575 a écrit 860 commentaires

  • [^] # Re: lire le cours sur execl et sur les tubes nommés

    Posté par  . En réponse au message Communication entre deux fichiers sous linux. Évalué à 0.

    Ben j'ai juste l'appel du programme acquisition.c qui ne fonctionne pas.

    Si je lance les deux programmes separement ca fonctionne.

    Le tube nommé est écrit par acq.c et lu & affiché par interface.cpp

    Merci pour ta precision

  • [^] # Re: lire le cours sur execl et sur les tubes nommés

    Posté par  . En réponse au message Communication entre deux fichiers sous linux. Évalué à 0. Dernière modification le 13 avril 2015 à 10:02.

    Je m’intéresse à ça pour mon stage plutôt. J'ai besoin d'un .c pour récupérer des données depuis un matériel mais sa bibliothèque n'est pas compatible avec g++ …
    Du coup je dois scinder mon travail ! Quelle chance, ça me retarde un peu mais j'en apprends également.

    Je cherche a récupérer des données d'un fichier acquisition.c.
    1-Pour cela j'envoie des arguments depuis le programme interface.cpp vers acquisition.c avec la commande execl. Ça m'évite de créer un tube nommé et de traiter la chaine de caractères, en plus cette méthode ne fonctionne pas très bien malheureusement.
    2-Le programme acquisition.c fait l'acquisition des données et créé un tube nommé et écrit dessus.
    3-Le fichier interface.cpp vient lire le tube nommé.

    CODE :

    Syntaxe de execl :
    execl("chemin d'accès/prog","prog","arg1","arg2",…,NULL);

    Programme :

        #include "mainwindow.h"
        #include "ui_mainwindow.h"
    
        #include <stdio.h>
        #include <stdlib.h>
        #include <unistd.h>
    
        #include <iostream>
        #include <string>
        #include <fstream>
    
        #include <qwt_plot_curve.h>
        #include <QColorDialog>
    
        #include <fcntl.h>
        #include <stdio.h>
        #include <stdlib.h>
        #include <sys/stat.h>
        #include <sys/types.h>
    
        using namespace std;
    
        //CONSTRUCTEUR
        MainWindow::MainWindow(QWidget *parent) :
            QMainWindow(parent),
            ui(new Ui::MainWindow)
        {
            ui->setupUi(this);
        }
    
        //DESTRUCTEUR
        MainWindow::~MainWindow()
        {
            delete ui;
        }
    
        void MainWindow::on_pushButton_clicked()
        {
            execl("/home/jo-pc/Acquisition","Acquisition",temps_integration,NULL);
    
        //lecture du tube :
        double tmp2=0;
        cout << "essai3" <<endl;
        int fd2;
        FILE *fp2;
        cout << "essai4" <<endl;
        char *nomfich2="/home/jo-pc/Bureau/test2.txt", chaine2[50];
        cout << "essai5" <<endl;
        fd2 = open(nomfich2, O_RDONLY); /* ouverture du tube */
        cout << "essai6" <<endl;
        fp2=fdopen(fd2, "r"); /* ouverture du flot */
        cout << "essai7" <<endl;
        fscanf(fp2, "%s", chaine2); /* lecture dans le flot */
        cout << "essai8" <<endl;
        //tmp2 = strtod (chaine2,NULL);
        cout << "essai9" <<endl;
        cout << chaine2 << endl;
        cout << "essai10" <<endl;
        //printf("%lf\n",tmp2); /* affichage */
        unlink(nomfich2); /* fermeture du flot */
        cout << "essai11" <<endl;
    
        }

    Quelques warnings :

    mainwindow.cpp:86: avertissement : deprecated conversion from string constant to 'char*' [-Wwrite-strings]
             char *nomfich2="/home/jo-pc/Bureau/test2.txt", chaine2[50];
    ```                 ^
    
    Je compile avec g++ 64 bits sous QtCreator.
    
    Voila voila
    
    Pour le moment le programme se termine "subitement". Le programme s’arrête à l'affichage d'essai 7. Il ne passe pas cette ligne :     fscanf(fp2, "%s", chaine2); /* lecture dans le flot */
  • [^] # Re: lui donner à manger

    Posté par  . En réponse au message Création d'un makefile pour cross-compilation. Évalué à 1.

    Tu as raison oui, c'est ce que j'ai fait par la suite.

    Bonne journée à toi

  • [^] # Re: Module noyau

    Posté par  . En réponse au message Création d'un makefile pour cross-compilation. Évalué à 1.

    Merci pour la documentation, je note ton site internet pour regarder ça.

    Bonne journée à toi

  • [^] # Re: sudo ?

    Posté par  . En réponse au message Création d'un makefile pour cross-compilation. Évalué à 1.

    C'est plus par "habitude" pour le sudo car parfois quelques commandes ne s'exécutent pas autrement qu'avec les droits de l'administrateur.

    Le module nécessaire était présent mais il fallait en fait changer deux paquets de ligne de code pour que mon adaptateur soit reconnu et pour enlever une erreur.

    Merci pour ta précision pour lsusb.

    J'ai réussi à faire fonctionner le driver mais en règle général tout se compile avec des makefile car on a trop de dépendance entre les fichiers. Desfois ça peut être utile de savoir comment créer un makefile.

    Bonne journée à toi et merci

  • [^] # Re: kernel plus recent

    Posté par  . En réponse au message Carte Linux Embedded Elektor . Évalué à 1.

    include linux/version.h
    //include linux/config.h
    ifdef CONFIG_USB_DEBUG
    define DEBUG
    endif
    include linux/module.h
    include linux/kmod.h
    include linux/sched.h
    include linux/init.h
    include linux/netdevice.h
    include linux/etherdevice.h
    include linux/ethtool.h
    include linux/workqueue.h
    include linux/mii.h
    include linux/usb.h
    include linux/crc32.h

  • [^] # Re: kernel plus recent

    Posté par  . En réponse au message Carte Linux Embedded Elektor . Évalué à 1.

    J'essai de faire la cross compilation d'un driver que j'ai trouvé et qui devrait je pense bien marcher.

    Lorsque j'essai de faire une cross-compilation du driver, il me demande les .h nécessaire !!!

    jo@008:~/Bureau/embedded/projet_elektor/AX88772B_772A_760_772_178_LINUX_Driver_v4.4.1_Source$ sudo arm-linux-gnueabi-gcc -o asix asix.c
    asix.c:29:26: erreur fatale: linux/module.h : Aucun fichier ou dossier de ce type
    compilation terminée.
    jo@008:~/Bureau/embedded/projet_elektor/AX88772B_772A_760_772_178_LINUX_Driver_v4.4.1_Source$

    Je pense prendre ceux du noyau linux embarqué mais je ne sais pas ou les prendre

  • [^] # Re: kernel plus recent

    Posté par  . En réponse au message Carte Linux Embedded Elektor . Évalué à 1.

    Le problème c'est que j'ai juste fait une commande :

    make zImage -> /driver/net/usb/asix.c créé

    make modules -> /drover/net/usb/asix.ko créé

    Autrement je ne sais rien de plus. Juste qu'ils utilisent une chaine d'outils armv5-qte-5.0 à l'aide de ce script :

    P1=/opt/eldk-5.0/armv5te/sysroots/i686-oesdk-linux/usr/bin/armv5te-linux-gnueabi/
    P2=/opt/eldk-5.0/armv5te/sysroots/i686-oesdk-linux/bin/armv5te-linux-gnueabi/

    export ARCH=arm
    export CROSS_COMPILE=arm-linux-gnueabi-
    export PATH=$P1:$P2:$PATH

  • [^] # Re: Pas de mélange

    Posté par  . En réponse au message Carte Linux Embedded Elektor . Évalué à 1.

    Oui tu as raison, j'aimerais compiler le driver fourni par le constructeur en cross compilation pour ma carte linux elektor mais je ne sais pas trop comment m'y prendre et quelles étapes lancer.

  • [^] # Re: kernel plus recent

    Posté par  . En réponse au message Carte Linux Embedded Elektor . Évalué à 1.

    En fait j'utilise le noyau qu'ils ont donné pour le projet pour le moment. J'ai trouvé un driver mais il faudrait que j'arrive effectuer une cross compilation avec pour ma carte linux elektor.

    Malheureusement je ne sais pas trop comment procéder.