Пара вопросов по подключению C# библиотеки

ActiveX, .NET, DLL
Ответить
AlexanderKonoval
developer
developer
Сообщения: 257
Зарегистрирован: 03 янв 2014, 19:37
Версия LabVIEW: 2016
Откуда: Украина, Киев
Контактная информация:

Пара вопросов по подключению C# библиотеки

Сообщение AlexanderKonoval »

Здравствуйте, коллеги!

Я начинающий программист в среде LabVIEW, да и вообще. Ни с С, ни с С# не знаком, работаю с LabVIEW чуть больше месяца.

Всё вроде шло гладко, но возникла необходимость подключить библиотеку на C#.

В библиотеку необходимо подавать команды, она их обрабатывает и пересылает дальше. Пока команда состоит из 1 байта, всё гуд. Как только надо отправить 2 байт - вроде бы тоже всё гуд, но вот только устройство не работает правильно.

В связи с этим у меня возникла мысля, что я неверно отправляю команды, состоящие из более, чем 1 байта. В этом и суть моего вопроса.

Что мы видим в документации:

sspc.CommandData[0] = 0x06;
sspc.CommandData[1] = 0x07;
sspc.CommandDataLength = 2;
if (sspLib.SSPSendCommand(sspc, sspi))
{
// Command was sent successfully
}

Как это правильно реализовать в LabVIEW? прикладываю скрин, как я это вижу.
Вложения
forum.JPG
колдооооовствооооо! (С)
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1327
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 38 раз
Контактная информация:

Re: Пара вопросов по подключению C# библиотеки

Сообщение AndreyDmitriev »

В обратном порядке (7,6) байты установить тоже пробовали?
AlexanderKonoval
developer
developer
Сообщения: 257
Зарегистрирован: 03 янв 2014, 19:37
Версия LabVIEW: 2016
Откуда: Украина, Киев
Контактная информация:

Re: Пара вопросов по подключению C# библиотеки

Сообщение AlexanderKonoval »

AndreyDmitriev писал(а):В обратном порядке (7,6) байты установить тоже пробовали?
Дело в том, что при отправке однобайтовых команд я получаю правильные ответы. Как итог - отправив в обратном порядке, я получил ответ как на команду 7. То есть, команда 6 - установить протокол, команда 7 - опрос перемен в состоянии устройства. И именно ответ на команду 7 я получил, отправив 7,6.

Я вот думаю, что там как раз надо делать 2 раза CommandData, но не понимаю, как это сделать верно, чтобы восприняло, как 2 части одной команды...

Спасибо, что откликнулись!
колдооооовствооооо! (С)
Аватара пользователя
dadreamer

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

Re: Пара вопросов по подключению C# библиотеки

Сообщение dadreamer »

Ну, по идее, должно быть как в самом первом варианте. А остальные элементы массива точно пусты (а не ноль, например)? Если так, то может добавить после всех элементов ещё нулевой? И собственно где на диаграмме сам блок SSPSendCommand? Обычно в :labview: NET-методы именуются прямо на инструментах:
Вложения
Без имени-1.jpg
AlexanderKonoval
developer
developer
Сообщения: 257
Зарегистрирован: 03 янв 2014, 19:37
Версия LabVIEW: 2016
Откуда: Украина, Киев
Контактная информация:

Re: Пара вопросов по подключению C# библиотеки

Сообщение AlexanderKonoval »

dadreamer писал(а):Ну, по идее, должно быть как в самом первом варианте. А остальные элементы массива точно пусты (а не ноль, например)? Если так, то может добавить после всех элементов ещё нулевой? И собственно где на диаграмме сам блок SSPSendCommand? Обычно в :labview: NET-методы именуются прямо на инструментах:
Остальные элементы точно пусты, добавка 0 после ничего не дала, да и не должна была, по идее

в аттаче отправка команды в более полном виде, просто не хотел нагружать лишней, как мне казалось, информацией.
Ком-порт открывается отдельным методом из SSPComms, сюда это не вносил
SSP_COMMAND_INFO, как я понял, отвечает за правильность всего пакета (библиотека добавляет к пакету ещё байт инициации, адрес устройства, 2 байта контрольной суммы), также оттуда можно изьять весь отправленный пакет и ответ устройства.

По поводу того, что должно быть как на самом первом варианте - устройство присылает ответ F8 - Command Failure. При этом, устройство отлично работает с програмкой для настройки устройства, которая от производителя+команда взята не из неба, а из мануала к библиотеке.

Производитель разводит руками - говорит, что всё должно быть гуд, но они никогда не пробовали прикручивать железяку к LabVIEW.
Вложения
forum1.JPG
колдооооовствооооо! (С)
Аватара пользователя
dadreamer

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

Re: Пара вопросов по подключению C# библиотеки

Сообщение dadreamer »

Прототип функции:

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

NOMANGLE int CCONV SSPSendCommand (SSP_COMMAND * cmd, SSP_COMMAND_INFO * sspInfo);
Подумалось, что, возможно, надо передавать указатели, в частности на массив данных (точнее, на структуру), и делать его не в виде массива :labview: , а в виде кластера из U8-констант. Хотя, судя по последней картинке, передаются ссылки (reference) и приведение типов происходит автоматически... Непонятно как-то.

Это единственный способ работы с ПО в :labview: ? Нет ли обычной DLL или ActiveX?
AlexanderKonoval
developer
developer
Сообщения: 257
Зарегистрирован: 03 янв 2014, 19:37
Версия LabVIEW: 2016
Откуда: Украина, Киев
Контактная информация:

Re: Пара вопросов по подключению C# библиотеки

Сообщение AlexanderKonoval »

словом, поступила мысля, что проблема в самом устройстве, так как оно вдруг само по себе заработало, хотя ответ на команду 0х06+0х07 всё-равно фэйл. В остальном работает штатно, так что, думаю, зря я так зацепился за эту команду. возможно, производитель что-то там поменял в прошивке, в мануале не отобразил, а я зря только провозился кучу времени.

Спасибо большое всем ответившим!
колдооооовствооооо! (С)
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Коммуникация с приложениями»