Внешняя функция для отображаемого пользователем изображения - PullRequest
1 голос
/ 24 января 2020

Итак, у меня есть внешняя функция C, которая возвращает указатель на массив. Я пытаюсь выяснить, как преобразовать указатель во что-то, что можно отобразить на экране, используя последнюю версию LabView (2019, предположим, у меня есть все наборы инструментов).

Функция C подпись импортирует нормально и предназначена для отображения 16 битных изображений

STATUS DemoImage(unsigned short** ptr, int64* rows, int64* columns, int64 image_idx)

с ptr, в конце концов заполняя указатель, содержащий ячейку памяти, до 16-битного изображения. rows, columns работают как положено.

Как называются контроллеры, которые преобразуют тип данных во что-то, что может быть отображено? Я также был бы признателен за ответы, которые касаются только того, как отображать 8-битные изображения, поскольку я могу конвертировать их в своей собственной библиотеке, если наихудшее, то наихудшее.

1 Ответ

2 голосов
/ 24 января 2020

В палитре отсутствует VI.lib VI, который вы можете использовать: GetValueByPointer.

Подробное описание

Пошаговое объяснение см. этот документ NI .

2D-массивы представлены в виде массива массивов. Поскольку массив на самом деле является указателем, 2D-массив является указателем на массив указателей, где каждый указатель указывает на отдельные строки массива. Таким образом, чтобы разыменовать 2D-массив, вы должны сначала разыменовать отдельные указатели для каждой строки, а затем разыменовать отдельные элементы в каждой строке. В следующем фрагменте показан пример этого:

block diagram of iterating over a 2D array

Загрузить примеры

Для загрузки с примерами см. this вместо , раздел 4.d.

Возвращение значений по ссылке (передача по ссылке)

  • Функция: void ReturningValuesByReference_2DArrayOfIntegers (int rows, int cols, int ***newArray);
  • VI: Возврат значений по ссылке 2D Массив целых чисел Complete.vi
...