Подключение к черному ящику, API управление

Радиотехника, платы, схемы, оборудование, фото- видео- приборы, компьютеры
Ответить
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

Подключение к черному ящику, API управление

Сообщение Select »

Всем привет,
Имеется железо с USB и дополнительно купленная API спецификация (Visual Studio),
возможно есть у кого опыт по части управленииия контроллеорм посредством API ?
Обкуриваюсь который день спецификацией и понимаю что она ктегорически не адаптирована разработчиками под
дальнейшую интеграцию в G код.
void iQ::LED::LedController::startSelfTest ( int & errorCode = default_ )
iQ::LED::LedController::startSelfTest
Starts an internal self-test of the iQ-LED device.
-----------
void iQ::LED::LedController::storeIlluminantOnDevice ( const int slotNumber, iQ::LED::-
Illuminant ∗ illuminant, int & errorCode = default_ )

void iQ::LED::LedController::storeSequenceOnDevice ( std::map< int, unsigned short >
sequenceList, bool loopedSequence, int & errorCode = default_ )
-----------
iQ::LED::LedController::storeSequenceOnDevice
Stores an illuminant sequence in the internal hardware of the iQ-LED device. You will need information about
the stored illuminant’s slot numbers to create this sequence list.
Parameters
sequenceList A map of the illuminants that shall be used to create a sequence.
<int> The slot number of the stored illuminant. You can also use 0 to turn off light for a
certain amount of time.
<unsigned short>=""> The display time of an stored illuminant in 10ms units. (e.g. 1 =
10ms);
loopedSequence Determines whether the sequence shall be looped or not when played.
errorCode Describes the error that occurred during processing. 0 denotes no error.
You can receive a corresponding plain text error message using iQ::LED::LedController::get-
ErrorMessage
Хотелось бы увидеть вариант вменяемой спецификации.
До этого я работал с объект листами в виде регистров, которые размещал в стирм, VisaUSB, описание регистров под требования (сбор или управление, тип графического GUI компонета ) и т.д. :dntknw:
Последний раз редактировалось Select 22 мар 2019, 13:51, всего редактировалось 1 раз.
LabView 14,18
Аватара пользователя
dadreamer

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

Re: Подключение к черному ящику, API управление

Сообщение dadreamer »

Что подразумевается под "API спецификацией"? Обычно производитель предоставляет SDK для работы с прибором (приборами), т.е. набор драйверов, библиотек, обёрток и документация к ним для последующей интеграции в среду разработки. Непосредственно API со всеми взаимосвязями должен быть описан в доках типа руководства программиста. Производители, конечно, разные бывают. Не все могут или способны предоставить готовые :vi: на свои изделия. Но как правило часто есть DLL для Си, которые без особых проблем могут быть подключены к :labview: (если это не плюсы с классами).
Вы привели кусок листинга кода на C++. Этот код в :labview: никак не интегрировать. Однако может быть имеется библиотека на .NET, которую также можно подключить к :labview: через .NET-узлы. Детальнее можно будет развить эту тему, если сообщите производителя и модель прибора.
Последний раз редактировалось dadreamer 22 мар 2019, 15:50, всего редактировалось 1 раз.
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

Re: Подключение к черному ящику, API управление

Сообщение Select »

Сразу оговорюсь, ранее мне не приходилось работать с API.
Производитель - Image Engineering
Железо L07
Инсталяционные файлы содержат драйвера 32/64, патчи и так же Redistributable Visual Studio C++2017
Описание API дает краткое содержимое в.у. C++ абстрагированных процедур или функций, без инструкций по :nono: значениям в dll ?, к ним конечно можно построить ordinals [0xc9] обращение и в слепую расшатать там все что доступно, что чревато палевом оборудования, все откалибровано, многие типы открываемых выходных сигналов в виде PWM, программная защита, ни схем, ни принципиальных мануалов, только пользовательский help и всё ...
Без техподдержки со стороны производителя, на мой взгляд дело гиблое.
Буду благодарен за ссылки на примеры, любые советы в освоении.

Содержимое CDK и результат установки:
Вложения
screen1.png
screen1.png (4.17 КБ) 2948 просмотров
screen2.png
screen2.png (9.23 КБ) 2948 просмотров
screen3.png
Пример содержимого в Dll
Пример содержимого в Dll
screen4.png (5.7 КБ) 2938 просмотров
LabView 14,18
Аватара пользователя
dadreamer

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

Re: Подключение к черному ящику, API управление

Сообщение dadreamer »

Да, похоже, это тот случай, когда по-простому не получится. Всё API построено на классах C++, для других сред обёрток нет. :labview: не воспринимает C++ классы от слова совсем. В общем, есть несколько вариантов, как это дело подружить с :labview: :
1) Связаться с разработчиком API и выпросить у него библиотеку или обёртку (wrapper) под :labview: . Подойдёт DLL без классов, только чистый С. Как альтернатива, библиотека для подключения через .NET или ActiveX интерфейсы.
2) Написать самому враппер С++ -> C, потребует изрядного количества времени и приличного уровня знаний C/C++ (я бы сказал, программист должен быть экспертом).
3) Отследить отладчиками и API-снифферами функции, вызываемые из библиотек родного софта, и воспроизвести по аналогии в :labview: . Здесь потребуются внушительные знания в области реверс-инжиниринга. iQLed3.dll или iQLedd3.dll должна быть основная библиотека, дёргающая все остальные. Список экспортируемых функций можно получить с помощью Lister в TC, например.
Как частный случай пункта 3 - если разработчик предоставит детальное описание функций из DLL, можно исхитриться и не писать никакой враппер, а подключить либу прям с классами. Возможно только в 64-битном :labview: и потребует некоторых умений при обращении с CLFN.

upd:
Ну, вот судя по последней картинке iQLed3.dll как раз и экспортирует все те функции, что описаны в мануалах. При желании их можно вызвать, но это малость заморочено. И не уверен, что все функции удастся таким способом вызвать (часть из них возвращает указатели на классы). Суть в том, чтобы сперва вызвать конструктор класса какого-либо объекта, а затем вызывать какие нужно функции этого объекта, передавая первым параметром указатель на сам объект. После завершения работы вызвать деструктор. Здесь немного поподробнее расписал.
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

Re: Подключение к черному ящику, API управление

Сообщение Select »

dadreamer,
благодарю за исчерпывающий ответ и линк :super: , от которого у меня вопросов не стало менбше :think:, мои опасения за напрасно потраченные деньги за CDK подтверждаются, шеф будет расстроен.
Буду отталкиваться от простого к сложному:
1) Связаться с разработчиком API и выпросить у него библиотеку или обёртку (wrapper) под :labview:
LabView 14,18
Аватара пользователя
dadreamer

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

Re: Подключение к черному ящику, API управление

Сообщение dadreamer »

Select писал(а):шеф будет расстроен.
Ну, могу предложить такой более отвлечённый вариант - найти программера на C/C++ и напрячь его на написание подходящей библиотеки. :)

Если скинете на обменник SDK, могу посмотреть, что можно сделать. Но многого не обещаю. Скорее всего, часть функционала окажется недоступной со стороны :labview: .
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Железо»