Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


L780&TTL_out

Вы не вошли.

 Поиск | Регистрация | Вход 

Полина
13.04.2004 10:16:21
#1

Гость

L780&TTL_out

Здравствуйте!
Такая у меня получилась проблема. При вот таких начальных условиях:
L-780 (с цапами)
Win2000Rus
Delphi7
не хочет работать цифровой вывод. Делаю я это так:
var data: word;
.............
data:=0;
TTL_out_PLX(@dev, data, 0);
А оно мне говорит - Access violation :-(
Я что-то не так делаю, или это глюки с Win2000? Плата проинициализировалась нормально, потому как ЦАП работает Ок.
Заранее спасибо

13.04.2004 12:05:52
#2

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: L780&TTL_out

Код полнее на привести. Или например в примере библиотечном разкомментарить строчки в unit2.pas. Ну и еще все это тестировалось с Delphi 4 только.

Полина
13.04.2004 14:32:06
#3

Гость

Re: L780&TTL_out

Так, пока я не нашла еще Дельфи№4:
1. Раскомментированный ваш пример дает ту же ошибку, только по другому адресу.
2. А код мой вот такой, самый обычный код, все у вас же и перекопировала smile
================================================
var
  Form1: TForm1;
  BoardInfo : TBoardInfo;
  dev       : DEV_REG_UNI;
  pd        : PLATA_DESCR;
  d: word;
           dw:dword;
         i:integer;
         slPar: SLOT_PAR;
         slot: dword;
         usedsize : DWORD;


implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
        val:integer;
        a:integer;
begin
dev.size := sizeof(dev);
dw := OpenLDevice(50,@dev);
if dw =  INVALID_HANDLE_VALUE
  then MessageBox(Handle,/'Cannot open the device/',NIL,MB_OK);

pd.size := sizeof(pd);
dw := ReadPlataDescr_PLX(@dev,@pd,0);
if dw = 0 then MessageBox(Handle,/'Cannot get description/',NIL,MB_OK);

dw := LoadBios(@dev,pd.BrdName,0,0);
if dw = 0 then MessageBox(Handle,/'Cannot load BIOS/',NIL,MB_OK);

adcp.size := sizeof(adcp);
FillAdcParameters_PLX(@adcp,@pd,@Rate,@Kadr,3,1,0,0,0,Channels,@Chan,$400,$400,32);
usedsize := 200000;
RequestBuffer(@dev,@usedsize);
  SetParameters(@dev,@adcp,@usedsize,@Data,@Sync);
  Bitmap1 := TBitmap.Create;
  SyncThread := TSyncThread.Create(TRUE);

d:=1000;
StartLDevice(@dev);
InitStartLDevice(@dev);
DAC_Sample_PLX(@dev,@pd,0,@d,0);
DAC_Sample_PLX(@dev,@pd,1,@d,0);

end;

procedure TForm1.Button1Click(Sender: TObject);

begin
d:=0;
DAC_Sample_PLX(@dev,@pd,0,@d,0);
DAC_Sample_PLX(@dev,@pd,1,@d,0);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
        data:integer;
         PAddr: WORD;
    PCount: WORD;
    Samples: WORD;
    i,c,x,y: DWORD;
    fx,fy: Extended;
    DacRate : double;

begin
Get_DM_Word_PLX(@dev,L_DAC_FIFO_BASE_ADDRESS_PLX,@PAddr,0);
  Get_DM_Word_PLX(@dev,L_DAC_FIFO_LENGTH_PLX,@PCount,0);
{ Samples := PCount div DACCount;
  for i:= 0 to PCount do
  begin
    c := i and 1;
    x := i shr 1;
    fx := x;
    fy := Sin(2*Pi*fx*EmRate[c]/Samples);
    y := Round(fy*64);
    y := (y and $FFF) or (c shl 12);
    Put_PM_Word_PLX(@dev,PAddr,y,0);
    PAddr := PAddr + 1;
  end;}
  DacRate := 10.0;
  DAC_Rate_PLX(@dev,@pd,@DacRate,0);
  DAC_Stream_PLX(@dev,1,0);

  TTL_Out_PLX(@dev,0,0);

  SyncThread.Resume;
end;
=================================================

13.04.2004 14:54:11
#4

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: L780&TTL_out

Я даже не знаю что посоветовать.
Код там такой:
WORD d = Data;
   if(!Put_DM_word_PLX(dev, L_TTL_OUT_PLX, d, key)) return 0;
   if(!CommandPLX(dev, cmTTL_OUT_PLX, key)) return 0;
И чего сбоить может непонятно.
ЕСли написать простейший пример типа проинициализировать только плату загрузить и потом вывод на ТТЛ то  тоже сбоит?

Полина
13.04.2004 17:27:39
#5

Гость

Re: L780&TTL_out

Я поставила 4й Дельфи и загрузила из-под него ваш проект для дельфы. Вроде работает, тук-тук, хотя цап еще не проверяла :-)
Спасибо!
Но комментарии к драйверам Дельфи (Билдер вроде ничего, но там про ТТЛ нет) под Вин вы все ж бы написали хорошие, а то такие лохи, как я, вам будут форум постоянно засорять smile