собственно работаю через данную библиотеку с ft4222EV (мост USB-SPI)
все функции работают кроме одной, на ней просто зависает наглухо
из описания библиотеки:
FT4222_STATUS FT4222_SPIMaster_SingleReadWrite(FT_HANDLE ftHandle, uint8* readBuffer, uint8* writeBuffer, uint16 sizeToTransfer, uint16* sizeTransferred, BOOL isEndTransaction)
из моей программы:
Код:
Const
FT_DLL_Name4222 = 'LibFT4222.dll';
Type
FT_Result = Integer;
TValue=integer;
PSPI_BUFF=^string;
psizeTransferred=^integer;
pValue=^TValue;
function ft4222_SPI_send_read(ftHandle:Dword; readBuffer,writeBuffer :PSPI_BUFF; sizeToTransfer : integer; sizeTransferred : psizeTransferred; isEndTransaction : boolean) : FT_Result ; stdcall ; External FT_DLL_Name4222 name 'FT4222_SPIMaster_SingleReadWrite';
Function SPI_send_read(Serial_Number : string; read_data,send_data:PSPI_BUFF; sizeToTransfer:integer;sizeTransferred:psizeTransferred) : FT_Result;
Function SPI_send_read(Serial_Number : string; read_data,send_data: PSPI_BUFF;sizeToTransfer:integer;sizeTransferred:psizeTransferred) : FT_Result;
var
i:integer;
begin
i:=10;
Result := ft4222_SPI_send_read(FT_Handle,read_data, send_data, sizeToTransfer, sizeTransferred,true);
i:=sizeTransferred^;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
i,k,l:integer;
rx,tx:PSPI_BUFF;
rxs,txs:string;
sizeTransferred:psizeTransferred;
begin
txs:='1';
k:=length(txs);
rx:=@rxs;
tx:=@txs;
sizeTransferred:=@l;
i:=SPI_send_read(serial,rx,tx,k,sizeTransferred);//вот тут либо виснет либо по указателю sizeTransferred выдает что то нереальное, но чаще виснет на корню
form1.Memo1.Lines.Add(rxs);
I:=sizeTransferred^;
form1.Memo1.Lines.Add(inttostr(i));
end;
если напутал с разделом - извиняюсь
библиотеку можно либо в нете найти либо могу ссылку скинуть как и на исходник целиком