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

L-305, Delphi 6, прерывания под Win9x

Вы не вошли.

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

Valentin
13.01.2002 16:44:56
#1

Гость

L-305, Delphi 6, прерывания под Win9x

  У нас 4 платы L-305 и CD, созданный 18.10.1998.
При программировании плат в Delphi 6 используем
DLL-библиотеку lcard_32.dll с CD, которая не обес-
печивает полностью работу с прерываниями. Мы убе-
дились в том, что прерывания происходят, но нет
корректного выхода из них, поскольку обработчик
прерываний (в DLL-библиотеке lcard_32.dll) содер-
жит директиву interrupt, которую не поддерживает
Delphi 6. Программа LSetup c CD полностью работа-
ет с прерываниями. Может быть, работу с прерывани-
ями обеспечивает DLL-библиотека из каталога DLL//NEW, который часто упоминается переписке?
  Наши вопросы:
1) как правильно организовать работу с прерывания-
ми при программировании в Delphi 6;
2) нельзя ли получить содержимое каталога DLL//NEW?

14.01.2002 09:39:33
#2

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

Re: L-305, Delphi 6, прерывания под Win9x

Надо просто брать примеры из директории DLL//OLD//PRIMERS - там правильно описаны обработчики. В директории DELPHI примеры для 16 битного Delphi

14.01.2002 09:40:29
#3

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

Re: L-305, Delphi 6, прерывания под Win9x

DLL//NEW - на нашем сайте в библиотеке файлов файл lgraph.zip

Valentin
16.01.2002 19:47:29
#4

Гость

Re: L-305, Delphi 6, прерывания под Win9x

Жаль, но:
  1) директории DLL//OLD//PRIMERS на нашем CD нет;
  2) LGraph поставили, а при запуске он говорит
      "Файл LGRAPH.EXE связан с отсутствующим
       компонентом KERNEL32.DLL: Cancello".
     Win95rus 4.00.950 B, comctl32 перекидывали.
Разбираемся с "библиотекой". Но очень бы хотелось бы запустить подготовленную программу, использующую LCard_32.dll. Вынуждены спросить - что не так в нашем примере (Delphi 6):
==================================
unit Unit1;
.........
var
  Form1: TForm1;
  Cnt : integer;

implementation
......................
procedure IntHandler;
begin
  inc(Cnt);
  RESET_IRQ
end;

procedure TForm1.BStartClick(Sender: TObject);
begin
  INIT_SIMPLE_INTR(30000,0,@IntHandler)
end;

procedure TForm1.BStopClick(Sender: TObject);
begin
  STOP_INTR
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Edit1.Text := IntToStr(Cnt)
end;

end.
========================
Получаем одно прерывание и сообщение:
"Программа выполнила недопустимую операцию".
Если записать так

procedure IntHandler;
begin
  inc(Cnt);
  STOP_INTR
end;

то все в порядке, но одиночные прерывания - это не работа sad

17.01.2002 09:44:39
#5

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

Re: L-305, Delphi 6, прерывания под Win9x

Зайдите на нашем сайте в раздел библиотека файлов и скачайте primers.zip dll.zip lsetup.zip - это последние версии lcard_32.dll и примеров.
Там посмотрите пример irq_cc32.dpr - там правильно описан обработчик прерывния.
procedure IrqHandler(p:pointer);stdcall;
{}

Valentin
17.01.2002 12:07:22
#6

Гость

Re: L-305, Delphi 6, прерывания под Win9x

Спасибо!
Все работает. Ключ - в (p:pointer).
Жаль, из документации мы этого как-то не поняли.
Возникают два дополнительных вопроса:
1) какой смысл р?
2) какой смысл THandler, возвращаемый функциями включения прерываний (например SOFT_INTR)

Спасибо.

Valentin
17.01.2002 12:18:18
#7

Гость

Re: L-305, Delphi 6, прерывания под Win9x

Ага! Кажется, первый вопрос мы можем снять. Параметр для того, чтобы убрать лишнее слово со стека? Вместо iret?

17.01.2002 13:22:00
#8

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

Re: L-305, Delphi 6, прерывания под Win9x

Честно говоря я не знаю - это наследие работате и хорошо. THandler ни где не используется.

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск