Plugin RfPlayer

Discussions sur le développement de plugins
jyvern
Messages : 11
Enregistré le : 02 février 2018, 17:47

Plugin RfPlayer

Message par jyvern »

Je souhaite travailler sur le plugin RfPlayer et plus particulièrement sur la prise en charge des capteurs Visonic. En effet, ils sont bien affichés et référencés mais, à priori, leur état n'est pas géré.
Je vais développer sur Ubuntu et j'ai déjà un problème avec l'exécutable compilé depuis les sources. La connection au plugin échoue sur la tentative : m_boostSerialPort.set_option(m_flowControl)
En la commentant, cela fonctionne. Pourtant, dans la version compilée qui est fournie sur le site, je n'ai pas de problèmes !

Pour revenir sur la gestion des infos d'état des capteurs visonic, par où faut-il que je commence ?

Cdt
Jean-Yves
Avatar du membre
sgallou
Messages : 128
Enregistré le : 25 avril 2017, 09:56

Re: Plugin RfPlayer

Message par sgallou »

Bonjour,

En lisant votre message, une première question me vient à l'esprit :quelle version de boost utilisez vous ?
Quelle est l'erreur exactement ?
De mémoire, le Rfplayer a une connexion qui nécessite le contrôle de flux. Je crains qu'en commentant cette ligne, vous n'ayez des problèmes lors de gros échanges sur la liaison série (mise à jour du firmware par exemple).

Sinon, quelles versions utilisez vous de boost, gcc et cmake ?

Sébastien
jyvern
Messages : 11
Enregistré le : 02 février 2018, 17:47

Re: Plugin RfPlayer

Message par jyvern »

Bonjour,

Voici les infos :
- boost : 1.64.0 (c'est le fichier proposé en téléchargement sur le wiki)
- gcc version 7.2.0 (Ubuntu 7.2.0-8ubuntu3)
- cmake version 3.9.1

Voici les traces et le message :
16:52:05 : mainThread : [Debug] : Open /dev/ttyUSB0...
16:52:05 : mainThread : [Debug] : set_option(m_baudrate)
16:52:05 : mainThread : [Debug] : set_option(m_parity)
16:52:05 : mainThread : [Debug] : set_option(m_characterSize)
16:52:05 : mainThread : [Debug] : set_option(m_stop_bits)
16:52:05 : mainThread : [Debug] : set_option(m_flowControl)
16:52:05 : mainThread : [Error] : The RfPlayer plugin fails. exception : set_option: Operation not supported
16:52:05 : mainThread : [Error] : RfPlayer has stopped itself.

Jean-Yves
Avatar du membre
sgallou
Messages : 128
Enregistré le : 25 avril 2017, 09:56

Re: Plugin RfPlayer

Message par sgallou »

Bonsoir, d'après ce lien, il semblerait que votre port série ne supporte pas le contrôle de flux (ou que boost ne sache pas l'utiliser).
Comment est connecté le Rfplayer ? Directement sur la machine Ubuntu ou à travers une VM ?
Avez-vous moyen d'essayer avec un autre port (physique ou virtuel) ?

Sébastien
jyvern
Messages : 11
Enregistré le : 02 février 2018, 17:47

Re: Plugin RfPlayer

Message par jyvern »

Le RfPlayer est connecté en direct sur un port physique. Ce qui m'interpelle, c'est que je n'ai pas eu de soucis avec la version compilée téléchargeable.

Je profite de cet échange afin de sovoir comment activer les traces dans le plugin. Je vois bien le code dans le fichier BinaryFrame.cpp mais je n'ai pas encore trouvé comment l'activé.

Jean-Yves
Avatar du membre
sgallou
Messages : 128
Enregistré le : 25 avril 2017, 09:56

Re: Plugin RfPlayer

Message par sgallou »

Bonjour,

Je crois que je viens de comprendre votre problème : vous avez un système trop récent avec une version de Boost trop ancienne. Il semblerait que, pour que Boost accepte le contrôle de flux matériel, votre système doive définir _BSD_SOURCE. Hors, cette constante semble dépréciée sur les Linux récents (cf ce lien, et celui-ci), qui doit être remplacée par _DEFAULT_SOURCE. Boost ne gère cette dernière constante qu'à partir de la version 1.66.
Je pense que vous devriez essayer avec cette version. Sachez cependant que cette version n'est pas supportée par la dernière version de CMake (Boost 1.66 est sortie après CMake 3.10.2). Il convient donc d'écraser le fichier FindBoost.CMake (je ne sais pas trop où il se trouve sous Linux) de CMake, avec la toute dernière version, disponible ici, et de relancer toute la génération de Yadoms.

Concernant les traces, elles sont activables pour l'ensemble de Yadoms (on ne peut les activer juste pour un plugin), et ça se passe dans yadoms.ini, fichier qui se trouve à la racine de l'installation de Yadoms (au même niveau que l'exécutable yadoms).
Vous y trouverez, dans la rubrique [server], une donnée logLevel, qui peut prendre les valeurs none, fatal, critical, error, warning, notice, information, debug, trace, trace étant la plus verbeuse. Après modification de yadoms.ini, il convient de redémarrer Yadoms pour prise en compte.

Sébastien
jyvern
Messages : 11
Enregistré le : 02 février 2018, 17:47

Re: Plugin RfPlayer

Message par jyvern »

Merci.
Je vais essayer tout cela ce soir et reviens vers vous.

Jean-Yves
jyvern
Messages : 11
Enregistré le : 02 février 2018, 17:47

Re: Plugin RfPlayer

Message par jyvern »

Pour la compilation, ce n'est pas encore ça :

Code : Tout sélectionner

[ 12%] Building CXX object shared/CMakeFiles/yadoms-shared.dir/linux/shared/Peripherals.cpp.o
cc1plus: warning: /home/jean-yves/Test/yadoms/projects/shared/cotire/yadoms-shared_CXX_prefix.hxx.gch: created and used with different settings of -fpie
/home/jean-yves/Test/yadoms/sources/shared/linux/shared/Peripherals.cpp: In static member function ‘static boost::system::error_code shared::CPeripherals::flushSerialPort(boost::asio::serial_port&)’:
/home/jean-yves/Test/yadoms/sources/shared/linux/shared/Peripherals.cpp:50:24: error: ‘class boost::asio::serial_port’ has no member named ‘native’
    return tcflush(port.native(), TCIOFLUSH) ?
                        ^~~~~~
shared/CMakeFiles/yadoms-shared.dir/build.make:2677 : la recette pour la cible « shared/CMakeFiles/yadoms-shared.dir/linux/shared/Peripherals.cpp.o » a échouée
make[2]: *** [shared/CMakeFiles/yadoms-shared.dir/linux/shared/Peripherals.cpp.o] Erreur 1
CMakeFiles/Makefile2:304 : la recette pour la cible « shared/CMakeFiles/yadoms-shared.dir/all » a échouée
make[1]: *** [shared/CMakeFiles/yadoms-shared.dir/all] Erreur 2
Makefile:151 : la recette pour la cible « all » a échouée
make: *** [all] Erreur 2
Ceci dit, ce n'et pas bloquant. Je vais m'attacher à explorer le plugin et reviendrai la dessus plus tard.
Avatar du membre
sgallou
Messages : 128
Enregistré le : 25 avril 2017, 09:56

Re: Plugin RfPlayer

Message par sgallou »

Pouvez vous essayer de remplacer "native" par "native_handle" ?

Probablement une évolution de Boost. Je vais chercher...

Sébastien
Avatar du membre
sgallou
Messages : 128
Enregistré le : 25 avril 2017, 09:56

Re: Plugin RfPlayer

Message par sgallou »

Effectivement, "native" est déclaré comme déprécié dans le header Boost, à remplacer par "native_handle".
Je vais le corriger de suite.

Sébastien
Répondre