Здравствуйте, коллеги!
Я начинающий программист в среде 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? прикладываю скрин, как я это вижу.
Пара вопросов по подключению C# библиотеки
-
- developer
- Сообщения: 257
- Зарегистрирован: 03 янв 2014, 19:37
- Версия LabVIEW: 2016
- Откуда: Украина, Киев
- Контактная информация:
-
- VIP
- Сообщения: 1338
- Зарегистрирован: 03 фев 2010, 00:42
- Награды: 6
- Версия LabVIEW: 6.1 - 2024
- Откуда: Германия
- Благодарил (а): 1 раз
- Поблагодарили: 44 раза
- Контактная информация:
Re: Пара вопросов по подключению C# библиотеки
В обратном порядке (7,6) байты установить тоже пробовали?
-
- developer
- Сообщения: 257
- Зарегистрирован: 03 янв 2014, 19:37
- Версия LabVIEW: 2016
- Откуда: Украина, Киев
- Контактная информация:
Re: Пара вопросов по подключению C# библиотеки
Дело в том, что при отправке однобайтовых команд я получаю правильные ответы. Как итог - отправив в обратном порядке, я получил ответ как на команду 7. То есть, команда 6 - установить протокол, команда 7 - опрос перемен в состоянии устройства. И именно ответ на команду 7 я получил, отправив 7,6.AndreyDmitriev писал(а):В обратном порядке (7,6) байты установить тоже пробовали?
Я вот думаю, что там как раз надо делать 2 раза CommandData, но не понимаю, как это сделать верно, чтобы восприняло, как 2 части одной команды...
Спасибо, что откликнулись!
колдооооовствооооо! (С)
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Пара вопросов по подключению C# библиотеки
Ну, по идее, должно быть как в самом первом варианте. А остальные элементы массива точно пусты (а не ноль, например)? Если так, то может добавить после всех элементов ещё нулевой? И собственно где на диаграмме сам блок SSPSendCommand? Обычно в NET-методы именуются прямо на инструментах:
-
- developer
- Сообщения: 257
- Зарегистрирован: 03 янв 2014, 19:37
- Версия LabVIEW: 2016
- Откуда: Украина, Киев
- Контактная информация:
Re: Пара вопросов по подключению C# библиотеки
Остальные элементы точно пусты, добавка 0 после ничего не дала, да и не должна была, по идееdadreamer писал(а):Ну, по идее, должно быть как в самом первом варианте. А остальные элементы массива точно пусты (а не ноль, например)? Если так, то может добавить после всех элементов ещё нулевой? И собственно где на диаграмме сам блок SSPSendCommand? Обычно в NET-методы именуются прямо на инструментах:
в аттаче отправка команды в более полном виде, просто не хотел нагружать лишней, как мне казалось, информацией.
Ком-порт открывается отдельным методом из SSPComms, сюда это не вносил
SSP_COMMAND_INFO, как я понял, отвечает за правильность всего пакета (библиотека добавляет к пакету ещё байт инициации, адрес устройства, 2 байта контрольной суммы), также оттуда можно изьять весь отправленный пакет и ответ устройства.
По поводу того, что должно быть как на самом первом варианте - устройство присылает ответ F8 - Command Failure. При этом, устройство отлично работает с програмкой для настройки устройства, которая от производителя+команда взята не из неба, а из мануала к библиотеке.
Производитель разводит руками - говорит, что всё должно быть гуд, но они никогда не пробовали прикручивать железяку к LabVIEW.
колдооооовствооооо! (С)
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Пара вопросов по подключению C# библиотеки
Прототип функции:
Подумалось, что, возможно, надо передавать указатели, в частности на массив данных (точнее, на структуру), и делать его не в виде массива , а в виде кластера из U8-констант. Хотя, судя по последней картинке, передаются ссылки (reference) и приведение типов происходит автоматически... Непонятно как-то.
Это единственный способ работы с ПО в ? Нет ли обычной DLL или ActiveX?
Код: Выделить всё
NOMANGLE int CCONV SSPSendCommand (SSP_COMMAND * cmd, SSP_COMMAND_INFO * sspInfo);
Это единственный способ работы с ПО в ? Нет ли обычной DLL или ActiveX?
-
- developer
- Сообщения: 257
- Зарегистрирован: 03 янв 2014, 19:37
- Версия LabVIEW: 2016
- Откуда: Украина, Киев
- Контактная информация:
Re: Пара вопросов по подключению C# библиотеки
словом, поступила мысля, что проблема в самом устройстве, так как оно вдруг само по себе заработало, хотя ответ на команду 0х06+0х07 всё-равно фэйл. В остальном работает штатно, так что, думаю, зря я так зацепился за эту команду. возможно, производитель что-то там поменял в прошивке, в мануале не отобразил, а я зря только провозился кучу времени.
Спасибо большое всем ответившим!
Спасибо большое всем ответившим!
колдооооовствооооо! (С)
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 0 Ответы
- 619 Просмотры
-
Последнее сообщение dadreamer
-
- 0 Ответы
- 703 Просмотры
-
Последнее сообщение Dima123_Dima321
-
- 10 Ответы
- 2373 Просмотры
-
Последнее сообщение PAG