Das Problem ist, dass es die Software für das Board offenbar nirgends mehr gibt. Das war die "Cypress Suite USB", die oben ja auch schon erwähnt wurde. Darin lag eine CyUSB.dll, die exportierte Funktionen hat, mit denen man Daten lesen und schreiben kann.
Eventuell bekommst du die Software noch hier:
https://gitcode.com/open-source-tool...top&type=card&
Wenn du die Software noch auftreiben kannst, könnte es so ca. gehen:
Delphi-Quellcode:
unit CyUSB;
interface
uses
Windows, SysUtils;
const
CyUSB_DLL = '
CyUSB.dll';
type
// Funktionsdefinitionen aus der CyUSB.dll
TOpenDevice =
function(VendorID, ProductID: Word): Pointer;
stdcall;
TCloseDevice =
procedure(Device: Pointer);
stdcall;
TWriteUSB =
function(Device: Pointer; Endpoint: Byte; Buffer: Pointer; BufferSize: DWord): DWord;
stdcall;
TReadUSB =
function(Device: Pointer; Endpoint: Byte; Buffer: Pointer; BufferSize: DWord): DWord;
stdcall;
var
OpenDevice: TOpenDevice;
CloseDevice: TCloseDevice;
WriteUSB: TWriteUSB;
ReadUSB: TReadUSB;
procedure LoadCyUSB;
procedure UnloadCyUSB;
implementation
var
DLLHandle: THandle;
procedure LoadCyUSB;
begin
DLLHandle := LoadLibrary(CyUSB_DLL);
if DLLHandle <> 0
then
begin
@OpenDevice := GetProcAddress(DLLHandle, '
OpenDevice');
@CloseDevice := GetProcAddress(DLLHandle, '
CloseDevice');
@WriteUSB := GetProcAddress(DLLHandle, '
WriteUSB');
@ReadUSB := GetProcAddress(DLLHandle, '
ReadUSB');
end;
end;
procedure UnloadCyUSB;
begin
if DLLHandle <> 0
then
begin
FreeLibrary(DLLHandle);
DLLHandle := 0;
end;
end;
initialization
LoadCyUSB;
finalization
UnloadCyUSB;
end.
Verwenden:
Delphi-Quellcode:
program TestFX2USB;
uses
Windows, SysUtils, CyUSB;
var
FX2Device: Pointer;
DataOut: array[0..63] of Byte;
DataIn: array[0..63] of Byte;
BytesWritten, BytesRead: DWord;
begin
// 1. Gerät mit Vendor-ID und Product-ID öffnen
FX2Device := OpenDevice($04B4, $1004); // Beispiel: Cypress Vendor-ID
if FX2Device = nil then
begin
Writeln('FX2-Gerät nicht gefunden!');
Exit;
end;
Writeln('FX2-Gerät verbunden!');
// 2. Daten an FX2 senden (Bulk OUT auf Endpoint 0x02)
FillChar(DataOut, SizeOf(DataOut), $A5); // Beispiel-Daten füllen
BytesWritten := WriteUSB(FX2Device, $02, @DataOut, SizeOf(DataOut));
Writeln('Bytes gesendet: ', BytesWritten);
// 3. Daten vom FX2 lesen (Bulk IN von Endpoint 0x86)
BytesRead := ReadUSB(FX2Device, $86, @DataIn, SizeOf(DataIn));
Writeln('Bytes empfangen: ', BytesRead);
// 4. Gerät schließen
CloseDevice(FX2Device);
Writeln('Verbindung geschlossen.');
end.
Es gibt noch das
EZ-USB™ FX3 Software Development Kit, aber ob diese aktuellere Software mit der alten Hardware funktioniert und genauso ansteuerbar ist, weiß ich nicht.