USB драйвер (dll) для EDX-100A

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы
Ответить
Lexan_83

Bronze
adviser
adviser
Сообщения: 221
Зарегистрирован: 18 май 2009, 10:50
Награды: 1
Версия LabVIEW: 8.6
Откуда: Москва

USB драйвер (dll) для EDX-100A

Сообщение Lexan_83 »

Здравствуйте, коллеги. Мне дали задание написать программу для системы сбора данных EDX-100A фирмы KYOWA. Дрова достоят из двух библиотек:
1) EDX100.dll - общение с USB портом;
2) EDX100A.dll - библиотека для более простого общения с прибором по интерфейсу USB и LAN с примерами, в том числе и на :labview:. Но описание для labview есть только на японском :suicide: .Прокопавшись пару недель я так и не нашел как парализовать синхронный сбор данных с двух приборов. Мне кажется японцы просто не реализовали эту функцию для labview и вообще для библиотеки EDX100A.dll. По крайней мере я не нашел, как сделать один прибор ведущим (Master) а вторым ведомым (Slave).
Попытался реализовать прямое общение с прибором в обход библиотеки EDX100A.dll, так как в полном описании протокола команд есть описание по синхронному сбору данных. Попробовал переслать пару команд с помощью команды EDX100.dll. но пока не выходит, ошибка ответа по timeout. С dll в :labview: я раньше не работал, может кто подскажет. в чем ошибка. Попробовал работу по LAN - прибор отвечает, но желательно реализовать работу по USB. Описание работы с EDX100.dll на восьмой странице IM-A-733_EDX-100A_COMMAND.pdf.
Вложения
test dll.vi
отладка команд
(20.41 КБ) 126 скачиваний
IM-A-733_EDX-100A_COMMAND.pdf
Протокол команд
(1.14 МБ) 127 скачиваний

[Расширение dll было запрещено, вложение больше недоступно.]

EDX.zip
Описание EDX100A.dll с примерами
(2.69 МБ) 110 скачиваний
Аватара пользователя
dadreamer

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

Re: USB драйвер (dll) для EDX-100A

Сообщение dadreamer »

Там не только PDF, у них даже все :vi: в EDX100A.llb на японском, о назначении инструментов можно попробовать догадаться по их названиям и именам функций в CLFN, а также по расположению на диаграмме в примерах. Ну, или засунуть PDF в какой-нибудь переводчик (гугл, промт) и надеяться, что он передаст хотя бы 50% смысловой нагрузки :)

По поводу вашей программы на EDX100.dll... У вас там в вызовах EDX100_UsbOpen, EDX100_UsbReceiveCmd и EDX100_UsbClose стоит cdecl соглашение о вызовах, в остальных CLFN - stdcall. Так не делается, нужно либо то, либо другое. В EDX100A.llb везде используется stdcall, подозреваю, что и у вас должно быть также (в мануале не сказано почему-то). Загляните в заголовочный файл EDX100.H для ясности, там должны быть все прототипы функций. В вызове EDX100_UsbSendCmd сделайте тип pSendCmd - String, String format - C String Pointer, Minimum size - dwSendByte. В вызове EDX100_UsbReceiveCmd сделайте так же. У вас отправляемый и приемный буфер - строки в виде байтовых массивов, раз передаётся указатель void *, то размер должен быть задан явно и в памяти выделена область для хранения данных (символов).

Больше пока ничего посоветовать не могу, железки такой у меня нет, метод проб и ошибок вам поможет. :wink:
Lexan_83

Bronze
adviser
adviser
Сообщения: 221
Зарегистрирован: 18 май 2009, 10:50
Награды: 1
Версия LabVIEW: 8.6
Откуда: Москва

Re: USB драйвер (dll) для EDX-100A

Сообщение Lexan_83 »

В гугл я первым делом загнал, поэтому и понял. что в EDX100A.llb есть не все функции EDX100.dll.
Спасибо, что заметили ошибку с соглашениями о вызовах, как ни странно, но везде должно стоять cdecl. Поиграв со строками. так и не удалось добиться нормальной работы. Тогда решил попробовать байтовый массив U8, и чудо, оно заработало :super: . Осталась ерунда, написать полсотни :vi: для всех команд прибора. :D .
Аватара пользователя
dadreamer

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

Re: USB драйвер (dll) для EDX-100A

Сообщение dadreamer »

Lexan_83 писал(а):Поиграв со строками. так и не удалось добиться нормальной работы.
Странно, должно было работать, ведь строка - байтовый массив, а :labview: передаёт на него указатель, если стоит C String Pointer. Повторюсь, и строка, и массив должны быть инициализированы и иметь длину (размер), достаточную для хранения всех данных. Вы массив инициализировали через Initialize Array, т.е. выделили в памяти 184 байта, библиотеке этого хватает, всё работает. Попробуйте подать пустой массив на вход - работать перестанет.

И вот так тоже должно работать, т.к. при вызове библиотеки :labview: автоматически инициализирует строковый массив количеством байт, равным dwSendByte.
Без имени-2.jpg
А вообще, в тех. поддержку пробовали писать, просили у них инструменты на английском языке?
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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