Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Auslesen/Programmieren (https://www.delphipraxis.net/14223-auslesen-programmieren.html)

negaH 6. Jan 2004 07:18

Re: Auslesen/Programmieren
 
StrCopy()

a51 6. Jan 2004 08:11

Re: Auslesen/Programmieren
 
vielleicht liegt's an inkompatiblität von string und pchar ???

STW 6. Jan 2004 10:49

Re: Auslesen/Programmieren
 
Kann es sein, dass das record die PChar irgendwo hinschreibt und dann beim auslesen nicht weiss wo herholen?!
Wenn ja, was kann man degegen unternehmen?

PEACE
STW

scp 6. Jan 2004 11:32

Re: Auslesen/Programmieren
 
Zitat:

Zitat von STW
@scp

ich glaube in C und Delphi ist das doch eben gerade seitenverkehrt...
oder irre ich mich da?


@negaH

...

und wenn ichs so mache wie dein Vorschlag (also Arrays), kann ich beim EEPROM programmieren die Daten nicht mehr ins ftData einschreiben, da ich sie von Edits herauslese

...

Seitenverkehrt ist es nur bei der Deklaration von Variablen/Funktionen, alles andere wird nich verdreht.

Ich würde in dem Fall dann auch Char-Arrays nehmen, die kannst du dann z.B. mit
Delphi-Quellcode:
StrPCopy(ftData.Manufacturer, Manufacturer.Text);
verändern.

STW 7. Jan 2004 06:35

Re: Auslesen/Programmieren
 
Hallo

Brauch nochmals ein bisschen Hilfe...
nochmals ein bisschen code

Hab es nun mit Arrays gemacht:
Delphi-Quellcode:
type
  PFT_PROGRAM_DATA = ^FT_PROGRAM_DATA;
  FT_PROGRAM_DATA = packed record //(EEPROM Programming Interface)
    VendorID        : word;
    ProductID       : word;
    Manufacturer    : Array [0..12] of Char; // PChar;
    ManufacturerID  : Array [0..8] of Char; // PChar;
    Description     : Array [0..24] of Char; // PChar;
    SerialNumber    : Array [0..12] of Char; // PChar;
    MaxPower        : word;
    PnP             : Word;
    SelfPowered     : Word;
    RemoteWakeup    : Word;
    Rev4             : boolean;
    IsoIn           : boolean;
    IsoOut          : boolean;
    PullDownEnable  : boolean;
    SerNumEnable    : boolean;
    USBVersionEnable : boolean;
    USBVersion      : Word;
  end;

var
 ftData : FT_PROGRAM_DATA;

implementation
function FT_EE_Program(fthandle: DWord; PFT_PROGRAM_DATA: Pointer) : FT_Result; stdcall ; External FT_DLL_Name name 'FT_EE_Program';
function FT_EE_Read(fthandle: DWord; PFT_PROGRAM_DATA: Pointer) : FT_Result; stdcall ; External FT_DLL_Name name 'FT_EE_Read';


Function ProgramEE : FT_Result;
 begin
  Result := FT_EE_Program(Multi_Handle,@FTData);
  if Result <> FT_OK then FT_Error_Report('FT_EE_Program',Result);
end;

Function ReadEE : FT_Result;
begin
  Result := FT_EE_Read(Multi_Handle,@FTData);
  if Result <> FT_OK then FT_Error_Report('FT_EE_Read',Result);
end;
Hier ist, wie ich die ftData einlese:

Delphi-Quellcode:
procedure TForm1.ProgramButClick(Sender: TObject);
begin
  DeviceIndex := 0;
  GetFTDeviceCount;
  if NumDevs > 0 then repeat
    case DeviceIndex of
      0: DevNumber := SR1.Text;
      1: DevNumber := SR2.Text;
    end;
    FT_OpenEx(DevNumber,FT_OPEN_BY_SERIAL_NUMBER,@Multi_Handle);
    FtData.VendorID := StrToInt('$'+VendorID.Text);
    ftData.ProductID := StrToInt('$'+ProductID.Text);
    StrNew(StrPCopy(ftData.Manufacturer, (Manufacturer.Text)));
    StrNew(StrPCopy(ftData.ManufacturerID, (ManufacturerID.Text)));
    StrNew(StrPCopy(ftData.Description, (Description.Text)));
    StrNew(StrPCopy(ftData.SerialNumber, ((SerialNumber.Text + IntToStr(DeviceIndex)))));
    ftData.MaxPower := strtoint(MaxPower.Text);
    ftData.PnP := StrToInt(PnP.Items[PnP.ItemIndex]);
    ftData.SelfPowered := StrToInt(SelfPowered.Items[SelfPowered.ItemIndex]);
    ftData.RemoteWakeup := StrToInt(RemoteWakeup.Items[RemoteWakeup.ItemIndex]);
    ftData.Rev4 := False;
    ftData.IsoIn := False;
    ftData.IsoOut := False;
    ftData.PullDownEnable := False;
    ftData.SerNumEnable := True;
    ftData.USBVersionEnable := True;
    if USBVersion.Text = 'USB 2.0' then
      ftData.USBVersion := $0200
    else ftData.USBVersion := $0110;
    ProgramEE;
    Close_USB_Device;
    inc(DeviceIndex);
    dec(NumDevs);
  until NumDevs = 0;
  SerialNumber.Text := SerialNumberEdit.Text;
end;
Jedoch stürzt das Prog bei dieser Zeile immer ab!
Delphi-Quellcode:
function FT_EE_Program(fthandle: DWord; PFT_PROGRAM_DATA: Pointer) : FT_Result; stdcall ; External FT_DLL_Name name 'FT_EE_Program';
und der EAccesViolation-Error erscheint...


Hat vielleicht noch jemand eine Idee?

PEACE
STW


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:28 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz