Захват сигнала. ПЗС датчика.

Захват, обработка и генерирование сигнала
Ответить
Kayfolom
assistant
assistant
Сообщения: 119
Зарегистрирован: 16 фев 2009, 12:55
Версия LabVIEW: 8.6
Контактная информация:

Захват сигнала. ПЗС датчика.

Сообщение Kayfolom »

Хорошего дня.

У меня стоит задача разработать ПО по захвату сигнала с ПЗС датчика.
К самой железке прилагается dll для работы с ней. Я реализовал функции по
инициализации, установке параметров, но вот захват сигнала не идёт.
Вот описание функции GetData из документа по описанию всех функций dll:
" 3.24 CCD_GetData
function CCD_GetData ( ID : Integer; pData : PDWORDArr) :
boolean; stdcall;
Функция CCD_GetData используется для получения данных
(результатов регистрации).
pData – указатель на массив DWORD. Длина выделенной
памяти должна быть эквивалентна числу пикселов
ПЗС-датчика и числу установленных регистраций
(4*Npixels*Nframes). Функция применима только для камер
на основе ПЗС-линейки. Используется совместно с
функцией CCD_InitMeasuring. В новых разработках и для
всех камер на основе ПЗС-матрицы следует использовать
функцию CCD_InitMeasuringData. Если к компьютеру подключено несколько приборов, то ID
используется как идентификатор ПЗС-прибора. ID может
принимать значение 0,1,2.
Если используется один прибор, то ID = 0.
Если функция выполнила операцию правильно, то она
вернет значение TRUE.
"
конфигурацию вызова dll прилагаю, скажите, пожалуйста, может у меня
что нет так с параметрами? Функция мне возвращает 0 и пустой массив.
Количество пикселов 512, количество кадров - 1.
С датчиком также идёт программа на С написанная, там измерения идут в нормальном режиме.
Производитель dll пишет, что "Память выделяется в байтах.
GetMem(pData, Round(Np*SizeOf(DWORD)*Nf));
Размер двойного слова 4 байта. "
Помогите разобраться, что к чему.

Спасибо.
Вложения
1.png
2.png
3.png
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Захват сигнала. ПЗС датчика.

Сообщение dadreamer »

Сходу видно некорректность: прототип функции выглядит так:

Код: Выделить всё

function CCD_GetData(ID: Integer; pData: PDWORDArr): boolean; stdcall;
А в :labview: вы определяете функцию как
uint8_t CCD_GetData(int32_t *pData, int32_t ID);
Видите разницу? :wink:
Далее, размер массива должен быть Round(Np*SizeOf(DWORD)*Nf), а конкретнее "Число пикселей" х 4 х "Число кадров", то есть в вашем случае 512 х 4 х 1, а вы выделяете 512 х 1.
Kayfolom
assistant
assistant
Сообщения: 119
Зарегистрирован: 16 фев 2009, 12:55
Версия LabVIEW: 8.6
Контактная информация:

Re: Захват сигнала. ПЗС датчика.

Сообщение Kayfolom »

Спасибо.

Я не понял в чём не правильность прототипа функции??
у меня return type - unit8, если 0 - false, если 1 - true или не в этом ошибка?
или поменять местами ID и указатель на массив?
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Захват сигнала. ПЗС датчика.

Сообщение dadreamer »

Kayfolom писал(а):или поменять местами ID и указатель на массив?
Конечно, должно быть строгое соответствие, параметры передаются на стек в определенном порядке и в том же порядке возвращаются.
Kayfolom
assistant
assistant
Сообщения: 119
Зарегистрирован: 16 фев 2009, 12:55
Версия LabVIEW: 8.6
Контактная информация:

Re: Захват сигнала. ПЗС датчика.

Сообщение Kayfolom »

Спасибо. Вечером отпишусь.

А, что по поводу массива? и загадочной фразы:
Память выделяется в байтах.
GetMem(pData, Round(Np*SizeOf(DWORD)*Nf));
Размер двойного слова 4 байта.

ведь, если буду заводить массив длинной 512*4*1, то и вернётся такой же, а у меня каналов 512 и на график результаты
должны отображаться ввиде массива длинной 512
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Захват сигнала. ПЗС датчика.

Сообщение dadreamer »

Kayfolom
Всё-таки у вас на картинке получается верно нарисовано. С помощью Initialize Array вы выделяете память для массива, всего элементов будет 512, каждый элемент в массиве имеет тип U32 или DWORD (4 байта). То есть, оставляете это так, как есть, больше ничего выделять дополнительно не надо. В принципе, можно даже не выделять память, а прописать в настройках CLFN в поле Minimum Size значение 512, тогда :labview: сам выделит память при вызове функции.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Обработка сигнала»