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


780 плата, ваш проект

Вы не вошли.

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

Юрий
25.04.2011 17:35:10
#1

Гость

780 плата, ваш проект

Заставили писать прогу под вашу плату. в тоске.
при запуске вашего проекта выдает
Project Projetc2.exe raised exception class EAccsesVioletion with message ////'Accses violation at adress 0045059D in module Projetc2. read adress 0000000////'. процесс остановить и перейти на пошаговый режим
Что это значит.?

25.04.2011 17:50:19
#2

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,495

Re: 780 плата, ваш проект

Что за проект "Projetc2"? Что за изделие? На чем пишите? ...

Юрий
26.04.2011 21:08:53
#3

Гость

Re: 780 плата, ваш проект

Плата L780. Запускаю ваш проект заложенный в библиотеке l7xx.dpr, программа L-graph работает, пишу на delphi 7

27.04.2011 10:29:09
#4

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

Re: 780 плата, ваш проект

За делфи 7 не скажу. Все разрабатывалось в 6.

Юрий
27.04.2011 14:36:22
#5

Гость

Re: 780 плата, ваш проект

Какая разница 7 или 6 ваш продукт и вы его должны сопровождать. Если бы сомной проконсультировался человек который покупал эту плату Я бы всем телом отговаривал. Еще лет 10 я делал маркетинг по платам и пришел к выводу что с точки зрения программирования плат вы не очень и это подтверждает конференция. Что мне тосейчас делать? нужна обычная прога на ввод 7 каналов по максиму в делфи

27.04.2011 15:07:12
#6

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

Re: 780 плата, ваш проект

В каком месте выдает ошибку в проекте конкретней пишите иначе для меня это сообщение ничего не говорит...

27.04.2011 16:21:31
#7

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,495

Re: 780 плата, ваш проект

Судя по всему программа пытается открыть виртуальный слот в котором ничего нет. Слегка подправленный вариант этой программы можно скачать с ftp://ftp.lcard.ru/pub/users/l7xx/l7xxdpr.zip

28.04.2011 11:23:19
#8

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: 780 плата, ваш проект

>Какая разница 7 или 6 ваш продукт и вы его должны сопровождать

Юрий, вероятно, Вы немного не так поняли Paul//'а, мы отнюдь не предлагаем привязываться к конкретным версиям и средам разработки.
Главным источником для разработчика прикладной программы все же является документация к библиотеке, а примеры носят вспомогательный, иллюстративный характер. Я бы сказал даже, что эти примеры предназначены не для того, чтоби их запускать, а для чтения исходного текста программистом, прочитавшим руководство разработчика и собирающимся приступить к написанию своей программы. Примеры часто предельно упрощены (чтобы не загромождать текст) и не претендуют на функциональную завершенность.

В любом случае спасибо за критику.

Юрий
29.04.2011 09:34:32
#9

Гость

Re: 780 плата, ваш проект

Прошу извинение за горячность.Будем работать.
1. Вваших примерах нет вообще коментарий.Я просмотрел ваш новый проект. Я понимаю что он вводит сигнал. Но как, с синхронизацией или нет и тому подобие. Всего только две строки в начале программы.
2.Никто не просит у Вас полной прграммы только вставку, но такую где ваши используемые процедуры  закоментированы, т.е. что данная процедура делает, подчеркиваю только ваши процедуры . Например я не знаю, что в вашем примере делает таймер. Большинство юзеров конечно разберется как нибудь, но пожалейте наше время и свое, мы не будем вас докучать глупыми вопросами Всего 10-15 коментарий в ваших примерах.
3. Ну и наконец об улучшенном примере
при компиляции выдает следущие ошибки

[Warning] Unit1.pas(47): Unsafe type //'SLOT_PAR: old style object//'
[Warning] Unit1.pas(61): Unsafe type //'ASYNC_PAR: old style object//'
[Warning] Unit1.pas(65): Unsafe type //'sl: old style object//'
остальные не привожу они наведенные

29.04.2011 09:46:46
#10

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

Re: 780 плата, ваш проект

Посмотрите Сишный пример L7XX.TST. Там комментов много, принцип один и функции и структуры аналогичны.
Варнинги это не ошибки.... и таки да - пример разрабатывался в Delphi 6 и возможно уже устарел.

Юрий
29.04.2011 20:15:38
#11

Гость

Re: 780 плата, ваш проект

г.Paul Вы меня так и не поняли, я не должен искать в си варианте. он для меня не знаком, если этот продукт ваш вы должны выложить  коментарии для всех компиляторов, За бугром бы ваша фирма погорела при таких  отношениях к покупателю

Программист из Л-Кард
29.04.2011 22:03:19
#12

Гость

Re: 780 плата, ваш проект

г. Paul известен своей лаконичностью. Во вторник постараюсь Вам помочь.

Юрий
03.05.2011 07:13:19
#13

Гость

Re: 780 плата, ваш проект

пока ничего не объясняйте, разбираюсь

Программист из Л-Кард.
03.05.2011 11:30:49
#14

Гость

Re: 780 плата, ваш проект

OK

Юрий
06.09.2011 00:46:17
#15

Гость

Re: 780 плата, ваш проект

Кончилось лето возвращаюсь к вашим барана.Приветствую Вас.Плату L780 я запустил, но многое мне непонятно.  Задача у меня запись с пяти каналов  по максимальной частоте   для любого интервала времени (интервал в рамках разумности   Отсюда и первые вопросы: какой параметр определяет количество каналов и размер вводимого массива по каждому каналу. Второе привожу вашу тестовую прогу отредактированную. Выкинул то что смог. при дальнейшем редактировании программа перестает работать. В основном я выкидывал memo . Меня не интересуют служебные данные платы. Но все memo удалить не удалось почему. Не понял роль Timera Какую роль он выполняет . Какая разница между кнопкой 1 и 2
та как  прога начинает работать при нажатии любой кнопки. Не понял как прога останавливается

  Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,ifc_ldev,ioctl,create, cmd791, StdCtrls, ExtCtrls;
  const
   FIFO = 1024;
   IrqStep = 1024;
   pages = 128;

type
  WA = array [0..1048576] of SHORT;
  PWA = ^WA;

  TForm1 = class(TForm)
    Timer1: TTimer;
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

   pLDev: IDaqLDevice;
  pIUnknown:LUnknown;
  hr:Integer;
  sl:SLOT_PAR;
  dev: THandle;
  pd: PLATA_DESCR_U2;
  ap: ADC_PAR;
  tm: ULONG;
  data:PWA;
  sync:PULONG;


implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Enabled:=False;

   Memo1.Lines.Clear;
   Memo1.Lines.Add(//'Testing library//');

    if(CallCreateInstance(//'lcomp.dll//')=0) then
   begin
      Memo1.Lines.Add(//'Loading library - success.//');
     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.Button1Click(Sender: TObject);

     var s:string;
    pp:ASYNC_PAR;

begin

        pLDev.GetSlotParam(sl);

   //PCIA

           s:=IntToStr(pLDev.ReadPlataDescr(pd));
           s:=IntToStr(pLDev.LoadBios(pd.t1.BrdName));

   

   s:= IntToStr(pLDev.PlataTest);          ;


   pp.s_Type := L_ASYNC_TTL_CFG;
   pp.Mode := 1;
   pLDev.IoAsync(pp);
   pp.s_Type := L_ASYNC_TTL_OUT;
   pp.Data[0] := $A525;
   pLDev.IoAsync(pp);

   pp.s_Type := L_ASYNC_TTL_INP;
   pp.Data[0] := 1;
   pLDEv.IoAsync(pp);

end;

procedure TForm1.Button2Click(Sender: TObject);
begin

    tm := 1024*1024;
   pLDev.RequestBufferStream(tm,L_STREAM_ADC);

//   PCI

         ap.t1.s_Type := L_ADC_PARAM;
         ap.t1.AutoInit := 1;
         ap.t1.dRate := 10.0;
         ap.t1.dKadr := 0.0;
         ap.t1.dScale := 0;
         ap.t1.SynchroType := 3;

         ap.t1.SynchroSensitivity := 0;
         ap.t1.SynchroMode := 0;
         ap.t1.AdChannel := 0;
         ap.t1.AdPorog := 0;
         ap.t1.NCh := 4;
         ap.t1.Chn[0] := $0;
         ap.t1.Chn[1] := $1;
         ap.t1.Chn[2] := $2;
         ap.t1.Chn[3] := $3;
         ap.t1.FIFO := FIFO;
         ap.t1.IrqStep := IrqStep;
         ap.t1.Pages := pages;
         ap.t1.IrqEna := 1;
         ap.t1.AdcEna := 1;

         pLDev.FillDAQparameters(ap.t1);    ÿ  ADS_PAR/DAC PAR
         pLDev.SetParametersStream(ap.t1, tm, data, sync,L_STREAM_ADC);


   Timer1.Enabled:=True;
   pLDev.InitStartLDevice;
   pLDev.StartLDevice;

end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin

   if((data<>NIL) and (sync<>NIL)) then
      Memo1.Lines.Add(//'Sync: //'+IntToStr(sync^) + //' //' +IntToStr(data[0])+//' //' +IntToStr(data[128])+//' //' +IntToStr(data[1024]));


end;


end.

06.09.2011 12:37:35
#16

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

Re: 780 плата, ваш проект

количество канало в ap.t1.NCh ap.t1.Chn[] это логические номера каналов. IrqStep*Pages это кольцевой буфер куда кладуться кадры из Nch отсчетов по кругу. Таймер печатает счетчик собранных данных. Прога останавливалась по закрытию формы. Первым баттоном плата инитилась а вторым  баттоном запускался сбор в кольцевой буфер. Методом твка разобраться с программированием модуля не получиться. Нужны уверенные знания программировании и еще прочитать про модуль с cdrom PCI//L7xx//DOC, а также пример L7XX.TST и еще хелп к LComp.

Юрий
06.09.2011 20:31:26
#17

Гость

Re: 780 плата, ваш проект

Уважаемый паул я прекрасно программирую, но я не системщик, если вы себя считаете корифеем то почему в вашей проге 2 кнопка не заблокирована  до того как нажата 1, а ведь ваша прога что то делает  при нажатии 2 кнопки без нажатии 1. Далее один классик  сказал, что идея материализуется если ею овладевает масса. Т.е. если вы пишите проги для своих плат, то пишите так, что как буд то кругом дураки и эти дураки спокойно овладивают вашими платами. Как я уже говорил с платами фирмы Руднев Шиляев проблем не было, все очень понятно. Я вам прислал заготовку отредактированную , но не до конца, мне необходимо убрать все memo чтобы плата просто собирала данные без всяких выводов данных платы. Заранее благодарен за помощь

07.09.2011 10:33:00
#18

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

Re: 780 плата, ваш проект

Я не вижу никаких принципиальных препятствия для удаления стандартного компонента Delphi Memo из примера. Параметры сбора данных задаются структурой ADC_PAR (см описание в хелпе LComp). Про временные dRate и dKadr см стр. 12 руководства программиста (cdrom//PCI//L7XX//DOC). Про размер кадра и логический номер канала см стр9 там же. Про синхронизацию стр 39. Праметры структуры аналогичны тем что описаны в функции SYNCHRO_CONFIG_PLX. Размерные параметры циклического буфера можно не трогать. Далее после старта сбора данных любым удобным способом нужно отслеживать занчение переменной sync (та что по таймеру в примере печатается) которая циклически показывает сколько отсчетов введено в кольцевой буфер и в зависимости от ее значения любым удобным способом забирать данные АЦП из массива data. В простейшем случае отслеживать  прохождение sync середины буфера и забирать соответствующую половину массива. При выборе способа нужно учитывать скорости заполнения буфера и реакции программы. Рекоменую использовать TThread.

Юрий
12.09.2011 11:52:49
#19

Гость

Re: 780 плата, ваш проект

tm := 1024*1024;  // количество отсчетов

tm - должен быть кратным количеству каналов?

какой формат слитываемого отсчета в делфи?

Юрий
12.09.2011 14:02:57
#20

Гость

Re: 780 плата, ваш проект

как завязаны между собой FIFO  IrqStep pages

13.09.2011 09:02:25
#21

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

Re: 780 плата, ваш проект

tm это выделенная память под буфер в отсчетах. задействуется только ее часть IrqStep*Pages при сборе. Отсчет знаковый 16 бит. Кратность не обязательна. В общем смысле FIFO это половинка буфера для отсчетов в плате. IrqStep это шаг генерации прерываний и порция при этом вычитываемых данных.Для простоы желательно задавать IrqStep=FIFO. Pages это мультипликатор для задания размера кольцевого буфера как Pages*IrqStep.

Юрий
14.09.2011 08:17:05
#22

Гость

Re: 780 плата, ваш проект

1 несовсем понятно с этими fifo page  и т.д.
частота 420 кгс.( т.е. на каждый канал 60 кгс.)
какие желательны FIFO IrqStep Pages.
2 если ap.t1.AutoInit := 1; как останавливать прграмму

14.09.2011 23:22:33
#23

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

Re: 780 плата, ваш проект

ну например 1024 1024 и 128. останавливать StopLDevice.

Юрий
15.09.2011 08:24:53
#24

Гость

Re: 780 плата, ваш проект

Кажется дошли до главного основного вопроса. в остальном вроде все понятно.

Судя по записи

WA = array [0..1048576] of SHORT;
  PWA = ^WA;
........
.........
  data:PWA;
  sync:PULONG;

data  массив с указателем

Подаю синус получаю не синус , наверно не правильно беру выборку из массива. Вопрос следущий
если  data SHORT  и какая то переменная  j SHORT
как и связать j:=... data(i).. через какой то индекс i?

Юрий
19.09.2011 17:01:42
#25

Гость

Re: 780 плата, ваш проект

Кажется дошли до главного, основного вопроса. в остальном вроде все понятно.

Судя по записи вашей проги

WA = array [0..1048576] of SHORT;
PWA = ^WA;
........
.........
data:PWA;
sync:PULONG;

data массив с указателем

Подаю синус получаю не синус , наверно не правильно беру выборку из массива. Вопрос следущий :
если data SHORT, какая то переменная j та же SHORT,
как и связать j:=... data(i).. через какой то индекс i?