Logiciel PC pour FT245BM
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Logiciel PC pour FT245BM



  1. #1
    petitours

    Logiciel PC pour FT245BM


    ------

    Bonjour,

    Je developpe un soft avec borland c++ builder 6 pour un FT245BM (FTDI) et j’ai un soucis pour récupérer la description et le numéro de série.

    Je me suis fait une fonction qui va lire le nombre de périphérique connecté puis si >0, va lire la description et le n° de serie

    ftStatus = FT_ListDevices(&numDevs,NULL,F T_LIST_NUMBER_ONLY);
    ftStatus = FT_ListDevices((PVOID)devIndex ,Buffer,FT_LIST_BY_INDEX|FT_OP EN_BY_SERIAL_NUMBER);
    ftStatus = FT_ListDevices((PVOID)devIndex ,Buffer,FT_LIST_BY_INDEX|FT_OP EN_BY_SERIAL_NUMBER);

    Par ailleur, j’ai des fonctions qui envoient ou lisent le composant. (ftStatus = FT_Read(ftHandle,pBuffer,RxByt es,&BytesReceived)

    Si je demande description et n° de serie n’importe quand sans avoir fait de lecture ou ecriture depuis le lancement du logiciel la lecture des descriptions et n° de serie MARCHE TOUJOURS

    Si je fais cette meme demande, par la meme fonction apres avoir lu ou ecrit quelquechose sur le FT j’arrive a obtenir le nombre de périques connecté mais les fonctions pour récupérer le nom et le n° de serie échouent !!!!????

    J’utilise que les synthaxes copiées collées du guide de programmation de FTDI, enfin, rien d'extraordinaire

    Avez-vous une idée de ce qui dérange la fonction pour le numéro de serie après avoir lu au moins une fois le composant ?
    J’ai plus la moindre idée de où chercher !

    Je vous remercie mille fois par avance !

    -----

  2. #2
    monnoliv

    Re : Logiciel PC pour FT245BM

    Voici mon code qui fonctionne:
    Code:
    //---------------------------------------------------------------------------
    bool __fastcall TFMain::Init()
    {
     bool Ok = false;
     MTerm->Lines->Add("Listing devices...");
     if (!FT_ListDevices(&NumberDevicesConnected, NULL, FT_LIST_NUMBER_ONLY))
      {
       MTerm->Lines->Add("Ok");
       /// Si on a trouvé des devices ...
       if (NumberDevicesConnected > 0)
        {
         // Définir un Buffer de réception
         char Buff[64];
    
         MTerm->Lines->Add("Retrieving informations:");
         // Enregistrer le numéro de série de chaque périphérique
         // Ouvrir par Index et retirer numéro de série
         MTerm->Lines->Add("By serials:");
         for (int i=0; i<NumberDevicesConnected; i++)
          {
           FT_ListDevices((PVOID)i, Buff, FT_LIST_BY_INDEX | FT_OPEN_BY_SERIAL_NUMBER);
           USBDevicesSerial->Add(Buff);
           MTerm->Lines->Add(AnsiString(i+1) + AnsiString(Buff));
          }
    
         MTerm->Lines->Add("By descriptions:");
         // Enregistrer la description de chaque périphérique
         // Ouvrir par Index et retirer description
         for (int i=0; i<NumberDevicesConnected; i++)
          {
           FT_ListDevices((PVOID)i, Buff, FT_LIST_BY_INDEX | FT_OPEN_BY_DESCRIPTION);
           USBDevicesString->Add(Buff);
           MTerm->Lines->Add(AnsiString(i+1) + AnsiString(Buff));
          }
         MTerm->Lines->Add("Done");
         ///////////// Ouvrir  ////////////
         MTerm->Lines->Add("Opening device 0 ...");
         int DevSelect = 0;
         ftStatus = FT_Open(DevSelect,&MonUSBDevHdl[DevSelect]);
         if (ftStatus == FT_OK)
          {
           FT_SetDivisor (MonUSBDevHdl[DevSelect], DIVISOR);
           CurrentDevice = DevSelect;
           IdxRx = 0;
           MTerm->Lines->Add("Ok");
           Ok = true;
          }
         else
          {
           CurrentDevice = -1;
           MTerm->Lines->Add("Opening device 0 failed !");
           Ok = false;
          }
         ///////////// fin Ouvrir  ////////////
        }
       else
        {
         MTerm->Lines->Add("No USB devices connected !");
         Ok = false;
        }
      }
     else
      {
       MTerm->Lines->Add("failed !");
       Ok = false;
      }
     return Ok;
    }
    avec
    int NumberDevicesConnected;

    Si ça peut t'aider...

    A+
    Ne soldez pas grand mère, elle brosse encore.

  3. #3
    petitours

    Re : Logiciel PC pour FT245BM

    merci, je vais voir s'il y a des différences avec ce que je fais

    2 pettes questions quand meme

    ce code fontionne à tout moment, meme si on a dejà travaillé avec le composant ?
    le FT setdivisor sert pour le FT232, ca n'a pas de fonction possible avec le FT245 (hors mode bit bang) ?

    encore merci

  4. #4
    monnoliv

    Re : Logiciel PC pour FT245BM

    ce code fontionne à tout moment, meme si on a dejà travaillé avec le composant ?
    J'ai toujours exécuté cette routine en début de programme, jamais en plein milieu.
    Au fait, tu fermes bien les périphériques par un FT_Close avant d'essayer un FT_ListDevices ?

    le FT_setdivisor sert pour le FT232, ca n'a pas de fonction possible avec le FT245 (hors mode bit bang) ?
    Je ne sais pas, je n'ai jamais utilisé le FT245, par contre pour le FT2232C, de mémoire on utilise bien le FT_setdivisor pour cadencer le mode BitBang.
    A+
    Ne soldez pas grand mère, elle brosse encore.

  5. A voir en vidéo sur Futura

Discussions similaires

  1. Cherche logiciel pour mac pour convertir mov en avi
    Par invite8faf8421 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 25/11/2007, 13h48
  2. Logiciel pour la chimie
    Par invitebcde32a3 dans le forum Chimie
    Réponses: 5
    Dernier message: 21/11/2007, 12h00
  3. logiciel pour faire des schémas pour la physique
    Par .:Spip:. dans le forum Logiciel - Software - Open Source
    Réponses: 11
    Dernier message: 20/07/2007, 23h32
  4. Logiciel pour organigrammes
    Par Sephi dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 15/02/2005, 23h35
  5. Logiciel pour PicStart Plus
    Par gimmy dans le forum Électronique
    Réponses: 0
    Dernier message: 08/04/2003, 18h21
Découvrez nos comparatifs produits sur l'informatique et les technologies.