Здравствуйте, коллеги. Мне дали задание написать программу для системы сбора данных EDX-100A фирмы KYOWA. Дрова достоят из двух библиотек:
1) EDX100.dll - общение с USB портом;
2) EDX100A.dll - библиотека для более простого общения с прибором по интерфейсу USB и LAN с примерами, в том числе и на . Но описание для labview есть только на японском .Прокопавшись пару недель я так и не нашел как парализовать синхронный сбор данных с двух приборов. Мне кажется японцы просто не реализовали эту функцию для labview и вообще для библиотеки EDX100A.dll. По крайней мере я не нашел, как сделать один прибор ведущим (Master) а вторым ведомым (Slave).
Попытался реализовать прямое общение с прибором в обход библиотеки EDX100A.dll, так как в полном описании протокола команд есть описание по синхронному сбору данных. Попробовал переслать пару команд с помощью команды EDX100.dll. но пока не выходит, ошибка ответа по timeout. С dll в я раньше не работал, может кто подскажет. в чем ошибка. Попробовал работу по LAN - прибор отвечает, но желательно реализовать работу по USB. Описание работы с EDX100.dll на восьмой странице IM-A-733_EDX-100A_COMMAND.pdf.
USB драйвер (dll) для EDX-100A
-
- adviser
- Сообщения: 221
- Зарегистрирован: 18 май 2009, 10:50
- Награды: 1
- Версия LabVIEW: 8.6
- Откуда: Москва
USB драйвер (dll) для EDX-100A
- Вложения
-
- 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
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: USB драйвер (dll) для EDX-100A
Там не только PDF, у них даже все в 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 *, то размер должен быть задан явно и в памяти выделена область для хранения данных (символов).
Больше пока ничего посоветовать не могу, железки такой у меня нет, метод проб и ошибок вам поможет.
По поводу вашей программы на 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 *, то размер должен быть задан явно и в памяти выделена область для хранения данных (символов).
Больше пока ничего посоветовать не могу, железки такой у меня нет, метод проб и ошибок вам поможет.
-
- adviser
- Сообщения: 221
- Зарегистрирован: 18 май 2009, 10:50
- Награды: 1
- Версия LabVIEW: 8.6
- Откуда: Москва
Re: USB драйвер (dll) для EDX-100A
В гугл я первым делом загнал, поэтому и понял. что в EDX100A.llb есть не все функции EDX100.dll.
Спасибо, что заметили ошибку с соглашениями о вызовах, как ни странно, но везде должно стоять cdecl. Поиграв со строками. так и не удалось добиться нормальной работы. Тогда решил попробовать байтовый массив U8, и чудо, оно заработало . Осталась ерунда, написать полсотни для всех команд прибора. .
Спасибо, что заметили ошибку с соглашениями о вызовах, как ни странно, но везде должно стоять cdecl. Поиграв со строками. так и не удалось добиться нормальной работы. Тогда решил попробовать байтовый массив U8, и чудо, оно заработало . Осталась ерунда, написать полсотни для всех команд прибора. .
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: USB драйвер (dll) для EDX-100A
Странно, должно было работать, ведь строка - байтовый массив, а передаёт на него указатель, если стоит C String Pointer. Повторюсь, и строка, и массив должны быть инициализированы и иметь длину (размер), достаточную для хранения всех данных. Вы массив инициализировали через Initialize Array, т.е. выделили в памяти 184 байта, библиотеке этого хватает, всё работает. Попробуйте подать пустой массив на вход - работать перестанет.Lexan_83 писал(а):Поиграв со строками. так и не удалось добиться нормальной работы.
И вот так тоже должно работать, т.к. при вызове библиотеки автоматически инициализирует строковый массив количеством байт, равным dwSendByte. А вообще, в тех. поддержку пробовали писать, просили у них инструменты на английском языке?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 9 Ответы
- 904 Просмотры
-
Последнее сообщение dadreamer
-
- 7 Ответы
- 297 Просмотры
-
Последнее сообщение dadreamer
-
- 4 Ответы
- 619 Просмотры
-
Последнее сообщение Borjomy_1
-
- 4 Ответы
- 482 Просмотры
-
Последнее сообщение Eugene543210
-
- 4 Ответы
- 242 Просмотры
-
Последнее сообщение Embedder74