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
FTDI D2xx-Treiber
-
- 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
Was meinst du mit schreiben einer datei
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
Re: FTDI D2xx-Treiber
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 :
Das Programm hängt sich immer im Bereich Reset (OpenFile,1) auf.
Für die Spezialisten ist das sicher kein Problem.
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;
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
Grund: Highlighter