Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/04/2024, à 11:45

ChP

usb.h manquant à la complilation

Bonjour à toutes et à tous,,

Je cherche à compiler le programme "fowsr" qui permet de lire une station météo.

j'ai lu que pour ce faire, il faut se placer dans le répertoire du programme et lancer "make".

Ce faisant, j'ai un message d'erreur me disant que le fichier usb.h est absent.

Lors d'autres manip de programmation, j'avais trouvé ce fichier. Je l'ai alors copié dans mon répertoire "fowsr" et j'ai relancé "make" ...  qui m'a donné la même erreur !!

make
compiling for all others
gcc  -o fowsr fowsr.c -lm -lusb -g
fowsr.c:57:10: fatal error: usb.h: Aucun fichier ou dossier de ce nom
   57 | #include <usb.h>
      |          ^~~~~~~
compilation terminated.
make: *** [Makefile:15 : all] Erreur 1

Par ailleurs, dans le "README" de ce programme, il est dit :

Dependencies:
    libusb (http://libusb.sf.net)

Mais dans ce dossier, il n'y a aucun fichier usb.h.

Où est le problème ?

Cordialement.

Pierre.

Hors ligne

#2 Le 02/04/2024, à 16:57

gl38

Re : usb.h manquant à la complilation

Bonjour,
Tu pourrais regarder cette page
Il te manque un paquet du genre libusb-dev.
Les paquet en -dev donnent les fichiers indispensables pour les compilations.
Cordialement,
Guy

Hors ligne

#3 Le 02/04/2024, à 18:37

ChP

Re : usb.h manquant à la complilation

Merci gl38 pour ce lien.

J'ai appliqué cette commande :

sudo apt-get install libusb-dev

et j'ai obtenu tous ces warnings :

chp@PC-64:~/fowsr/fowsr.src$ make
compiling for all others
gcc  -o fowsr fowsr.c -lm -lusb -g
fowsr.c: In function ‘print_bytes’:
fowsr.c:119:27: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
  119 |         printf("%08X | ", (int)address); //Print the address we are pulling from
      |                           ^
fowsr.c:131:63: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
  131 |                       if (length > 0) { printf("\n%08X | ", (int)address); }
      |                                                             ^

fowsr.c: In function ‘CWF_Write’:
fowsr.c:861:71: warning: ‘%s’ directive writing up to 999 bytes into a region of size between 976 and 997 [-Wformat-overflow=]
  861 |                               sprintf(s1+strlen(s1), " %s=\"%s\"", ws_format[j].name, s2);
      |                                                             ^~                        ~~

fowsr.c:861:41: note: ‘sprintf’ output between 5 and 1025 bytes into a destination of size 1000
  861 |                                         sprintf(s1+strlen(s1), " %s=\"%s\"", ws_format[j].name, s2);
      |                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fowsr.c:851:69: warning: ‘%s’ directive writing up to 999 bytes into a region of size between 977 and 998 [-Wformat-overflow=]
  851 |                                 sprintf(s1+strlen(s1), "&%s=%s", wug_format[j].name, s2);
      |                                                             ^~                       ~~

fowsr.c:851:41: note: ‘sprintf’ output between 3 and 1023 bytes into a destination of size 1000
  851 |                                         sprintf(s1+strlen(s1), "&%s=%s", wug_format[j].name, s2);
      |                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fowsr.c:831:69: warning: ‘%s’ directive writing up to 999 bytes into a region of size between 977 and 998 [-Wformat-overflow=]
  831 |                                 sprintf(s1+strlen(s1), "&%s=%s", pws_format[j].name, s2);
      |                                                             ^~                       ~~

fowsr.c:831:41: note: ‘sprintf’ output between 3 and 1023 bytes into a destination of size 1000
  831 |                                         sprintf(s1+strlen(s1), "&%s=%s", pws_format[j].name, s2);
      |                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fowsr.c:811:68: warning: ‘sprintf’ may write a terminating nul past the end of the destination [-Wformat-overflow=]
  811 |                                      sprintf(s1+strlen(s1), ",%s", s2);
      |                                                                 ^

fowsr.c:811:41: note: ‘sprintf’ output between 2 and 1001 bytes into a destination of size 1000
  811 |                                         sprintf(s1+strlen(s1), ",%s", s2);
      |                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fowsr.c:800:68: warning: ‘sprintf’ may write a terminating nul past the end of the destination [-Wformat-overflow=]
  800 |                                      sprintf(s1+strlen(s1), " %s", s2);
      |                                                                 ^

fowsr.c:800:41: note: ‘sprintf’ output between 2 and 1001 bytes into a destination of size 1000
  800 |                                         sprintf(s1+strlen(s1), " %s", s2);
      |                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fowsr.c:783:68: warning: ‘%s’ directive writing up to 999 bytes into a region of size between 978 and 999 [-Wformat-overflow=]
  783 |                                  sprintf(s1+strlen(s1), "%s %s\n", ws3600_format[j].name, s2);
      |                                                             ^~                            ~~

fowsr.c:783:41: note: ‘sprintf’ output between 3 and 1023 bytes into a destination of size 1000
  783 |                                         sprintf(s1+strlen(s1), "%s %s\n", ws3600_format[j].name, s2);
      |                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Néanmoins, j'ai obtenu un fichier "fowsr". Mais quand je le lance (je clique ou double clique dessus), rien ne se passe. J'ai vérifié que dans les permissions, il était exécutable.

Si je le lance dans le terminal en faisant ./fowsr -h, j'obtiens les options de lancement, mais, utilisant ces options, apparemment, le programme ne trouve pas ma station météo. Par exemple :

chp@PC-64:~/fowsr/fowsr.src$ ./fowsr -fx
usb_set_debug: Setting debugging level to 1 (on)
usb_os_find_devices: couldn't get connect info
skipping descriptor 0x30
usb_os_find_devices: couldn't get connect info
usb_os_find_devices: couldn't get connect info
usb_os_find_devices: couldn't get connect info
skipping descriptor 0x30
usb_os_find_devices: couldn't get connect info
usb_os_find_devices: couldn't get connect info
usb_os_find_devices: couldn't get connect info
usb_os_find_devices: couldn't get connect info
skipping descriptor 0x30
usb_os_find_devices: couldn't get connect info
usb_os_find_devices: couldn't get connect info
skipping descriptor 0xB
skipping descriptor 0x24
usb_os_find_devices: couldn't get connect info
claim failed with error -1
usb_control_msg failed (-1) whithin CUSB_read_block(0000,...)
CWS_Read: wrong current_pos=0x0000

Y a-t-il une commande permettant de voir sur quel port elle est connectée ?

Cordialement.

Pierre.

Hors ligne

#4 Le 03/04/2024, à 14:56

gl38

Re : usb.h manquant à la complilation

Il faudrait voir de quand datent les fichiers que tu as téléchargés. S'ils sont trop vieux, il se peut que la version de libusb ne soit pas compatible.
Il faut aussi voir si le système voit ta station avec la commande lsusb par exemple.
Cordialement,
Guy

Hors ligne

#5 Le 03/04/2024, à 18:38

ChP

Re : usb.h manquant à la complilation

Apparemment, le système voit bien ma station :

Bus 003 Device 002: ID 1941:8021 Dream Link WH1080 Weather Station / USB Missile Launcher

Cela correspond bien aux données du README de l'application :

Product USB vendor details Vendor 1941, ID 8021

mais qu'est-ce que c'est que :

USB Missile Launcher

Cordialement.

Pierre.

Hors ligne

#6 Le 05/04/2024, à 14:27

gl38

Re : usb.h manquant à la complilation

Je n'ai pas de station météo, donc je ne peux pas essayer !
Par contre, en te baladant dans le dossier /dev/bus/usb tu devrais arriver à l'endroit qui correspond à ta station, et voir quels sont ses droits, quelque chose du genre

crw-rw-r-- 1 root root 189, 0 avril  5 07:01 001

où on voit que root a le droit de lire et d'écrire, par contre le commun des mortels ne peut que lire...
Cordialement,
Guy

Hors ligne

#7 Le 05/04/2024, à 15:18

inbox

Re : usb.h manquant à la complilation

gl38 a écrit :

Il faudrait voir de quand datent les fichiers que tu as téléchargés. S'ils sont trop vieux, il se peut que la version de libusb ne soit pas compatible.
Il faut aussi voir si le système voit ta station avec la commande lsusb par exemple.
Cordialement,
Guy

Salut,

Les sources viennent probablement d'ici et datent de 10 ans !!!

A+


Un problème résolu ? Indiquez le en modifiant le titre du sujet.

Hors ligne

#8 Le 06/04/2024, à 20:50

ChP

Re : usb.h manquant à la complilation

@ gl38 : Avec la commande "lsusb", j'obtiens :

Bus 003 Device 002: ID 1941:8021 Dream Link WH1080 Weather Station / USB Missile Launcher

Donc, a priori, ma station est reconnue sur le bus N° 3 et le device N° 2.

En allant dans le répertoire  /dev/bus/usb, je vois un répertoire 003 contenant 3 fichiers qui font chacun à 0 octet (!!!) et dont les droits sont lecture et écriture pour les root et son groupe et lecture seule pour les autres.

Par ailleurs, je suis toujours logué en tant qu'administrateur et même si je fais :

sudo ./fowsr -d

je n'obtiens pas plus de résultat (toutes les valeurs à zéro).

@ inbox : les sources viennent bien d'où tu le mentionnes et sont vieilles. Mais comment savoir si la version de libusb n'est plus compatible ?

Cordialement.

Pierre.

Hors ligne

#9 Le 06/04/2024, à 21:12

inbox

Re : usb.h manquant à la complilation

10 ans, c'est bien trop ancien.

Je ne m'y connais pas en gestion de station météo, mais , en cherchant, j'ai trouvé ceci. Cela semble une bonne piste.

Dernière modification par inbox (Le 08/04/2024, à 15:29)


Un problème résolu ? Indiquez le en modifiant le titre du sujet.

Hors ligne

#10 Le 08/04/2024, à 10:40

ChP

Re : usb.h manquant à la complilation

Merci inbox pour ces liens.

J'ai téléchargé WeeWX, je l'ai installé et lancé avec cette commande :

/var/www/html/weewx/index.html

Mais il m'est dit que le fichier est introuvable. Pourtant, il existe mais porte un petit cadenas.

Maintenant, dans Firefox, si j'utilise le menu : Fichier / Ouvrir un fichier et que je cherche le fichier indiqué ci-dessus, ça fonctionne, le chemin indiqué est :

file:///run/user/1000/4469a3a8/index.html

Comment faire pour que çà fonctionne avec le lien donné ?

Par ailleurs dans ce même répertoire existe plusieurs fichiers avec des cadenas. Faut-il les décadenasser et si oui, comment fait-on ? est-ce la commande "chown" ?

Cordialement.

Pierre.

Hors ligne

#11 Le 08/04/2024, à 15:33

inbox

Re : usb.h manquant à la complilation

As-tu suivi la documentation spécifique aux système Debian ? A partir du paragraphe "Configure APT".
As-tu vérifié si ton modèle de station est dans la liste des matériels reconnus ?

Le cadenas ne gênent pas pour le lancement.

Dernière modification par inbox (Le 08/04/2024, à 15:35)


Un problème résolu ? Indiquez le en modifiant le titre du sujet.

Hors ligne

#12 Le 08/04/2024, à 17:10

ChP

Re : usb.h manquant à la complilation

inbox a écrit :

As-tu suivi la documentation spécifique aux système Debian ? A partir du paragraphe "Configure APT". ...

J'ai suivi pas à pas ce qui est indiqué dans ce document.

inbox a écrit :

As-tu vérifié si ton modèle de station est dans la liste des matériels reconnus ? ...

Oui, ma station (WH1081) fait partie des matériels reconnus

inbox a écrit :

Le cadenas ne gênent pas pour le lancement.

Ben je ne sais pas ce qui gêne alors.

Cordialement.

Pierre.

Hors ligne

#13 Le 08/04/2024, à 21:45

iznobe

Re : usb.h manquant à la complilation

Bonsoir , je pense que lorsque tu lis le fichier " /var/www/html/weewx/index.html " , ca collecte les données de ta station meteo , qui sont ensuite stockées dans d ' autres fichiers .
Afin d' eviter un formulaire ( ca serait bete de remplir les cases toi meme tongue ) , le gars qui a codé fait appel a ses fichiers avec des requetes qui demande de lire les données des fichiers qui ont collectées les données de ta station meteo .
c ' est donc normal que suite a la lecture et l' affichage des données collectées , l' adresse ait changée ( j ' ai simplifier et vulgariser le principe de fonctionnement et je ne sais absolument pas du tout comment ca a été codé ... ) , ca ne veut pas dire que ca ne fonctionne pas ,bien au contraire .
de plus , je pense qu ' il doit y avoir un rafraichissement automatique de la page , si tu laisses cette page ouverte disons 1 heure , tu verras probablement que l ' adresse dans la barre de ton navigateur a changé .
et les données affichées sur la page aussi .

Dernière modification par iznobe (Le 08/04/2024, à 21:47)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne