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

Lazarus Pascal Discussion :

Échange via une liaison USB


Sujet :

Lazarus Pascal

  1. #21
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 969
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 969
    Points : 15 434
    Points
    15 434
    Par défaut
    Citation Envoyé par ChPr Voir le message
    Sous Ubuntu, je ne pense pas que le problème vienne de la pile USB car j'ai sans arrêt fait des aller/retour entre Windows et Ubuntu donc, reboot à chaque fois.
    OK.

    Citation Envoyé par ChPr Voir le message
    Ce que j'aimerais comprendre est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      UCS4Char            = type 0..$10ffff;
    afin de pouvoir donner une valeur à WS dans la fonction : THidDevice.Open
    Vu comment la fonction est écrite, on pourrait penser qu'elle peut supporter le passage d'une valeur vide, mais peut-être qu'elle n'aime pas ton '' et qu'il faudrait lui passer nil ou '0' ou que sais-je d'autre ?

    Sinon, encore de la lecture : https://github.com/libusb/hidapi
    HIDAPI has four back-ends:
    Windows (using hid.dll)
    Linux/hidraw (using the Kernel's hidraw driver)
    libusb (using libusb-1.0 - Linux/BSD/other UNIX-like systems)
    macOS (using IOHidManager)

    On Linux, either the hidraw or the libusb back-end can be used. There are tradeoffs, and the functionality supported is slightly different. Both are built by default. It is up to the application linking to hidapi to choose the backend at link time by linking to either libhidapi-libusb or libhidapi-hidraw.

    Note that you will need to install an udev rule file with your application for unprivileged users to be able to access HID devices with hidapi. Refer to the 69-hid.rules file in the udev directory for an example.

    Linux/hidraw (linux/hid.c):
    This back-end uses the hidraw interface in the Linux kernel, and supports both USB and Bluetooth HID devices. It requires kernel version at least 2.6.39 to build. In addition, it will only communicate with devices which have hidraw nodes associated with them. Keyboards, mice, and some other devices which are blacklisted from having hidraw nodes will not work. Fortunately, for nearly all the uses of hidraw, this is not a problem.

    Linux/FreeBSD/libusb (libusb/hid.c):
    This back-end uses libusb-1.0 to communicate directly to a USB device. This back-end will of course not work with Bluetooth devices.
    Et en plus, c'est un peu le bronx avec les forks... Lecture (jusqu'en bas) : https://github.com/signal11/hidapi/issues/373 (tout en bas j'ai vu passer pas mal de posts avec un problème similaire au tien, enfin, lu à la va-vite).

    Et un post intéressant à lire et utiliser pour tester sa config et ses périph's: https://unix.stackexchange.com/quest...-an-hid-device

    HS : pourquoi ne pas demander au vendeur de ta station météo ce qu'elle attend et ce qu'elle peut fournir, et comment ?

  2. #22
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 098
    Points : 1 061
    Points
    1 061
    Par défaut
    Citation Envoyé par Jipété Voir le message
    ...Vu comment la fonction est écrite, on pourrait penser qu'elle peut supporter le passage d'une valeur vide, mais peut-être qu'elle n'aime pas ton '' et qu'il faudrait lui passer nil ou '0' ou que sais-je d'autre ?
    ...
    Le "ton '' " n'est pas "mon '' " . C'est ce qui est écrit par défaut. et apparemment, ce terme est facultatif. Que je mette quoi que ce soit à la place ne donne rien.

    Citation Envoyé par Jipété Voir le message
    ... HS : pourquoi ne pas demander au vendeur de ta station météo ce qu'elle attend et ce qu'elle peut fournir, et comment ?
    Dans ce marché des stations météorologiques, beaucoup de stations se ressemblent et sont vendues par différents fournisseurs. Je ne pense pas qu'il soit aisé de trouver les infos que tu me demandes. Pour autant, j'ai deux applications : "EasyWeather" et "Cumulus" qui s'interfacent avec ma station et qui en affichent toutes les données. Chacune de ces applications utilise des " *USB*.dll " que je n'arrive pas à trouver sur la toile. Même si je les trouvais, je ne pense pas que ça résolve le problème.

    Par ailleurs, j'ai trouvé tout un tas d'informations sur le protocole d'échange de cette (ces ?) stations donnant des adresses et des formats de données. Ça pourra me servir si un jour j'arrive (??) à me connecter à cette station.

    J'ai aussi récupéré les sources d'un logiciel "CumulusMX" pouvant s'interconnecter à cette station et bien d'autres. Pour autant, il y a une petite centaine de fichier en C++ dont mes connaissances dans ce langage ne me permettent pas d'en tirer une substantifique moelle !

    Je n'abandonne pas l'idée de ma faire ma propre application (j'en avais faite une pour une station "La Crosse Technologie", mais elle dialoguait via un port série), mais pour l'instant, je ne sais pas quel bout de la pelote tirer ...

    Cordialement.

    Pierre.

  3. #23
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 969
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 969
    Points : 15 434
    Points
    15 434
    Par défaut
    Bonjour,

    Citation Envoyé par ChPr Voir le message
    Chacune de ces applications utilise des " *USB*.dll " que je n'arrive pas à trouver sur la toile. Même si je les trouvais, je ne pense pas que ça résolve le problème.
    Cherche-les dans ta machine.
    Ensuite, il me semble qu'il doit exister des outils pour examiner l'intérieur d'un fichier dll (qui remontera le nom des fonctions accessibles par exemple), j'en avais écrit un très basique en Delphi, en son temps, Mais pas sûr que ça soit bien utile, sauf si l'outil est capable de dire ce que la fonction attend comme paramètre(s) et type de.
    Ça permettrait d'être sûr qu'on lui envoie les bonnes données.
    Commercer par là https://www.nirsoft.net/.

    Et sinon, une question vraiment très bête mais sait-on jamais ? Lors des tests, la station est-elle bien détectée et reconnue par l'OS, genre lsusb avec les options qui vont bien et les autres outils dont le nom m'échappe ?
    Vérifier aussi le retour de dmesg | tail -10 (ou + ou -, c'est selon le nbre de lignes), pour être sûr de chez sûr ! À utiliser après connexion physique puis après lancement du prog, pour voir ce qui revient par ce canal.

    Ensuite, quand tout cela sera parfait, mettre un point d'arrêt sur le end de la procedure Open, exécuter et à l'arrêt, examiner la pile d'appel pour voir par où ça passe, avec le menu Voir / Fenêtres de débogage / Pile d'appel.

    Et tu nous dis...

  4. #24
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 098
    Points : 1 061
    Points
    1 061
    Par défaut
    Citation Envoyé par Jipété Voir le message
    ... Cherche-les dans ta machine. ...
    Elles y sont (dans le répertoire de chaque application) puisque je suis capable de les nommer.

    [/QUOTE]

    Avec l'application que j'ai jointe (HIDAPI), ma station est bien trouvée: vid = $1941 et pid = $8021. Elle l'est aussi avec l'application "USBDeview.exe" trouvée ici https://www.nirsoft.net/ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Port_#0007.Hub_#0001	USB Input Device	HID (Human Interface Device)	No	Yes	No	No			21/09/2023 14:59:39	21/09/2023 14:51:40	1941	8021	1.00		03	00	00		PC-64			7&221fee80&0	HidUsb	@input.inf,%HID.SvcDesc%;Microsoft HID Class Driver	hidusb.sys		(Standard system devices)		100 mA	1.10	USB Input Device	10.0.19041.3031	HID_Inst.NT	input.inf	USB\VID_1941&PID_8021\6&229efb56&0&7	Removable, SurpriseRemovalOK
    Par ailleurs, en fouillant dans le code de CumulusMX, j'ai trouvé les vid et pid de ma station : ce sont les mêmes que ceux trouvés par mon application : la station est bien détectée, mais donc impossible de m'y connecter pour l'instant.

    Dans l'application CumulusMX, la fonction "open" n'a recours qu'au vid et pid ; pas à un serialNumber comme dans la DLL hidapi.dll.

    J'ai essayé la force brute (bête et méchante) sous Window et Ubuntu en faisant une boucle sur 1000000 de valeurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
      SN: UniCodeString;
     
    begin
      Infos.Lines.Add('');
      Infos.Lines.Add(Format('Will now try to open device %0.4x:%0.4x', [DEMO_VID, DEMO_PID]));
      for i:= 0 to 1000000 do
      begin
        SN:= IntToStr(i);
        Device:= THidDevice.Open(DEMO_VID, DEMO_PID, SN);
        if not Assigned(Device) then begin
          Infos.Lines.Add(SN+' could not open device');
        end
        else
          Infos.Lines.Add('TROUVE');
      end;
    Ça n'a rien donné.

    Je continue à chercher ...

    Cordialement.

    Pierre.

  5. #25
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 969
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 969
    Points : 15 434
    Points
    15 434
    Par défaut
    J'ai retrouvé ça :
    Citation Envoyé par ChPr Voir le message
    Par ailleurs, j'avais trouvé de mon côté le lien vers " LongDirtyAnimAlf / FPC-USB-HID ". Là encore, sous Ubuntu, la démo se compile et s'exécute,
    Pourquoi n'as-tu pas continué avec ce projet ?
    Bon, OK, sous Windows ça ne veut pas, mais chaque chose en son temps, hein.

  6. #26
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 444
    Points : 5 864
    Points
    5 864
    Par défaut
    salut


    pour les format de message il faut que tu regarde dans les fichier WMR???
    et le WeatherStation class abstrait

  7. #27
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 095
    Points : 9 581
    Points
    9 581
    Par défaut
    Hello,
    driver en python ici
    Python port of Steve Cliffe's perl script that retrieves and logs the weather stats from a WH-1080/1081 weather station
    VENDOR = 0x1941
    PRODUCT = 0x8021
    WIND_DIRS = ['N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE', 'S', 'SSW',
    'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW']
    Ami calmant, J.P

  8. #28
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 098
    Points : 1 061
    Points
    1 061
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    Hello,
    driver en python ici
    Ami calmant, J.P
    Merci "jurassic pork" pour ces informations. Pour autant, si je prends "shane" ou "0666" pour serialNumber, cela ne fonctionne toujours pas.

    Apparemment, c'est ce fichu serialNumber qui bloque tout ???

    Cordialement.

    Pierre.

  9. #29
    Membre confirmé

    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Points : 482
    Points
    482
    Par défaut
    Bonjour,

    Je n'ai pas testé hidapi sous LInux. Sous Windows (64) voici mon code :

    Hidapi_bb.zip

    Le programme recherche non pas une souris Logitech, comme indiqué dans le commentaire, mais un tensiomètre Omron... qu'il ne va pas trouver puisqu'il n'est pas connecté.

    bb

  10. #30
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 098
    Points : 1 061
    Points
    1 061
    Par défaut
    Citation Envoyé par bb84000 Voir le message
    ...Je n'ai pas testé hidapi sous LInux. Sous Windows (64) ...
    Merci pour ce code qui m'a permis de revenir en arrière et de constater que je faisais une grosse erreur quand je disais que je n'obtenais pas de connexion sans serialNumber. En mettant '' comme valeur pour le serialNumber, il y a bien connexion (sous Windows et sous Ubuntu en mode sudo) sur ma station météo (VID = $1941 et PID = $8021). Le problème se trouve donc un peu plus loin sur le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          Num := Device.Read(Buffer, SizeOf(Buffer));
    Quand le programme passe sur cette instruction, il ne se passe rien et il reste bloqué sur cette ligne.

    Une idée de ce qui se passe ?

    Par ailleurs, les retours d'information dans un TMemo concernant les chaînes de caractères sont illisibles.

    Nom : TexteUnicode.jpg
Affichages : 132
Taille : 80,1 Ko

    avec des messages comme celui-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fntr.pas(90,67) Warning: Implicit string type conversion with potential data loss from "UnicodeString" to "AnsiString"
    Y a-t-il une fonction qui permette de ne pas avoir de perte d'information ?

    Cordialement.

    Pierre.

  11. #31
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 095
    Points : 9 581
    Points
    9 581
    Par défaut
    Hello,
    houla attention le format des données de ce périphérique n'est pas en chaîne mais du binaire. Il faut regarder la structure des blocs de données dans le driver python par exemple dont voici une partie :
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    ########### Read data
            # Get the first 32 Bytes of the fixed
            fixed_block = read_block(dev, 0)
     
            # Check that we have good data
            if (fixed_block[0] != 0x55):
                raise ValueError('Bad data returned')
     
            # Bytes 31 and 32 when combined create an unsigned short int
            # that tells us where to find the weather data we want
            curpos = struct.unpack('H', fixed_block[30:32])[0]
            current_block = read_block(dev, curpos)
     
            # Indoor information
            indoor_humidity = current_block[1]
            tlsb = current_block[2]
            tmsb = current_block[3] & 0x7f
            tsign = current_block[3] >> 7
            indoor_temperature = (tmsb * 256 + tlsb) * 0.1
            # Check if temperature is less than zero
            if tsign:
                indoor_temperature *= -1
     
            # Outdoor information
            outdoor_humidity = current_block[4]
            tlsb = current_block[5]
            tmsb = current_block[6] & 0x7f
            tsign = current_block[6] >> 7
            outdoor_temperature = (tmsb * 256 + tlsb) * 0.1
            # Check if temperature is less than zero
            if tsign:
                outdoor_temperature *= -1
     
            # Bytes 8 and 9 when combined create an unsigned short int
            # that we multiply by 0.1 to find the absolute pressure
            abs_pressure = struct.unpack('H', current_block[7:9])[0]*0.1
     
            wind = current_block[9]
            gust = current_block[10]
            wind_extra = current_block[11]
            wind_dir = current_block[12]

    un bloc fixe de 32 octets avec au début normalement 55 (en hexa) et à la fin de ce bloc l'endroit où se trouve les données.

    Ami calmant, J.P

  12. #32
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 098
    Points : 1 061
    Points
    1 061
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    Hello,
    houla attention le format des données de ce périphérique n'est pas en chaîne mais du binaire. Il faut regarder la structure des blocs de données dans le driver python par exemple dont voici une partie :

    un bloc fixe de 32 octets avec au début normalement 55 (en hexa) et à la fin de ce bloc l'endroit où se trouve les données.

    Ami calmant, J.P
    Mon code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    var
      Device: PHidDevice;
      I, J, Num: Integer;
      Buffer: array[0..63] of Byte;
     
    begin
      Memo1.Append(Format('Will now try to open device %0.4x:%0.4x', [DEMO_VID, DEMO_PID]));
      Memo1.Append('');
      Device := THidDevice.Open(DEMO_VID, DEMO_PID, '');
      if not Assigned(Device) then begin
        Memo1.Append('could not open device');
      end
      else begin
        Memo1.Append('device is open, now going to read data from it');
        Memo1.Append('Manufacturer: '+Device.GetManufacturerString);
        Memo1.Append('Product: '+Device.GetProductString);
        for I := 1 to 1000 do begin
          Num := Device.Read(Buffer, SizeOf(Buffer));
          for J := 0 to Num - 1 do begin
              Memo1.Append(Format('%0.2x ', [Buffer[J]]));
          end;
        end;
    Le buffer de la ligne 18 est bien en "Byte". Cette ligne 18 va en chercher 64. J'ai réduit cette quantité à 32, puis à 16, puis à1 : ça plante toujours !

    Comment établir un équivalence entre cette instruction et celle de la ligne 3 de ton code en Python ?

    Cordialement.

    Pierre.

  13. #33
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 095
    Points : 9 581
    Points
    9 581
    Par défaut
    Hello,
    que vaut Num en retour de lecture. Si il est égal à -1 c'est qu'il y a un problème dans la lecture.
    Ami calmant, J.P

  14. #34
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 098
    Points : 1 061
    Points
    1 061
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    Hello,
    que vaut Num en retour de lecture. Si il est égal à -1 c'est qu'il y a un problème dans la lecture.
    Ami calmant, J.P
    Le problème est qu'il n'y a pas de retour. Le programme se bloque sur cette instruction.

    j'ai changé d'instruction, j'ai mis celle avec le Time out :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          Num := Device.ReadTimeout(Buffer, SizeOf(Buffer), 5000);
    J'ai aussi diminué la taille du buffer, je l'ai ramené à 32.

    au retour des 5 secondes, Num vaut 0.


    Cordialement.

    Pierre.

  15. #35
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 095
    Points : 9 581
    Points
    9 581
    Par défaut
    Citation Envoyé par ChPr Voir le message
    Par ailleurs, j'avais trouvé de mon côté le lien vers " LongDirtyAnimAlf / FPC-USB-HID ". Là encore, sous Ubuntu, la démo se compile et s'exécute, mais sous Windows, je n'y suis pas arrivé.

    Tout d’abord, quand je charge le projet "FpcUsbHidConsole.lpi" Lazarus me répond qu'il n'y a pas de fichier source !
    c'est louche , je viens de charger l'ensemble du code ( Code -> download zip) et je n'ai pas de problème de compilation sous Lazarus 2.2.6 64 bits Windows 11. Le programme s'exécute.

  16. #36
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 098
    Points : 1 061
    Points
    1 061
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    c'est louche , je viens de charger l'ensemble du code ( Code -> download zip) et je n'ai pas de problème de compilation sous Lazarus 2.2.6 64 bits Windows 11. Le programme s'exécute.
    Pour me dire que tu n'as pas de problème, je suppose que, toi aussi, tu disposes de 'une station météo répondant au VID =6465 et PID 32801 comme celle que j'ai.

    L'application que tu me proposes n'est pas celle que j'utilise pour le moment. Celle que j'utilise est celle mentionnée en pièce jointe à mon post #17.

    Quand tu dis que le programme s'exécute, quels résultats obtiens-tu ?

    Cordialement.

    Pierre.

  17. #37
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 095
    Points : 9 581
    Points
    9 581
    Par défaut
    Citation Envoyé par ChPr Voir le message
    Pour me dire que tu n'as pas de problème, je suppose que, toi aussi, tu disposes de 'une station météo répondant au VID =6465 et PID 32801 comme celle que j'ai.

    L'application que tu me proposes n'est pas celle que j'utilise pour le moment. Celle que j'utilise est celle mentionnée en pièce jointe à mon post #17.

    Quand tu dis que le programme s'exécute, quels résultats obtiens-tu ?

    Cordialement.

    Pierre.
    Non je n'ai pas de station météo , c'est avec le projet de démo FpcUsbHidConsole que je n'ai pas de problème.
    Voilà ce que j'obtiens quand j'exécute le programme (ce qui est trouvé correspond aux seuls périphériques USB HID que j'ai sur mon PC :
    HID device index: 955264
    INFO:
    Devices change !!
    New device that has not been checked out.
    Device arrival. VID: 1739. PID: 32551.
    I1:
    I2:
    I3:
    I4:
    Input length: 4
    Output length: 0
    S/N of board #1 : 1739_32551_1


    HID device index: 955264
    INFO:
    New device that has not been checked out.
    Device arrival. VID: 1739. PID: 32551.
    I1:
    I2:
    I3:
    I4:
    Input length: 30
    Output length: 0
    S/N of board #2 : 1739_32551_2


    HID device index: 955264
    INFO:
    New device that has not been checked out.
    Device arrival. VID: 1739. PID: 32551.
    I1:
    I2:
    I3:
    I4:
    Input length: 0
    Output length: 0
    S/N of board #3 : 1739_32551_3


    HID device index: 955264
    INFO:
    New device that has not been checked out. I4:
    Input length: 30
    Output length: 0
    S/N of board #2 : 1739_32551_2


    HID device index: 955264
    INFO:
    New device that has not been checked out.
    Device arrival. VID: 1739. PID: 32551.
    I1:

  18. #38
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 098
    Points : 1 061
    Points
    1 061
    Par défaut
    Pour ma part, je travaille sous Windows 10 et Lazarus 2.0.6.

    Dans ce lien, il est proposé deux applications :

    • FpsUsbHid.lpi pour l'environnement Linux
    • FpsUsbHidConsole.lpi pour l'environnement Windows


    Sous Linux (Ubuntu), l'application fonctionne

    Sous Windows, elle ne se compile pas et j'ai le message : "Le projet n'a pas de fichier code source principal".

    J'ai reconstruit une application Console en prenant le fichier "FpsUsbHidConsole.lpr" que j'ai appelé "FpsUsbHidConsole.pas". cette application se compile et s'exécute avec le résutat suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    INFO:
    Devices change !!
    New device that has not been checked out.
    Device arrival. VID: 6465. PID: 32801.
    I1: Chicony
    I2: USB Keyboard
    I3:
    I4:
    Input length: 9
    Output length: 9
    S/N of board #1 : 6465_32801_1
     
    HID device index: 955760
    INFO:
    New device that has not been checked out.
    Device arrival. VID: 1118. PID: 2040.
    I1: Microsoft
    I2: Wired Keyboard 600
    I3:
    I4:
    Input length: 3
    Output length: 0
    S/N of board #2 : 1118_2040_2
     
    HID device index: 955760
    INFO:
    New device that has not been checked out.
    Device arrival. VID: 1118. PID: 2040.
    I1: Microsoft
    I2: Wired Keyboard 600
    I3:
    I4:
    Input length: 9
    Output length: 2
    S/N of board #3 : 1118_2040_3
     
    HID device index: 955760
    INFO:
    New device that has not been checked out.
    Device arrival. VID: 1118. PID: 2040.
    I1: Microsoft
    I2: Wired Keyboard 600
    I3:
    I4:
    Input length: 2
    Output length: 0
    S/N of board #4 : 1118_2040_4
    NOTA : Je viens de voir que tu n'as pas de station météo.

    Les résultats que tu me montres sont du même genre de ceux que j'obtiens. Je ne vois pas comment, à partir de ces résultats, interroger la station.

    Cordialement.

    Pierre.

  19. #39
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 095
    Points : 9 581
    Points
    9 581
    Par défaut
    Dans l'énumération des périphériques on ne voit pas la station. Est-elle branchée ? Y a t il les même périphériques que l"application en #17
    Pour ton problème de compilation il me semble que j'ai déjà eu ce genre de problème en utilisant un projet récent avec une version ancienne de Lazarus.

  20. #40
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 098
    Points : 1 061
    Points
    1 061
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    Dans l'énumération des périphériques on ne voit pas la station. Est-elle branchée ? Y a t il les même périphériques que l"application en #17 ...
    Si, on la voit, c'est même la première : lignes 1 à 11 du rapport

    Ma station est branchée en permanence et, mais à part mon smartphone qui n'est pas toujours connecté sur mon PC, tous les autres périphériques sont les mêmes.

    Voilà les résultats données par l'application sous Ubuntu (Sous Ubuntu, j'ai la version 2.2.6 de Lazarus):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    HID Created.
    Ready.
    HID Enabled.
    HID device index: 1
    INFO:
    Devices change !!
    New device that has not been checked out.
    Device arrival. VID: 6465. PID: 32801.
    I1: 
    I2: 
    I3: 
    I4: 
    Input length: 0
    Output length: 0
    S/N of board #1 : 6465_32801_261
     
    Ready.
    No new USB info.
    Citation Envoyé par jurassic pork Voir le message
    ... Pour ton problème de compilation il me semble que j'ai déjà eu ce genre de problème en utilisant un projet récent avec une version ancienne de Lazarus.
    Pour l'instant, j'y ai pallié avec ma solution.

    Mai donc, apparemment avec cette application, je peux me connecter à ma station. Maintenant, c'est que faire pour en tirer des informations !

    Cordialement.

    Pierre.

Discussions similaires

  1. Transmission de données via une liaison port USB
    Par samuela dans le forum MATLAB
    Réponses: 0
    Dernier message: 10/08/2014, 22h51
  2. Internet sous linux via une clé usb 3G sous windows
    Par aperrin dans le forum Réseau
    Réponses: 1
    Dernier message: 19/05/2010, 21h05
  3. Réponses: 4
    Dernier message: 20/04/2009, 20h49
  4. Installer XP via une clé usb ?
    Par cimbomlu dans le forum Windows XP
    Réponses: 4
    Dernier message: 09/10/2006, 11h41
  5. comment établir une liaison usb sous visual c++ ?
    Par Baby_Chou dans le forum MFC
    Réponses: 2
    Dernier message: 03/02/2005, 09h31

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