Всем привет!
Мучаюсь с такой проблемой.
L-761, Delphi
Процедура инициализации:
dev.size:=sizeof(dev);
dw:=OpenLDevice(50,@dev);
if dw=INVALID_HANDLE_VALUE then memo1.lines.add(/'Невозможно открыть устройство/')
else memo1.lines.Add(/'Устройство открыто/');
pd.size:=sizeof(pd);
dw:=ReadPlataDescr_PLX(@dev,@pd,0);
if dw=0 then memo1.Lines.Add(/'Описание устройства не получено/')
else memo1.lines.add(/'Получено описание устройства/');
dw:=LoadBios(@dev,pd.BrdName,0,0);
if dw=0 then memo1.lines.add(/'Невозможно загрузить BIOS/')
else memo1.lines.add(/'BIOS загружен/');
adcp.size:=sizeof(adcp);
FillADCParameters_PLX(@adcp,@pd,@Rate,@Kadr,3,1,0,0,0,Channels,@Chan,$400,$400,32);
Memo1.lines.add(/'Частота сбора данных: /'+floattostr(Rate)+/' КГц;/');
Memo1.Lines.Add(/'Межкадровая задержка: /'+floattostr(Kadr)+/' Мс;/');
memo1.lines.add(/'Число каналов: /'+inttostr(Channels)+/';/');
usedsize:={2}400000;
RequestBuffer(@dev,@usedsize);
SetParameters(@dev,@adcp,@usedsize,@data,@sync);
Чтение каналов:
procedure TSyncThread.Execute;
begin
repeat
InitStartLDevice(@dev);
StartLDevice(@dev);
while (sync^<32*({BufferSize}$400 shr 1)) do
begin
end;
StopLdevice(@dev);
Synchronize(XSync);
if Terminated then break;
until false;
end;
Procedure TSyncThread.XSync;
type a=array[1..8] of integer;
var s:DWORD;
c:DWORD;
ar:a;
begin
for s:=0 to 32*({BufferSize}$400 shr 1) do
begin
c:=s mod Channels+1;
ar[c]:=Data[s]{+$8000};
end;
form1.label3.caption:=IntToStr(ar[1]);
form1.label4.caption:=IntToStr(ar[2]);
form1.Label5.Caption:=IntToStr(ar[3]);
form1.Label6.Caption:=IntToStr(ar[4]);
form1.Label7.Caption:=IntToStr(ar[5]);
form1.Label8.Caption:=IntToStr(ar[6]);
form1.Label9.Caption:=IntToStr(ar[7]);
form1.Label10.Caption:=IntToStr(ar[8]);
Короче, всё содрано с примеров.
Проблемы следующие.
1. Первый в списке канал, каким бы он ни был, выдаёт ерунду- или 0, или другое число- статичное, не изменяющееся от наводок, и ,обычно, невозможное (напр. 46378, 32778- в таком духе).
каналы пробовал всевозможные:
($05,$06,$07,$08,$09,$10,$11,$12);
{($00,$01,$02,$03,$04,$05,$06,$07);}
Напряжение подведено только к одному из каналов. Остальные (кроме первого) нормально показывают наводки.
2. Каналы, старше 10- вообще не работают. Как ни крутись.
LGraph всё мерит нормально. Но у LGraph я заметил интересную особенность.
Допустим, задаю съём с 11 и 12 каналов, а он снимает с 1 и 2.
Кто- нибудь сталкивался с этим?