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

Простейшие вопросы в области инженерной разработки

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

Postby dadreamer on 15 Jun 2017, 20:15

Axel wrote:размер возвращаемого адреса на unsigned char

Так вы сами можете поменять в CLFN: ПКМ -> Configure -> вкладка "Parameters" -> Len -> Data type -> Unsigned 8-bit Integer.
Axel wrote:теперь надо заполнять массив 8 битными значениями

В CLFN на MoveBlock поменяли, осталось поменять представление у Initialize Array: ПКМ по числу-константе -> Representation -> U8.

Так. Указатель оставьте U64 (Pointer Sized Int), он не может содержать меньше 32 или 64 бит.
User avatar
dadreamer
doctor
doctor
 
Posts: 2895
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2017
Karma: 708
I/O VIP vision internet

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

Postby Axel on 16 Jun 2017, 03:19

В CLFN на MoveBlock поменяли


Вы имели ввиду поменять в MoveBlock Src и Size на U8?
И не надо размер массива умножать на 4?
Axel
junior
junior
 
Posts: 51
Joined: 15 Nov 2014, 17:26
LabVIEW Version: 12
Karma: 0

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

Postby dadreamer on 16 Jun 2017, 10:59

Axel
2017-06-16_12-51-30.jpg
Остальное у вас вроде соответствует.
Axel wrote:И не надо размер массива умножать на 4?

Нет, конечно. Вы же копируете байты, а не что-то другое. MoveBlock работает с байтами, ваша либа теперь тоже работает с байтами. Раньше работала с I32, а как известно, в 32-х битах 4 байта.
User avatar
dadreamer
doctor
doctor
 
Posts: 2895
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2017
Karma: 708
I/O VIP vision internet

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

Postby Axel on 16 Jun 2017, 13:26

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

Code: Select all

int  IDLA_get_write_address(unsigned char** lpadr) //Это функция возврата адреса на указатель
Axel
junior
junior
 
Posts: 51
Joined: 15 Nov 2014, 17:26
LabVIEW Version: 12
Karma: 0

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

Postby dadreamer on 16 Jun 2017, 17:11

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

Вот вам подсказка, если сами не догадаетесь.
Attachments
8bit.vi
lv2012
(8.39 KiB) Downloaded 33 times
User avatar
dadreamer
doctor
doctor
 
Posts: 2895
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2017
Karma: 708
I/O VIP vision internet

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

Postby Axel on 16 Jun 2017, 18:41

Спасибо огромное, за помощь, но я имел ввиду, что запись не идет в лог файл(записать не получается), по адресу да, все честно копируется... Но дальше по этому адресу куда я копирую, DLL должна взять данные и все записывать в текстовый файл(лог).. Но текстовый файл пустой... Поэтому я и обратил внимание, что формат адреса unsigned char, куда я должен скопировать данные, а потом эти данные по этому адресу(я их помещаю туда) должны уйти в лог... Когда формат был int, все шло... Извините, что столько времени отнял у Вас, думаю проблема в программистах, которые написали DLL, свяжусь с ними
Axel
junior
junior
 
Posts: 51
Joined: 15 Nov 2014, 17:26
LabVIEW Version: 12
Karma: 0

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

Postby dadreamer on 16 Jun 2017, 18:54

Axel wrote:но я имел ввиду, что запись не идет в лог файл(записать не получается)

Вы бы выражались конкретнее, а то до этого момента ни слова ни про какой лог-файл не было. Помощь помощью, а в этой теме по-моему гороскоп составить проще, чем решить какие-то элементарные проблемы.
Axel wrote:DLL должна взять данные и все записывать в текстовый файл(лог)

Отдебажьте библиотеку, проверьте, доходят ли до неё данные (messagebox и т.п.).
Axel wrote:Когда формат был int, все шло...

Мне кажется, от смены представления чисел запись в файл не должна отключаться. Даже если выбрано некорректное представление, в файл всё равно что-то запишется. А если пишется поток байтов в бинарном виде, то ошибиться в этом плане невозможно.

Может, какие-то не те данные шлёте или не шлёте?..
User avatar
dadreamer
doctor
doctor
 
Posts: 2895
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2017
Karma: 708
I/O VIP vision internet

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

Postby Axel on 17 Jun 2017, 01:51

Спасибо за помощь, вина была за мной, в этот раз конфигурация записи в лог другая, поэтому и лог не писался, надо было начинать с программистов, а я подумал, на себя, что делаю что-то не так, извините за глупый вопрос вообщем... Хотел еще уточнить, - обязательно писать 0 на вход CLFN?
Axel
junior
junior
 
Posts: 51
Joined: 15 Nov 2014, 17:26
LabVIEW Version: 12
Karma: 0

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

Postby dadreamer on 17 Jun 2017, 12:28

Axel wrote:Хотел еще уточнить, - обязательно писать 0 на вход CLFN?

Если имеется в виду вот этот ноль
2017-06-17_14-20-39.jpg
2017-06-17_14-20-39.jpg (10.16 KiB) Viewed 1529 times
то его при желании можно отключить. Эта константа - инициализатор входного терминала CLFN. Когда она подключена, :labview: подстраивает тип входного параметра под эту константу. Если она не подключена, :labview: подстраивает тип входного параметра, используя индикатор на выходе из CLFN. Если же такой индикатор так же не подключен, то входной терминал будет иметь тип void (неопределён) и :labview: попросит при запуске :vi: указать тип терминала. Кроме того, данный параметр (ноль) передаётся в вызываемую DLL. Когда параметр передаётся не по указателю, то значение параметра (ноль или не ноль) важно, т.к. используется дальше в вызванной функции. Если параметр передаётся по указателю (как в вашем случае), то значение параметра не важно, т.к. будет всё равно переписано функцией в процессе вызова. Хотя, многое зависит от библиотеки. Если функция принимает параметр по указателю (по ссылке), но параметр используется для чтения, а не для записи, то тогда также важно, что вы передаёте в CLFN.
User avatar
dadreamer
doctor
doctor
 
Posts: 2895
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2017
Karma: 708
I/O VIP vision internet

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

Postby Blackman on 17 Jun 2017, 15:29

Разбирая архивы нашел эту небольшую библиотеку. Возможно есть и в VIPM-e. Я добавил расширение .zip для быстрого доступа, просмотра и установки руками. Для установки при помощи VIPM удалить это расширение.
Attachments
vug_lib_memblock_lv82-1002.vip.zip
(80.46 KiB) Downloaded 37 times
Blackman
leader
leader
 
Posts: 685
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 170

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

Postby Axel on 19 Jun 2017, 20:46

Спасибо огромное за помощь!!!
Axel
junior
junior
 
Posts: 51
Joined: 15 Nov 2014, 17:26
LabVIEW Version: 12
Karma: 0

Previous

Return to Для чайников

Who is online

Users browsing this forum: No registered users and 11 guests

cron