|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.06.2013, 20:06 | #11 | |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
var-параметр - это и есть в Паскале/Делфи передача параметра по адресу. При передаче по адресу (в отличие от передачи по значению) можно указывать адрес первого элемента, а в вызывающей процедуре обращаться к нему как к массиву. Если есть возможность, можно поправить прототип функции: Код:
|
|
07.06.2013, 01:45 | #12 |
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
тоже вариант
А ещё мне сегодня ночью, как, прошу прощения за скромность, таблица менделеева его автору, приснилась следующая идея: раз на вход функции приходит указатель, значит она его разыменовывает внутри, указатель на значение конкретного параметра, т.е. если правильно проводить аналогию, как я передавал массив в её "собрата" PI_qMOV, ей нужно передавать не ссылку на массив of Double, а простой массив указателей! то есть ввести arrayOfPfloat6: array [0..5] of PDouble и сунуть в функцию его первый элемент, т.е. как-то так: Код:
сегодня днём сгоняю в цех, опробую, если получится (а подозреваю что всё должно сработать) - хоть головой об стенку бейся, зачем я тут людям мозги выклёвываю, и разработчику тоже, ведь логически нужно делать именно так! Последний раз редактировалось AnTe; 07.06.2013 в 01:53. |
07.06.2013, 15:31 | #13 |
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
Провидение не помогло. Не работает!
s-andriano, Вы имели в виду подправить в заголовочном файле? Пробовал - тоже не работает правда, я забыл, вываливается с ошибкой доступа по памяти или просто пиликает ошибку похоже, полный финиш пока у меня остаются два варианта - изучать работу с указателями и (или) засунуть длл в дизассемблер и посмотреть предметно что там как распределяется |
19.06.2013, 13:55 | #14 |
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
Ларчик просто открывался.
Передача данных происходила абсолютно верно. Причём работают оба предложенных варианта: если в функцию передавать просто первый элемент массива, или писать перед ним "@". Дело было в другом - ошибке производителя. Про параметр sAxes в документации написано, что 3.3.2. Axis Identifiers Many commands accept one ore more axis identifiers. If no axes are specified (either by giving an empty string or a NULL pointer) some commands will address all connected axes. И действительно, и в М-850, и для практически всех функций Н-850, включая PI_qMov - пустая строка подходит: функции работают в соответствии с документацией. В PI_MOV видимо забыли это реализовать. Как только передал строку, 'X Y Z U V W' - всё заработало. Более того - в М-850 если было большое желание, можно было тоже оси задавать явно, но без пробелов, поэтому я с самого начала пробовал вариант с 'XYZUVW' - не работало тоже, но с пустой строкой в соответствии и с новой документацией работали все функции, кроме MOV, поэтому эксперименты с параметром axis прекратились. программа работает с использованием другой функции, переделывать не стал, разработчик уведомлен, тему можно закрывать Спасибо всем ответившим. Если бы не ваша поддержка, я бы ещё долго лопатил документацию по винде, пребывая в уверенности, что делаю что-то не так. Последний раз редактировалось AnTe; 19.06.2013 в 13:58. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужно написать программу под WinCE управление внешним устройством | kompotius | Фриланс | 0 | 16.05.2012 16:32 |
Получение данных из сторонней dll | Memfis1992 | Общие вопросы Delphi | 4 | 21.10.2010 09:19 |
удаленное управление устройством! | Gambler | Работа с сетью в Delphi | 11 | 29.10.2009 12:12 |
Управление исполнительным устройством через компьютер | Scutarius | Свободное общение | 3 | 28.07.2009 15:56 |
Проблемы с типами данных в Delphi | Paul11j | Помощь студентам | 4 | 15.05.2009 22:59 |