Beim Aufruf des FTDI-Moduls bekomme ich z.B. bei den Funktionen GetDevices und GetPort die Exception, das wäre vom FTDI-Treiber nicht unterstützt. Die gleichartigen Aufrufe über die FTDI-API funktionieren jedoch.
Ich verwende die Treiber aus dem WS300 WeatherProfessional-Packet. (3.1.7)
Ziel soll sein, nach dem bekannten DeviceString zu suchen und dieses Gerät zu öffnen.
Hallo,
hier ist der verwendete Code mit Bemerkung, wo es daneben geht. Die Meldung „EIPSFTDI Not supported by FTDI-Driver“
Tommi
var parent:IIPSModule;
ftdidev:TFTDIDevice;
ftdidevs:TFTDIDevices;
desc,serial:string;
CONST ELV_STRING='eQ3 WS 300 PC II';
begin
if fKernel.DataHandler.GetInstanceParentID(fInstanceID) > 0 then parent:=getParent();
if parent=NIL then exit;
if supports(parent,IIPSFTDI,ftdi) then
begin
ftdi.setopen(true); //muss erst aktiv sein, sonst geht gar nichts
ftdidevs:=ftdi.GetDevices(); //bringt EIPSFTDI
//desc:=ftdi.GetPort; //geht auch nicht
for ftdidev in ftdidevs do
begin
desc:=ftdidev.Description;
if (desc=ELV_STRING) then
begin
if not ftdidev.InUse then
begin
serial:=ftdidev.SerialNumber;
if fchangedsettings.DeviceID='' then fchangedsettings.DeviceID:=serial;
if fchangedsettings.DeviceID=serial then break;
end;
end;
end;
end;
fCurrentSettings := fChangedSettings;
fKernel.TimerPoolEx.SetInterval(fTimerUpdate, fCurrentSettings.Interval);
inherited;
syncParent;
end;
Die GUIDs stimmen überein.
Der einzige erkennbare Unterschied war das fehlende…ex in der Definition. Aber das hast Du vielleicht erst auf meinen FeatureRequest eingebaut.