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


Плата L-780M. Не работает IoAsync.

Вы не вошли.

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

Николай
02.06.2010 08:04:08
#1

Гость

Плата L-780M. Не работает IoAsync.

Не могу запустить ни ЦАП, ни АЦП.
В чем ошибка?

Программа:

unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
  Forms, Dialogs, ifc_ldev, ioctl, create, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure StartDAC(Sender: TObject);
    procedure StartADC(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

  pLDev: IDaqLDevice;
  pIUnknown:LUnknown;
  hr:Integer;
  dev: THandle;

  sl:SLOT_PAR;


implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Lines.Clear;
  Memo1.Lines.Add(//'Тестирование библиотеки//');

  if(CallCreateInstance(//'lcomp.dll//')=1) then
  begin
    Memo1.Lines.Add(//'Библиотека загружена.//');
    Memo1.Lines.Add(//'//');
  end;
{Укажите здесь виртуальный слот той платы с которой хотите работать}
  pIUnknown:=CreateInstance(0);
  hr := pIUnknown.QueryInterface(IID_ILDEV, pLDev);
  if(not Succeeded(hr))
    then MessageBox(0,//'Get interface failed//',//'Error//',MB_OK);
  pIUnknown.Release;
  dev:= pLDev.OpenLDevice;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  pLDev.CloseLDevice;
  pLDev.Release;
end;

procedure TForm1.StartDAC(Sender: TObject);
var
  pp: ASYNC_PAR;
begin
{ тест ЦАП и пример работы с IoSaync }

   pp.s_Type := L_ASYNC_DAC_OUT;
   pp.Mode := 0;
   pp.Data[0] := $1000;
   if pLDev.IoAsync(pp) = L_SUCCESS  then Memo1.Lines.Add(//'SUCCESS //');

   Memo1.Lines.Add(//'//');
   Memo1.Lines.Add(//'IoAsync call//');
   Memo1.Lines.Add(//'Data[0] - //'+IntToStr(pp.Data[0]));

end;

procedure TForm1.StartADC(Sender: TObject);
var
  pp: ASYNC_PAR;
begin
{ тест АЦП и пример работы с IoSaync }


   pp.s_Type := L_ASYNC_ADC_INP;
   pp.Mode := 0;
   pp.Chn[0] := 0;
  if pLDev.IoAsync(pp) = L_SUCCESS  then Memo1.Lines.Add(//'SUCCESS//');

   Memo1.Lines.Add(//'IoAsync call//');
   Memo1.Lines.Add(//'Data[0] = //' + IntToStr(pp.Data[0]));
   Memo1.Lines.Add(//'//');

end;

end.

02.06.2010 09:40:05
#2

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

Re: Плата L-780M. Не работает IoAsync.

Без загрузки биос и чтение флеш памяти работать не будет... те LoadBios и ReadPlataDescr вызвать надо еще. см примеры...

Николай
02.06.2010 10:18:52
#3

Гость

Re: Плата L-780M. Не работает IoAsync.

Добавил, но все без изменений!

var   pd: PLATA_DESCR_U2;


pLDev.ReadPlataDescr(pd));
pLDev.LoadBios(pd.t1.BrdName);

02.06.2010 10:29:30
#4

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

Re: Плата L-780M. Не работает IoAsync.

а функция LoadBios успешно выполнилась?

Николай
02.06.2010 10:41:05
#5

Гость

Re: Плата L-780M. Не работает IoAsync.

Разобрался!
Нужно еще в директорию поместить файл L780.bio
А что, трудно про это в описании команд написать!
Бардак.

02.06.2010 11:00:34
#6

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

Re: Плата L-780M. Не работает IoAsync.

Там есть примеры.

Николай
02.06.2010 12:55:34
#7

Гость

Re: Плата L-780M. Не работает IoAsync.

А примеров про ЦАП как раз и нету!

02.06.2010 13:58:14
#8

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

Re: Плата L-780M. Не работает IoAsync.

про IoAsync есть.

Николай
02.06.2010 14:00:02
#9

Гость

Re: Плата L-780M. Не работает IoAsync.

Приведите этот пример!

02.06.2010 14:47:44
#10

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

Re: Плата L-780M. Не работает IoAsync.

Так у Вас куски кода из него...

Николай
03.06.2010 07:53:25
#11

Гость

Re: Плата L-780M. Не работает IoAsync.

У меня еще несколько вопросов:

1. Нужно ли заполнять структуру ASYNC_PAR
   и какие строки работают?
   А то в хелпе написано:
"Структура ASYNC_PAR используется совместно с вызовом IoAsync. Поля отмеченные комментарием (//) наследуются из структуры DAQ_PAR. Пользователь должен заполнять все поля кроме тех, которые помечены (*). Как заполнять или что читать из этой структуры см. описание функции IoAsync. "

2. Можно ли менять усиление АЦП?
   Написано:
USHORT Chn[128] - массив с номерами каналов и усилением на них; описывает порядок опроса каналов;

3. Загружать Биос надо каждый раз при включении
компьютера? Там же вроде бы флэш память. Она
должна хранить Биос.

03.06.2010 09:05:38
#12

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

Re: Плата L-780M. Не работает IoAsync.

1 в пример и в описании IoAsync действительно написано что надо заполнять для кажой платы и для каждой задачи.

2 Можно. В Chn[0] надо положить логический номер канала как при потоковом сборе. Формат см описание платы.

3 Да. Биос загружается в озу DSP. Флешка там чисто с информацией и калибровочными коэффициентами