Страница 2 из 2

Re: Указатель на указатель

Добавлено: 15 июн 2017, 20:15
dadreamer
Axel писал(а):размер возвращаемого адреса на unsigned char
Так вы сами можете поменять в CLFN: ПКМ -> Configure -> вкладка "Parameters" -> Len -> Data type -> Unsigned 8-bit Integer.
Axel писал(а):теперь надо заполнять массив 8 битными значениями
В CLFN на MoveBlock поменяли, осталось поменять представление у Initialize Array: ПКМ по числу-константе -> Representation -> U8.

Так. Указатель оставьте U64 (Pointer Sized Int), он не может содержать меньше 32 или 64 бит.

Re: Указатель на указатель

Добавлено: 16 июн 2017, 03:19
Axel
В CLFN на MoveBlock поменяли
Вы имели ввиду поменять в MoveBlock Src и Size на U8?
И не надо размер массива умножать на 4?

Re: Указатель на указатель

Добавлено: 16 июн 2017, 10:59
dadreamer
Axel
2017-06-16_12-51-30.jpg
Остальное у вас вроде соответствует.
Axel писал(а):И не надо размер массива умножать на 4?
Нет, конечно. Вы же копируете байты, а не что-то другое. MoveBlock работает с байтами, ваша либа теперь тоже работает с байтами. Раньше работала с I32, а как известно, в 32-х битах 4 байта.

Re: Указатель на указатель

Добавлено: 16 июн 2017, 13:26
Axel
Спасибо! Но все же записать не получается...
Быть может дело в адресе на указатель... На сколько корректно, что указатель unsigned char?
unsigned int было все работало, но когда программисты поменяли формат возвращаемого значения запись не идет... А если делаю формат char, то вообще виснет...

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


int  IDLA_get_write_address(unsigned char** lpadr) //Это функция возврата адреса на указатель

Re: Указатель на указатель

Добавлено: 16 июн 2017, 17:11
dadreamer
Axel, у вас косяк в программе. Посмотрите внимательно на свой код (сверху) и на мой (снизу). Ошибка элементарная.
2017-06-16_19-05-03.jpg
Вот вам подсказка, если сами не догадаетесь.

Re: Указатель на указатель

Добавлено: 16 июн 2017, 18:41
Axel
Спасибо огромное, за помощь, но я имел ввиду, что запись не идет в лог файл(записать не получается), по адресу да, все честно копируется... Но дальше по этому адресу куда я копирую, DLL должна взять данные и все записывать в текстовый файл(лог).. Но текстовый файл пустой... Поэтому я и обратил внимание, что формат адреса unsigned char, куда я должен скопировать данные, а потом эти данные по этому адресу(я их помещаю туда) должны уйти в лог... Когда формат был int, все шло... Извините, что столько времени отнял у Вас, думаю проблема в программистах, которые написали DLL, свяжусь с ними

Re: Указатель на указатель

Добавлено: 16 июн 2017, 18:54
dadreamer
Axel писал(а):но я имел ввиду, что запись не идет в лог файл(записать не получается)
Вы бы выражались конкретнее, а то до этого момента ни слова ни про какой лог-файл не было. Помощь помощью, а в этой теме по-моему гороскоп составить проще, чем решить какие-то элементарные проблемы.
Axel писал(а):DLL должна взять данные и все записывать в текстовый файл(лог)
Отдебажьте библиотеку, проверьте, доходят ли до неё данные (messagebox и т.п.).
Axel писал(а):Когда формат был int, все шло...
Мне кажется, от смены представления чисел запись в файл не должна отключаться. Даже если выбрано некорректное представление, в файл всё равно что-то запишется. А если пишется поток байтов в бинарном виде, то ошибиться в этом плане невозможно.

Может, какие-то не те данные шлёте или не шлёте?..

Re: Указатель на указатель

Добавлено: 17 июн 2017, 01:51
Axel
Спасибо за помощь, вина была за мной, в этот раз конфигурация записи в лог другая, поэтому и лог не писался, надо было начинать с программистов, а я подумал, на себя, что делаю что-то не так, извините за глупый вопрос вообщем... Хотел еще уточнить, - обязательно писать 0 на вход CLFN?

Re: Указатель на указатель

Добавлено: 17 июн 2017, 12:28
dadreamer
Axel писал(а):Хотел еще уточнить, - обязательно писать 0 на вход CLFN?
Если имеется в виду вот этот ноль
2017-06-17_14-20-39.jpg
2017-06-17_14-20-39.jpg (10.16 КБ) 7719 просмотров
то его при желании можно отключить. Эта константа - инициализатор входного терминала CLFN. Когда она подключена, :labview: подстраивает тип входного параметра под эту константу. Если она не подключена, :labview: подстраивает тип входного параметра, используя индикатор на выходе из CLFN. Если же такой индикатор так же не подключен, то входной терминал будет иметь тип void (неопределён) и :labview: попросит при запуске :vi: указать тип терминала. Кроме того, данный параметр (ноль) передаётся в вызываемую DLL. Когда параметр передаётся не по указателю, то значение параметра (ноль или не ноль) важно, т.к. используется дальше в вызванной функции. Если параметр передаётся по указателю (как в вашем случае), то значение параметра не важно, т.к. будет всё равно переписано функцией в процессе вызова. Хотя, многое зависит от библиотеки. Если функция принимает параметр по указателю (по ссылке), но параметр используется для чтения, а не для записи, то тогда также важно, что вы передаёте в CLFN.

Re: Указатель на указатель

Добавлено: 17 июн 2017, 15:29
Blackman
Разбирая архивы нашел эту небольшую библиотеку. Возможно есть и в VIPM-e. Я добавил расширение .zip для быстрого доступа, просмотра и установки руками. Для установки при помощи VIPM удалить это расширение.

Re: Указатель на указатель

Добавлено: 19 июн 2017, 20:46
Axel
Спасибо огромное за помощь!!!