Меню
+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Модуль открыт успешно. Информация о модуле:
Название модуля = LTR25
Серийный номер = 5T362663
Версия FPGA = 11
Версия PLD = 1
Ревизия платы = 1
Темп. диапазон = Коммерческий
Узел TEDS канала 3:
Тип микросхемы = EEPROM_1K
Размер памяти = 128
Размер данных TEDS = 124
Не удалось прочитать память узла TEDS. Ошибка LTR25_ERR_TEDS_DATA_CRC: Неверное значение контрольной суммы в прочитанных данных TEDS
tedsdata.bin: https://www.lcard.ru/forums/img/members … ata_bin.7z
К сожалению не получается прочесть данные.
SetSensorsPowerMode(ltr25api.SensorsPowerModes.TEDS); //OK
//для кажого канала
TEDSNodeDetect(i, out TEDS_NODE_INFO devinfo); //OK
// в структуре: {Valid=true, DevFamilyCode=EEPROM_1K}
// а вот чтение
TEDSReadData() //LTR25_ERR_TEDS_DATA_CRC
//прочитанно пишет 31 байт, но массив постой
Что-то не сошлась контрольная сумма (LTR25_ERR_TEDS_DATA_CRC ).
На Ltr25 используется АКСЕЛЕРОМЕТР ВС 110: https://zetlab.com/shop/datchiki/aksele … tr-vs-110/
Добрый день!
Разрабатываю приложение на C# и для взаимодействия с крейтами использую бибоиотеку ltrModulesNet.dll.
При работе с Ltr25 мне понадобилось добраться до данных TEDS. Метод TEDSReadData позволяет считать массив байт.
Вопрос: как этот массив байт обработать? Нашел описание библиотеки ltedsapi.dll которая поидее должна решить мои проблемы , но в ltrModulesNet.dll ничего похожего не нашел. Для ltedsapi.dll есть C# вариант?
С уважением, Антон.
Всем добрый день.
Прошу прощения, эксперименты и скриншоты ранее сделать не удалось, разбирался с Windows 10.
Сейчас, после обновления системы, проблема не воспроизводится и все отрабатывает корректно.
Видимо, проблема была на уровне ОС, но в чем именно - не ясно. В любом случае сейчас данные приходят.
Всем спасибо!
PS: тему можно удалить как не состоятельную.
Хорошо, вечером скриншоты сделаю..
В качестве примера использую http://www.lcard.ru/download/examples/l … api_cs.zip
Но я использовал исходный пример в котором задал номер слота, указал частоту 78КГц и включил 3й канал к которому подключен гидрофон. Позже увеличивал значение RECV_BLOCK_CNT до 50 чтобы дождаться данных.
Здравствуйте.
Приходят именно нулевые данные (значение ровно ноль) или какие-то переменные значения в районе нуля? ch_status при этом в примере получаете в это время ltr25api.ChStatus.OK или другой?
Параметры сбора (частота АЦП, диапазоны каналов, список разрешенных каналов и т.д.) в программе на основе примера и LGraph2 одинаковые? какие?
Что подключено ко входам LTR25?
Статус валидный ChStatus.OK, данные именно нулевые, даже "шума" нет.
Добрый день, пытаюсь наладить сбор данных от Ltr25 на C#.
В качестве примера использую http://www.lcard.ru/download/examples/l … api_cs.zip
Пример рабочий, данные успешно приняты.
Проблема заключается в том, что при повторном запуске примера - получаю нулевые данные. При увеличении количества блоков RECV_BLOCK_CNT удалось дождаться когда данные "пробьются". То есть в конечном счете данные приходят, но при этом первые несколько секунд получаю нулевые данные.
При этом эта задержка (после запуска примера) проявляется и переходе в LGraph2 (секунд 5 идут нулевые данные).
Но при этом в самом LGraph2 (без запуска примера) не удалось воспроизвести подобное поведение.
В чем может быть проблема и как с ней можно бороться?
Спасибо!
Да, имею ввиду красно-зеленое мигание.
нет, все-таки оно работает дольше, но все-равно со временем начинает мигать красным... в LGraph при этом нормально
Прошу прощения за слабо информативный пост, это было в порыве отчаяния после напрасного переписывания кода в третий раз.
Если кратко о проекте. У меня головное приложение пишется на C#. С lcomp работаю не на прямую, а через собственную dll на с++ (выступает в роли api). В этом api выделил метод для инициализации в котором подгружается библиотека lcomp (например init):
#ifdef WIN64
CallCreateInstance("lcomp64.dll");
#else
CallCreateInstance("lcomp.dll");
#endif
В C# точка входа выглядит примерно так:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
Внимание: Есть разница где вызывать метод загрузки (init)!
Я по началу дожидался события что форма загружена, загружал библиотеку и с ней начинал работал и получал стабильную работу не более 2х крейтов.
НО! Если загрузку выполнить в конструкторе формы - то у меня заработали и 3 крейта без намека на переполнения буфера.
Данное поведение я пока не могу объяснить, еще буду разбираться и проверять, но разница есть - это факт.
PS: хотел поделиться своими наблюдениями, вдруг будет полезно
нет, все-таки оно работает дольше, но все-равно со временем начинает мигать красным... в LGraph при этом нормально
E20-10 ревизия B, AVR ATegra 162 версия 2.3 от 2014 - не давно обновлял, стояла старая от 2008.
Сейчас повысил приоритет запускаемому процессу и пока вроде все работает нормально, но все-таки хочется понять в чем узкое место заключается.
Можно отвлеченный вопрос, возможно глупый
Как библиотека lcomp контролирует отбор данных пользователем (в lusbapi там через event ожидался асинхронный вызов)?
Имеется 3 модуля E2010, написал модуль сбора данных (за основу взял пример l7xx.tst). Но почему-то иногда крейт начинает мигать красной лампочкой. Я так понимаю, это переполнение буфера. 100% взаимосвязи я не нашел, бывает что все работает долго, а бывает через пол минуты уже горит красным.
Как с этим можно бороться? В чем заключается узкое место, на что обратить внимание?
В Synchro.exe ведет себя ожидаемо, при смене на режим 'Внешний по фронту' или 'Внешний по спаду' останавливается сбор данных и ожидается внешний сигнал
Еще одно уточнение, данное поведение было обнаружено программно при работе через lcomp. После чего убедился что в Lgraph поведение такое же.
Это я понимаю и разумеется будет сигнал, но пока для теста используется кнопка. К моей проблеме эффект дребезга не совсем относится (старт по внешнему сигналу после смены режима).
Суть эксперимента по шагам:
1) в Lgraph крейтам выставляю синхронизация старта "по нажатию кнопки с трансляцией сигнала старт"
2) нажимаю кнопку старт в приложении
3) сбор данных начался, останавливаю
4) в Lgraph крейтам выставляю синхронизация старта "внешняя цифровая по переходу 0-1"
5) нажимаю кнопку старт в приложении
6) сбор данных начался !!!
7) останавливаю сбор данных, повторно нажимаю кнопку старт в приложении
8) и теперь наконец крейты ожидают внешнюю команду, в моем случае "тумблер" после срабатывания которого начался сбор данных.
Собственно эффект дребезга на шаге 7 мне пока не интересен. Не понятно почему начался сбор данных на шаге 6. На шаге 1 если выбрать без трансляции - то ожидаемо работает.
Это я проверял на версии Lgraph 2.34.42
При этом данный эксперимент у меня полностью воспроизвелся и на версии 2.34.44. Но есть маленькое отличие: если на шаге 4 выставить по переходу 1-0, а не 0-1, то на шаге 6 сбор данных не начинается автоматически, а ждет "тумблера", то есть ожидаемое поведение. (в версии 2.34.42 - это все равно не работало)
Такое ощущение что какое-нибудь состояние/регистр не сбрасывается при смене режима.
PS это я снова продел уже с прошивкой "AVR ATmega 162 вер. 2.3 Jul 2 2014", к сожалению разницы не нашел
Изменения есть: если после "по нажатию кнопки с трансляцией сигнала старт" изменить на "внешняя цифровая по переходу 0-1" - то эффект остался - первый прогон холостой.
Но! при этом заработал режим "внешняя цифровая по переходу 1-0" - ожидает кнопку сразу же, ведет себя ожидаемо.
Спасибо, вечером проверю.
Но я не думаю что это связано именно с Lgraph. Данное поведение я обнаружил программным путем, работая с lcomp. Позже убедился что Lgraph ведет себя так же.
к сожалению эффект такой же.
при смене режима "по нажатию кнопки с трансляцией сигнала старт" на "внешняя цифровая по переходу 0-1" - первый старт не дожидается команды.
Антон, напишите свой e-mail. Вышлем.
deripas@yandex.ru ,спасибо.
Не выходит скачать
Данные актуальные, следов "мусора" от предыдущего сигнала, не нашел.
Добрый день. Пытаюсь несколько e20-10 синхронно стартовать в Lgraph2 внешней командой (кнопкой). Для этого всем им выставляю в настройках "внешняя цифровая по переходу 0-1". В целом, это работает, за исключением одного НО. Если крейты до этого работали с конфигурацией "по нажатию кнопки с трансляцией сигнала старт" - то при следующем старте они не дожидаются нажатия кнопки, а сразу стартуют. Но после остановки, при следующем старте, как положено ожидают нажатия кнопки.
Такое ощущения, что где-то не обнуляется флаг и считается что в первый раз сигнал старт уже пришел... настройки "по переходу 1-0" ведут себя также. Что может быть не так?
А зачем так? По сети как раз лучше тащить только коды АЦП по два байта, а уже в плагине их превращать в расчетный канал.
Разумеется я по сети передаю коды АЦП... и в плагине их превращаю в расчетный канал... это я считал поток записи в файла и он получается внушительным из-за расчетных каналов. диск все-таки медленное устройство.
Да, Вы все правильно поняли.У расчетных каналов тип данных фиксированный - double (8 байт, плавающая точка).
Эх... и тут подстава)
Проблема вот в чем: E20-10 дает поток данных почти 20 Мб/сек. их 4 шт и суммарный поток под 80 Мб/сек. - в пределах разумного.
НО! если два устройства прокидывать по сети и делать расчетными то поток возрастает да 40 + 40 * 4 = 200 Мб/сек - а это уже жестоко... а я как-то сразу об этом не подумал
Будем думать дальше ...
Еще хотел уточнить про запись файла.
Как я понимаю в файл пишутся исходные кадры полученные от устройства (в данном случае Е20-10), тоесть последовательность short*.
А в случае с расчетными каналами? Я так понимаю пишутся кадры типа double? и тип данных расчетных каналов фиксированный?
Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2
Многоканальный телефон:
+7 (495) 785-95-25
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru
Время работы: с 9-00 до 19-00 мск