Меню
+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
|
||||
|
Возникает ошибка при написании собственного ПО в delphiЗдравствуйте! Значения в module после строки вроде обновляются. С модулем работал через LGraph, через UTSpro появляются ошибки. Прошу подсказать в чем может быть причина. |
|||
|
||||
|
Re: Возникает ошибка при написании собственного ПО в delphiБиблиотеки используете последние? Если нет --- можете обновить из http://www.lcard.ru/download/ltrdll.exe. А то что-то из последних библиотек не вижу, как они могут возвращать -6007 из LTR22_Open()... Правильно ли я понял, что он не работает и в LGraph и в UTSPro? Что пишет UTS Pro и в какой момент? |
|||
|
||||
|
Re: Возникает ошибка при написании собственного ПО в delphiв LGraph работает. в UTSPro появляется ошибка при запуске теста если нажать вкладку меню RUN (внутри тесты есть). |
|||
|
||||
|
Re: Возникает ошибка при написании собственного ПО в delphiНу вообще в UTSPro набор тестов он не предназначен для пользователей и в общем-то они не должны проходить без специального оборудования/подключения. Что касается примере, то пример действительно странный..... Видимо остался какой-то старый со старой библиотекой и объявлениями..... Чтобы сделать его рабочим нужно:
где вместо 9 указать номер слота, в котором реально у Вас стоит модуль P.S.: Пример, конечно, по возможности заменим.... |
|||
|
||||
|
Re: Возникает ошибка при написании собственного ПО в delphiЗдравствуйте! в основной процедуре я добавил:
в TestADCStartStop добавил вывод полученных значений
Длину массива сделал меньше с 1000 (было в примере) до 4. Датчик проверял с помощью в LGraph (да и в принципе он рабочий), если его потрясти то на диаграмме видны возмущения. В примере такого достигнуть не получается. |
|||
|
||||
|
Re: Возникает ошибка при написании собственного ПО в delphiУ Вас может быть включен режим измерения нуля. Также проверить остальные настройки (отсечку постоянной составляющей, диапазоны каналов и т.п.), соответствуют ли Вашей задаче |
|||
|
||||
|
Re: Возникает ошибка при написании собственного ПО в delphiЗдравствуйте еще раз. 2. Можете еще пояснить фразу в документе: На выходе данные сортируются по каналам, по порядку, то есть если включены каналы 0,2,3, и получены по 100 результатов на канал, то выходной: .... В чем недопонимание: Если я заполняю массив длиной 512, то данные с канала 0 я получаю с метода for I:=0 to 32 do MASSIVKANALA0(I) := OBSHIIMASSIV(I) 3 Длина массива куда записывается информация должна чем то регламентироваться? 4 В документации есть расхождения http://www.lcard.ru/download/ltr22api.pdf см. стр 13 и http://www.lcard.ru/download/ltr.pdf см. стр 185 Сетка частот АЦП. По массивам частот. Это так и должно быть? Просто пояснений я не увидел, а различия есть. |
|||
|
||||
|
Re: Возникает ошибка при написании собственного ПО в delphiP.S. Сформулировал грамотнее вопрос 3 3 Должна ли длина массива в который записывается информация чем то регламентироваться? |
|||
|
||||
|
Re: Возникает ошибка при написании собственного ПО в delphi1. Перевод в величины осуществляется по формуле где x - значение после применения фабричных коэффициентов (как описано в описании ProcessData), y - значение после перевода в величины, ch_num - номер канала (от 0 до 3), hnd - структура TLTR22 для данного модуля, range - номер диапазона для этого канала (т.е. на каждый канал, диапазон и частоту модуля задаются свои коэффициенты). Изначально, после вызова LTR22_Init() коэффициенты эти устанавливаются в значения, чтобы перевести именно в Вольты (т.е. например для 2 Вольтового диапазона UserCalibScale = 2/65536, UserCalibOffset = 0. Соответственно при желании пользователь может заменить их на какие-то свои. 2. Если честно я не до конца понял, что именно Вы получили. Если у Вас например разрешено 4 канала и вы приняли через Recv() 512 слов и передали их в ProcessData() (и ProcessData() вернула тот же размер 512), то на выходе должно быть первые 128 элементов - отсчеты канала 1, следующие 128 - канала 2 и т.д. 3. Ну главное что массив должен быть размером, достаточным для сохранения того количества слов, которое вы передаете параметром в Recv() или ProcessData(). В ProcessData() размер массива также должен быть кратен количеству разрешенных каналов. В остальном явного ограничения нет. 4. Я нашел различия на 1 в последней цифре некоторых частот. Вы это имеете ввиду? Это по видимому связано просто с тем, что по разному округлены частоты до целого числа Гц, в ltr.pdf округление до ближайшего, а в ltr22api.pdf отброшена дробная часть. Точное значение частот можно получить по формуле, которая приведена в ltr.pdf |
|||
|
||||
|
Re: Возникает ошибка при написании собственного ПО в delphiпо 1, 2 и 4 п. все понятно. По 3-ему есть все же непонимание. Если у меня массив 512 слов и я его отправляю в Recv() длина массива не будет влиять на качество полученных данных, например некоторые будут повторяться или если заложу короткий массив из 4х слов я например потеряю чувствительность. Если предположить что при записи каждого слова в массив требуется время и, например частота обновления данных может не согласоваться с частотой необходимой для обновления данных. Короче: Размер массива может повлиять на качество получаемых данных? |
|||
|
||||
|
Re: Возникает ошибка при написании собственного ПО в delphiТут несколько другой принцип. Количество отсчетов, передаваемых модулем в секунду, определяется заданной частотой АЦП и количеством разрешенных каналов. Т.е. условно говоря если частота 78125 и 4 разрешенных каналов, то модуль передает 4*78125 слов в секунду, которые складываются в очередь на ПК. Соответственно если Вы приняли 512 слов (по 128 на канал), то время, когда были выполнены измерения, в результате которых были получены два соседних отсчета, будет всегда 1./частоту АЦП. При этом Вы должны всегда откачивать данные из очереди, если Вы будете принимать из очереди с меньшей скоростью, чем данные приходят от модуля, то в конце концов очередь переполнится (в этом случае на месте разрыва данных Recv() вернет ошибку). Вариантов как это реализовать может быть несколько. Например, можно в отдельном потоке принимать данные заданными порциями с большим взятым таймаутом с запасом и их обрабатывать блоком. В качестве примера можно посмотреть например пример на Delphi для LTR24. |
Страницы 1
Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2
Многоканальный телефон:
+7 (495) 785-95-25
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru
Время работы: с 9-00 до 19-00 мск