FTDI D2xx-Treiber

Rund um die LCL und andere Komponenten
Antworten
maudi
Beiträge: 2
Registriert: So 8. Jul 2012, 22:03

FTDI D2xx-Treiber

Beitrag von maudi »

Hallo zusammen,
habe etwas Delphi-Erfahrung und bin nun auf Lazarus gestoßen.
Möchte eine USB-Schnittstelle mit dem D2xx-Treiber von FTDI realisieren ( Chip FT232R). Auf der FTDI Homepage gibt es ein Beispiel für Delphi, das ich versucht habe mit Lazarus zu kompilieren. Mit kleinen Anpassungen läuft das auch soweit, allerdings habe ich Probleme beim Schreiben einer Datei an den Chip ( Fehler ExecutionError 3 / 103 / ).
Hat jemand Erfahrung mit dem FT232R-Chip und USB mittels DLL ?

Rückinfo wäre sehr nett.
Danke

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: FTDI D2xx-Treiber

Beitrag von Christian »

Was meinst du mit schreiben einer datei
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

maudi
Beiträge: 2
Registriert: So 8. Jul 2012, 22:03

Re: FTDI D2xx-Treiber

Beitrag von maudi »

Danke für die schnelle Nachricht, bin leider nicht so der Spezialist. Es gibt ein Beispiel bei FTDI : http://www.ftdichip.com/Support/Softwar ... Delphi.htm" onclick="window.open(this.href);return false;
Allerdings arbeitet dieses Delphi-Programm mit FlowControl, was ich nicht gebrauchen kann. Habe daher versucht das Projekt in Lazarus zu überarbeiten, mit mäßigem Erfolg. In der Applikation gibt es eine Funktion "File -> Device" da bekomme ich den beschriebenen Fehler.
Die Prozedur lautet :

Code: Alles auswählen

procedure TForm1.FTSendFileExecute(Sender: TObject);
Var OpenFile : File;  OpenFileName : String;
    FC1,Total,I : Integer;
    S : String;
begin
If OpenDialog1.Execute then
  Begin
  Total := 0;
  FT_Enable_Error_Report := true; // Enable Error Reporting
  Timer1.Enabled := False;  // Stop Polling for Device Present
  OpenFileName := OpenDialog1.FileName;
  OpenDialog1.InitialDir := ExtractFilePath(OpenFilename);
  Memo1.Lines.Add('Opening - '+OpenFileName);
  AssignFile(OpenFile,OpenFileName);
  Reset(OpenFile,1);
    Repeat
    Application.ProcessMessages;
    BlockRead(OpenFile,FT_Out_Buffer,FT_Out_Buffer_Size,FC1);
    StatusBar1.Panels[0].Text := '   Bytes Sent = '+IntToStr(Total);
    If FC1 <> 0 then
      Begin
      I := Write_USB_Device_Buffer( FC1 );
      If I <> FC1 then Memo1.Lines.Add('USB Device Write TimeOut ...');
      Total := Total + I;
      End;
    Until ( FC1 <> FT_Out_Buffer_Size ); // Last Block of File ...
  S := IntToStr(Total)+ ' Bytes Sent ...';
  Memo1.Lines.Add(S);
  CloseFile(OpenFile);
  Timer1.Enabled := True;  // Resume Polling for Device Present
  End;
end;
Das Programm hängt sich immer im Bereich Reset (OpenFile,1) auf.
Für die Spezialisten ist das sicher kein Problem.
Zuletzt geändert von Lori am Do 12. Jul 2012, 14:59, insgesamt 1-mal geändert.
Grund: Highlighter

Antworten