Меню
+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
|
||||
|
E502 и Raspberry Pi 3Здравствуйте. Подскажите пожалуйста, почему возникает ошибка -140 при вызове функции X502_ProcessData(), при чем характер возникновения, не регулярный. Т. е. может обработать 1 блок и выдать ошибку, а может и 12к блоков обработать. Исходный код взят из примера x502_stream_read без изменений. |
|||
|
||||
|
Re: E502 и Raspberry Pi 3Добрый день. Если обновление не поможет, тогда видимо нужно будет сохранять в файл поток из Recv до ProcessData, чтобы увидеть, как выглядит нарушение данных. Работаете по USB или Ethernet? В примере сами настройки сбора данных изменяли или вообще никаких правок не было? Какой дистрибутив Linux используете? |
|||
|
||||
|
Re: E502 и Raspberry Pi 3Алексей L Card пишет:
Алексей, здравствуйте. |
|||
|
||||
|
Re: E502 и Raspberry Pi 3При просмотре сохраненного буфера, выяснилось что потеряна часть отсчетов. В OS Ubuntu 16.04 такой проблемы нет, от слова совсем. Тестировал в течении трёх недель. Я так понимаю данная проблема связана с самой OS Raspbian. Подскажите пожалуйста как с этим справиться. |
|||
|
||||
|
Re: E502 и Raspberry Pi 3А как именно Вы определили, что потеряна часть отсчетов? Как выглядели данные? |
|||
|
||||
|
Re: E502 и Raspberry Pi 3Здравствуйте Алексей. Потерю отсчетов выявил просматривая проблемную часть буфера, оказалась нарушена последовательность нумерации каналов. Также мне пришлось немного переписать код. (-- -- 00 D0 -- -- 00 D1 -- -- 00 D2 -- -- 00 D3 -- -- 00 D1 -- -- 00 D3). Плюс размер буфера был меньше заданного (timout установил заведомо большим). Отключение цифровых входов и изменение частоты не как не влияет на возникновение данной ошибки. Что как мне кажется указывает на причастность OS к данной проблеме. |
|||
|
||||
|
Re: E502 и Raspberry Pi 3В смысле Recv вернул меньше, чем запрашивали? При этом именно на том блоке, где ошибка (или сперва блок меньше размером, а в следующем ошибка)? |
|||
|
||||
|
Re: E502 и Raspberry Pi 3И под размером буфера Вы имеете ввиду значение, которое вернула Recv или уже размер обработанных данных, который вернула функция ProcessData? |
|||
|
||||
|
Re: E502 и Raspberry Pi 3Здравствуйте, Алексей. Постараюсь ответить на все вопросы. Алексей L Card пишет:
Параметры READ_BLOCK_SIZE=131072 и READ_TIMEOUT=600. Как я понял размер буфера возвращаемого Recv() равен 131072 значений, при этом функция вернёт эти данные не дожидаясь таймаута, согласно руководству программиста. Далее. Да, функция возвращает блок меньшим размером чем запрашиваемый и соответственно последующий вызов функции ProcessData() возвращает ошибку. Алексей L Card пишет:
Сбой последовательности отсчетов именно в середине последнего принятого блока. Время выполнения функции Recv() при этом меньше установленного таймаута также как и в предыдущих вызовах данной функции, т. е. как я понимаю драйвер считает что он принял все отсчеты правильно. Алексей L Card пишет:
Если же проигнорировать ошибку и вызвать ещё раз Recv(), то программа продолжает работать. Т.е. как вариант решения данной проблемы. Но хотелось бы не терять ни одного отсчета. В L-Card Measurment Studio такая же ситуация, выдаёт ошибку -140 и продолжает показывать графики пока не закроешь окно об ошибке, только после этого сбор данных с ацп прекращается. Алексей L Card пишет:
Обнуление буфера перед вызовом Recv() не дало эффекта, в данных также имеются разрывы, самое обидное это когда пропущен отсчет в по каналу в последнем кадре. Алексей L Card пишет:
Да это реальный пример. Только разрывы носят произвольный характер, может быть пропущен один отсчет в самом последнем кадре буфера. |
|||
|
||||
|
Re: E502 и Raspberry Pi 3И ещё просмотр логов системы не дал ни каких результатов. |
|||
|
||||
|
Re: E502 и Raspberry Pi 3А можно несколько примеров возвращаемого значения функцией Recv, когда оно не совпадает с запрошенным 131072 (в примере значение переменной rcv_size), чтобы понять порядок отличия. И это различие всегда разное? |
|||
|
||||
|
Re: E502 и Raspberry Pi 3Здравствуйте, Алексей. Алексей L Card пишет:
READ_BLOCK_SIZE = 131072 -- rcv_size =12367 Алексей L Card пишет:
Да частота выставлена 2 МГц. Алексей L Card пишет:
Вы абсолютно правы, Алексей. Измерение выполнения функции Recv(), подтвердило выход по тайм ауту. |
|||
|
||||
|
Re: E502 и Raspberry Pi 3Здравствуйте, Алексей. |
|||
|
||||
|
Re: E502 и Raspberry Pi 3Спасибо за информацию. |
|||
|
||||
|
Re: E502 и Raspberry Pi 3День добрый! |
|||
|
||||
|
Re: E502 и Raspberry Pi 3Добрый день. Так что тут скорее всего понадобится уже непосредственно linux-приложение собранное под нужную архитектуру. А какие возможности используете в LGraph и когдие у Вас сроки создания стенда? |
|||
|
||||
|
Re: E502 и Raspberry Pi 3Алексей L Card пишет:
Ну по внешнему сигналу происходит начало записи, после чего смотрим графики и скриним их) Просто в вашем приложении удобно настраивать тип ввода данных, частоты, диапазоны и тд и сразу проверять работает или нет. Плюс настройка визуализации и просмотр графиков очень удобный. Просто я не особо умею писать какие-либо программы (опыта вообще нету) и честно не уверен, смогу ли сделать хоть какое-то подобие LGraph с нуля Времени вагоны еще, просто хотелось малой кровью обойтись, только скрипт для фильтрации выходных данных написать, так как встроенные в Lgraph алгоритмы фильтрации слишком мудреные и так не смог получить нужные мне результаты в течении долгого времени. Измеряем давление воздуха, выпускаемого из пневмопушки, чтобы проверять ее быстродействие и возможность генерации нескольких выстрелов подряд и как при этом она себя ведет. Планируется писать на Питоне, так как Делфи в нативном виде на малину тоже нету, только паскаль с какими-то надстройками, плюсы слишком сложная тема |
|||
|
||||
|
Re: E502 и Raspberry Pi 3Ну вагоны времени понятие относительное... Конец этого года, начало следующего или все же раньше? |
Страницы 1
Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2
Многоканальный телефон:
+7 (495) 785-95-25
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru
Время работы: с 9-00 до 19-00 мск