If you are developing with Microsoft Visual Studio, you may use any of these interface methods.
However, if you are developing with any other IDE (e.g., Borland C++ Builder), you may only use the C
and COM interfaces. This is because there is no standard for how C++ name mangling is performed, and
the OmniDriver C++ interface was developed using Microsoft Visual Studio. Using the C++ interface
with an IDE other than Visual Studio results in many "undefined symbol" errors.
Peut être qu'on peut passer par du C sous le compilateur C++ de Qt qui est une surcouche de C++.
Si j'utilise le code C, je n'utiliserais pas la notion d'objet dans ce cas la.
Je retournerais juste les deux tableaux de double.
C'est ca aussi que j'appréhende un peu
Je veux bien faire ça mais pour la suite j'aimerais mettre mon code dans un système embarqué. SeaBreeze est apparemment fait pour ça. Et vu que SeaBreeze fonctionne aussi pour créer mon logiciel, je me dis que ça pourrais être bien de m'en servir pour le logiciel et pour le système embarqué.
je suis bloqué pour faire du multithread avec mon logiciel d'ailleurs!
Je voulais dire par la que je suis entrain de développer la communication un thread pour ça et un pour la gestion de l'interface graphique.
tu utilises donc ton propre code pour dialoguer avec l'appareil
Non, j'utilise les fonctions C++ de SeaBreeze pour dialoguer avec l'appareil.
si tu utilises un logiciel fournit par le fournisseur oceanoptics,
tu as aussi le "bug" sur l "USB400", ou bien tu as ces erreurs de données uniquement avec ton logiciel ?
Si j'utilise un logiciel de chez eux on aurait pas ce problème car ils doivent utiliser Omnidriver avec Mcirosoft Visual Basic et Omnidriver n'est compatible uniquement avec le compilateur C++ MSVC. J'utilise SeaBreeze pour développer mon logiciel sous QtCreator.
L'erreur, il n'y en a pas. Enfin, je sais juste observer que les valeurs que je récupère ne sont pas les bonnes. Après je n'ai pas regardé plus loins encore à ce niveau la.
En ce moment je suis bloqué pour faire du multithread avec mon logiciel d'ailleurs! Mais ça c'est une autre histoire
En fait je lance le protocole d'acquisition classique pour récupérer deux tableaux.
Un tableau concernant les nanomètres
Un tableau concernant les intensités
Tous deux de taille 3648 pour le matériel USB4000
Lorsque je fait un printf du tableau de nanomètre, j'obtiens des valeurs incompréhensible! Mon professeur m'a dit que c'était peut être du à une incompatibilité avec le driver USB sous Linux (ou alors vstmod). Je ne sais pas …
Je pensais peut être qu'avec la description suivante, que je puisse utiliser la fonction udev_monitor_filter_add_match_tag(struct udev_monitor *udev_monitor, const char *tag);
TAG : Attach a tag to a device. This is used to filter events for users of libudev's monitor functionality, or to enumerate a group of tagged devices. The implementation can only work efficiently if only a few tags are attached to a device. It is only meant to be used in contexts with specific device filter requirements, and not as a general-purpose flag. Excessive use might result in inefficient event handling.
Par contre, j'aurais dit comme ceci la syntaxe mais je ne suis pas sur :
Je connais déjà le subsystem et le devtype de mon appareil grâce à un programme, je cherche plutôt à mettre un TAG ou alors créer un groupe dans le .rules afin de noter plusieurs périphériques particuliers dont j'aimerais noter les caractéristiques dans mon interface.
Pour le TAG j'ai :
udev_monitor_filter_add_match_tag (struct udev_monitor *udev_monitor, const char *tag);
Pour Subsystem et Devtype j'ai :
udev_monitor_filter_add_match_subsystem_devtype (struct udev_monitor *udev_monitor, const char *subsystem, const char *devtype);
Avec d'autres paramètres je ne peux rien faire. Comme ajouter un groupe je ne sais pas si ça va changer Devtype par exemple…
Problème : la lib qui récupère les infos de mon matériel n'est pas compilable en C++
Solution :
-soit faire un programme pour la gestion de l'USB sous Linux
-soit utiliser une bibliothèque QtCreator pour l'USB, peut être QSerialPort pour gérer l'USB pour toute les platforme et appeler ensuite le programme qui va interroger le matériel.
L'inconvéniant est que sous QtCreator, je sais lancer un processus en parallèle (ou fils) et lire la sortie standard du processus fils avec l'entrée standard du processus père.
Maintenant, je veux bien lancer un script depuis le .rules avec la commande RUN+="…"
Le souci c'est que je ne sais pas comment créer un tube entre le processus lancé depuis le .rules et le processus père (interface.cpp)
Après une lecture du site d'ubuntu à propos de Udev et de la syntaxe des fichiers .rules, je pense qu'il suffi de surveiller avec un démon si un fichier se créé au chemin /dev/truc et après lancer les commandes à partir d'un fichier.
Je ne sais pas si surveiller en permanence si un fichier existe peut poser problème, ou s'il se créé !
[^] # Re: tes infos datent de 2010...
Posté par electro575 . En réponse au message Projet : conflit avec vstmod. Évalué à 1.
Pour Omnidriver, voici ce qui est dit :
If you are developing with Microsoft Visual Studio, you may use any of these interface methods.
However, if you are developing with any other IDE (e.g., Borland C++ Builder), you may only use the C
and COM interfaces. This is because there is no standard for how C++ name mangling is performed, and
the OmniDriver C++ interface was developed using Microsoft Visual Studio. Using the C++ interface
with an IDE other than Visual Studio results in many "undefined symbol" errors.
Peut être qu'on peut passer par du C sous le compilateur C++ de Qt qui est une surcouche de C++.
[^] # Re: tes infos datent de 2010...
Posté par electro575 . En réponse au message Projet : conflit avec vstmod. Évalué à 1.
Si j'utilise le code C, je n'utiliserais pas la notion d'objet dans ce cas la.
Je retournerais juste les deux tableaux de double.
C'est ca aussi que j'appréhende un peu
[^] # Re: tes infos datent de 2010...
Posté par electro575 . En réponse au message Projet : conflit avec vstmod. Évalué à 1.
Je veux bien faire ça mais pour la suite j'aimerais mettre mon code dans un système embarqué. SeaBreeze est apparemment fait pour ça. Et vu que SeaBreeze fonctionne aussi pour créer mon logiciel, je me dis que ça pourrais être bien de m'en servir pour le logiciel et pour le système embarqué.
[^] # Re: tes infos datent de 2010...
Posté par electro575 . En réponse au message Projet : conflit avec vstmod. Évalué à 1.
Il est dispo seulement pour la compilation gcc mais non avec g++ sous QtCreator.
J'ai déjà testé hors QtCreator avec Omnidriver. Ca fonctionne
[^] # Re: tes infos datent de 2010...
Posté par electro575 . En réponse au message Projet : conflit avec vstmod. Évalué à 1.
Je voulais dire par la que je suis entrain de développer la communication un thread pour ça et un pour la gestion de l'interface graphique.
Non, j'utilise les fonctions C++ de SeaBreeze pour dialoguer avec l'appareil.
Si j'utilise un logiciel de chez eux on aurait pas ce problème car ils doivent utiliser Omnidriver avec Mcirosoft Visual Basic et Omnidriver n'est compatible uniquement avec le compilateur C++ MSVC. J'utilise SeaBreeze pour développer mon logiciel sous QtCreator.
[^] # Re: tes infos datent de 2010...
Posté par electro575 . En réponse au message Projet : conflit avec vstmod. Évalué à 1.
Je vais tester les manips que tu me dis dès que j'ai du temps pour ça.
Le blacklister ne servirait à rien alors visiblement !
[^] # Re: tes infos datent de 2010...
Posté par electro575 . En réponse au message Projet : conflit avec vstmod. Évalué à 1.
Je l'ai compilé sur une machine 64 bits.
L'erreur, il n'y en a pas. Enfin, je sais juste observer que les valeurs que je récupère ne sont pas les bonnes. Après je n'ai pas regardé plus loins encore à ce niveau la.
En ce moment je suis bloqué pour faire du multithread avec mon logiciel d'ailleurs! Mais ça c'est une autre histoire
[^] # Re: tes infos datent de 2010...
Posté par electro575 . En réponse au message Projet : conflit avec vstmod. Évalué à 1.
Qu'entends-tu par protocole de test?
Tu parles de SeaBreeze?
J'ai pas très bien saisi ce que tu voulais dire!
Ce que je peux assurer c'est que SeaBreeze fonctionne avec un matériel mais pas avec l'USB4000 de leur gamme sous Linux.
[^] # Re: tes infos datent de 2010...
Posté par electro575 . En réponse au message Projet : conflit avec vstmod. Évalué à 1.
En fait je lance le protocole d'acquisition classique pour récupérer deux tableaux.
Un tableau concernant les nanomètres
Un tableau concernant les intensités
Tous deux de taille 3648 pour le matériel USB4000
Lorsque je fait un printf du tableau de nanomètre, j'obtiens des valeurs incompréhensible! Mon professeur m'a dit que c'était peut être du à une incompatibilité avec le driver USB sous Linux (ou alors vstmod). Je ne sais pas …
[^] # Re: tes infos datent de 2010...
Posté par electro575 . En réponse au message Projet : conflit avec vstmod. Évalué à 1.
Merci pour ta réponse. J'ai pris SeaBreeze sur ce lien la : SeaBreeze
Je n'ai pas pris le temps de regarder le support pour le moment
[^] # Re: réponse rapide
Posté par electro575 . En réponse au message Licence LGPL & GPL. Évalué à 1.
Merci beaucoup pour tes précisions. Bonne fin de journée à toi !
[^] # Re: au hasard du web
Posté par electro575 . En réponse au message Lister les périphériques USB plutôt que hidraw. Évalué à 1.
Je n'avais pas testé le code de la personne pour le premier lien. Il s'avère que son programme peut lister les périphériques USB.
A moi d'adapter le code à mon application.
Le deuxième lien m'a permit de faire tourner le démon usb.
Une personne m'a indiqué cette librairie pour la communication USB multiplatforme :
Libusb
[^] # Re: revoir l'enoncé et choisir ce qui va bien
Posté par electro575 . En réponse au message Communication entre deux processus pere-fils bloquante . Évalué à 1.
Merci à toi
[^] # Re: Un exemple simple pere/fils
Posté par electro575 . En réponse au message Communication entre deux processus pere-fils bloquante . Évalué à 1.
Merci à toi
[^] # Re: Doc d'udev
Posté par electro575 . En réponse au message Communication USB avec la lib udev. Évalué à 1.
Je pensais peut être qu'avec la description suivante, que je puisse utiliser la fonction udev_monitor_filter_add_match_tag(struct udev_monitor *udev_monitor, const char *tag);
TAG : Attach a tag to a device. This is used to filter events for users of libudev's monitor functionality, or to enumerate a group of tagged devices. The implementation can only work efficiently if only a few tags are attached to a device. It is only meant to be used in contexts with specific device filter requirements, and not as a general-purpose flag. Excessive use might result in inefficient event handling.
Par contre, j'aurais dit comme ceci la syntaxe mais je ne suis pas sur :
ATTRS{idVendor}=="", ATTRS{idProduct}=="", SYMLINK+="", TAG:="essai", MODE:=""
Liens :
LibUdev
Syntaxe_rules
[^] # Re: Doc d'udev
Posté par electro575 . En réponse au message Communication USB avec la lib udev. Évalué à 1.
Oui j'ai lu cette page mais pas entièrement.
L'outil udevadm est bien utile.
Je connais déjà le subsystem et le devtype de mon appareil grâce à un programme, je cherche plutôt à mettre un TAG ou alors créer un groupe dans le .rules afin de noter plusieurs périphériques particuliers dont j'aimerais noter les caractéristiques dans mon interface.
Pour le TAG j'ai :
udev_monitor_filter_add_match_tag (struct udev_monitor *udev_monitor, const char *tag);
Pour Subsystem et Devtype j'ai :
udev_monitor_filter_add_match_subsystem_devtype (struct udev_monitor *udev_monitor, const char *subsystem, const char *devtype);
Avec d'autres paramètres je ne peux rien faire. Comme ajouter un groupe je ne sais pas si ça va changer Devtype par exemple…
Voila le lien de la libudev : libudev
[^] # Re: Solution
Posté par electro575 . En réponse au message Créer un démon : surveiller la présence d'un périphérique USB. Évalué à 1.
Avec ce lien, je ne pense pas qu'il existe de bibliothèque Qt permettant la discussion par USB sur toutes les platformes.
Texte du lien
[^] # Re: Solution
Posté par electro575 . En réponse au message Créer un démon : surveiller la présence d'un périphérique USB. Évalué à 1.
Problème : la lib qui récupère les infos de mon matériel n'est pas compilable en C++
Solution :
-soit faire un programme pour la gestion de l'USB sous Linux
-soit utiliser une bibliothèque QtCreator pour l'USB, peut être QSerialPort pour gérer l'USB pour toute les platforme et appeler ensuite le programme qui va interroger le matériel.
La deuxième solution serait l'idéal.
[^] # Re: Solution
Posté par electro575 . En réponse au message Créer un démon : surveiller la présence d'un périphérique USB. Évalué à 1.
Ha ben j'ai pas penser directement passer par une lib Qt pour discuter depuis tous les OS en USB mais effectivement …
Je vais me diriger vers cette option multiplatforme.
[^] # Re: Solution
Posté par electro575 . En réponse au message Créer un démon : surveiller la présence d'un périphérique USB. Évalué à 2.
Un grand merci, je vous ferais un retour dès que ça fonctionne!
Bonne fin de semaine à vous tous
[^] # Re: Solution
Posté par electro575 . En réponse au message Créer un démon : surveiller la présence d'un périphérique USB. Évalué à 2.
Solution, connaitre le PID sous le processus lancé de l'interface.cpp !
Peut être que j'arriverai à faire quelque chose et encore c'est pas trop sur
[^] # Re: Solution
Posté par electro575 . En réponse au message Créer un démon : surveiller la présence d'un périphérique USB. Évalué à 2. Dernière modification le 18 avril 2015 à 21:14.
Je comprends ce qu'il veut faire sauf pour monusb.sh et la ligne de code suivante :
/bin/stty -F /dev/$1 57600
fichier /etc/udev/rules.d/70-monusb.rules :
fichier /bin/monusb.sh :
L'inconvéniant est que sous QtCreator, je sais lancer un processus en parallèle (ou fils) et lire la sortie standard du processus fils avec l'entrée standard du processus père.
Maintenant, je veux bien lancer un script depuis le .rules avec la commande RUN+="…"
Le souci c'est que je ne sais pas comment créer un tube entre le processus lancé depuis le .rules et le processus père (interface.cpp)
Désolé pour l'affichage … c'est du copie colle!
[^] # Re: Solution
Posté par electro575 . En réponse au message Créer un démon : surveiller la présence d'un périphérique USB. Évalué à 2.
Pour l'USB dumping, je ne connais pas le langage python mais peut être que je vais m'y mettre.
Je viens de le décompresser !
Des astuces pour compiler tout ça ? comment on se sert des fichiers pythons
# Solution
Posté par electro575 . En réponse au message Créer un démon : surveiller la présence d'un périphérique USB. Évalué à 2.
Après une lecture du site d'ubuntu à propos de Udev et de la syntaxe des fichiers .rules, je pense qu'il suffi de surveiller avec un démon si un fichier se créé au chemin /dev/truc et après lancer les commandes à partir d'un fichier.
Je ne sais pas si surveiller en permanence si un fichier existe peut poser problème, ou s'il se créé !
[^] # Re: USB Dumper
Posté par electro575 . En réponse au message Créer un démon : surveiller la présence d'un périphérique USB. Évalué à 2.
En te remerciant. Je vais regarder tout ça ce matin