Thema: Delphi Auslesen/Programmieren

Einzelnen Beitrag anzeigen

STW

Registriert seit: 19. Nov 2003
Ort: Solothurn
22 Beiträge
 
#1

Auslesen/Programmieren

  Alt 5. Jan 2004, 08:21
Hallo

Ich muss bei einem FT232BM von FTDI unteranderem Daten programmieren und auslesen können.
Dazu benutze ich Delphi...

Beim Programmieren habe ich keine Probleme, aber dass auslesen ist etwas harziger...

Mal den Code zum Programmieren:
Die Daten zum Programmieren sind in einem Record.

Delphi-Quellcode:
 ftdata : Record
               VendorID : word;
               ProductID : word;
               Manufacturer : PChar;
               ManufacturerID : PChar;
               Description : PChar;
               SerialNumber : PChar;
               MaxPower : word;
               PnP : Word;
               SelfPowered : Word;
               RemoteWakeup : Word;
               Rev4 : boolean;
               IsoIn : boolean;
               IsoOut : boolean;
               PullDownEnable : boolean;
               SerNumEnable : boolean;
               USBVersionEnable : boolean;
               USBVersion : Word;
            
 
 FT_EE_Program(Multi_Handle,@FtData);
Beim Auslesen habe ich das hier... aber es stürzt mir immer ab...

Delphi-Quellcode:
Function ReadEE : FT_Result;
var
ManufacturerBuf : string[8];
ManufacturerIDBuf : string[16];
DescriptionBuf : string[32];
SerialNumberBuf : String[16];
begin
  ManufacturerBuf := ftData.Manufacturer;
  ManufacturerIDBuf := ftData.ManufacturerID;
  DescriptionBuf := ftData.Description;
  SerialNumberBuf := ftData.SerialNumber;
  Result := FT_EE_Read(Multi_Handle,@FtData);
  if Result <> FT_OK then FT_Error_Report('FT_EE_Read',Result);
end;


Das blöde ist, dass die Beispiele in C-Sprache sind und ich nicht weiss ob ich sie richtig übertragen habe...

Code zum Programmieren

Code:
FT_PROGRAM_DATA (EEPROM Programming Interface)
 typedef struct ft_program_data { 
   WORD VendorId;        // 0x0403 
   WORD ProductId;       // 0x6001 
   char *Manufacturer;   // "FTDI"
   char *ManufacturerId; // "FT"
   char *Description;    // "USB HS Serial Converter"
   char *SerialNumber;   // "FT000001" if fixed, or NULL
   WORD MaxPower;        // 0 < MaxPower <= 500 
   WORD PnP;             // 0 = disabled, 1 = enabled
   WORD SelfPowered;     // 0 = bus powered, 1 = self powered
   WORD RemoteWakeup;    // 0 = not capable, 1 = capable
   bool Rev4;            // true if Rev4 chip, false otherwise
   bool IsoIn;           // true if in endpoint is isochronous
   bool IsoOut;          // true if out endpoint is isochronous
   bool PullDownEnable;  // true if pull down enabled
   bool SerNumEnable;    // true if serial number to be used
   bool USBVersionEnable; // true if chip uses USBVersion
   WORD USBVersion;      // BCD (0x0200 => USB2)
 
 } FT_PROGRAM_DATA, *PFT_PROGRAM_DATA;
Code zum Lesen

Code:
FT_PROGRAM_DATA ftData;char ManufacturerBuf[32];
char ManufacturerIdBuf[16];
char DescriptionBuf[64];
char SerialNumberBuf[16];

ftData.Manufacturer = ManufacturerBuf;
ftData.ManufacturerId = ManufacturerIdBuf;
ftData.Description = DescriptionBuf;
ftData.SerialNumber = SerialNumberBuf;

ftStatus = FT_EE_Read(ftHandle,&ftData);
if (ftStatus == FT_OK) { 
    // FT_EE_Read OK, data is available in ftData

else { 
    // FT_EE_Read FAILED! 
}

vielleicht bin ich hier auch total falsch...

Aber bin trotzdem dankbar für jede Hilfe

PEACE

STW
  Mit Zitat antworten Zitat