Меню
+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
Добрый день/вечер/ночь!
Не знаю, обратит ли кто-то из поддержки на моё сообщение в столь древней ветке, но надеюсь, что сможет.
Дело в том, что на работе нашел старые модули LCard (LC-010E/012, LC-212F, LC-401, LC-402? LC-014).
Понимаю, что это раритет, но захотелось "поиграться" (жать просто выбросить). Если не затруднит - вышлите
все, что можно, на мыло (s_gashkov@mail.ru). Особенно все, что касается программирования сих монстров.
Желательно на Паскале (Delphi).
Буду очень признателен.
С уважением
С.Гашков
СПАСИБО! Проблема решена.
Действительно установка выравнивания на 4 байта сработала.
Для тех, кто получит подобную ошибку как у меня (у меня Delphi 7) поясняю пошагово как исправить ситуацию:
1. При загруженном проекте идем в меню Project/Options
2. Выбираем вкладку Compiler, и на ней устанавливаем (выбираем) Record field alignment значение 4.
3. ПОЛНОСТЬЮ перестраиваем проект: меню Project/Build <имя проекта>.
Еще раз спасибо!
Спасибо за оперативный ответ. Сейчас нет доступа к "железу". Буду проверять на следующей неделе.
Прошу прощения, в предыдущем сообщении допустил ошибку в коде заполнения таблицы каналов.
В действительности нумерация от "0":
LChTbl[LChQnt]:= LTR114_CreateLChannel(MeasMode, i-1, Range);
Подскажите, пожалуйста, как определить источник ошибки -10021 в программе на Delphi c модулем LTR114.
Всю программу приводить не имеет смысла (очень большая + куча дополнительных опций). Опишу основные моменты:
1. В системе используются (помимо дискретных блоков LTR41 и LTR42) измерительные блоки LTR114 и LTR212 (2 шт.).
2. Измерительные модули "работают" в отдельных потоках (один для модулей LTR212 и один для модуля LTR114).
3. При начальной отладке (сначала по отдельности, а затем при совместной работе) показания штатным образом
считывались в программу и отображались в программе. Частота обработки данных в программе невысокая
(1 сек. для LTR212 и 3 сек. для LTR114), поэтому LTR212 опрашивались непрерывно (данные переписывались в буфер,
а оттуда по сигналу таймера выводились для дальнейшей обработки), а для LTR114 данные в потоке получались
с помощью функции LTR114_GetFrame, записывалиь в буфер, затем поток засыпал до срабатывания 3-х секундного таймера.
4 После доделки и некоторой "модернизации", программа работала на прием данных с LTR212 без нареканий, а вот
попытка снова получить данные LTR114 (не отображаемые на начальном этапе отработки) столкнулись с трудностью.
Отладка показала, что ошибка возникает при инициализации модуля (привожу часть программы опуская несущественные
подробности):
Result:= LTR114_Init(pLTR114); // Result= LTR_OK
Result:= LTR114_Open(pLTR114, NetAddr, PortNum, @SerNum[1], ASlotNum); // Result= LTR_OK
Result:= LTR114_GetConfig(pLTR114); // Result= LTR_OK
with hLTR114 do begin
Interval:= ...
SyncMode:= ...
FreqDivider:= ...
SpecialFeatures:= ...
AdcOsr:= 0;
LChQnt:= 0;
for i:=1 to 8 do begin
LChTbl[LChQnt]:= LTR114_CreateLChannel(MeasMode, i, Range);
Inc(LChQnt);
end;
end;
Result:= LTR114_SetADC(pLTR114); // А ВОТ ЗДЕСЬ - Result= -10021 !!!
Result:= LTR114_Calibrate(pLTR114);
Для меня эта ситуация непонятна, связь с работой потока с LTR212 я отмел (весь посторонний код удалил).
Восстановил старую версию программы - она работает, однако при попытке выделить только код для LTR114 что-то
видимо "поломалось" (очень много вспомогательного кода удалял) и опять появилась та же ошибка.
Подскажите, пожалуйста, в каком направлении нужно копать? Как локализовать источник ошибки?
Страницы 1
Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2
Многоканальный телефон:
+7 (495) 785-95-25
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru
Время работы: с 9-00 до 19-00 мск