Меню
+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
Тема закрыта
|
||||
|
Как использовать Е-270 с программой на VB?Приобрели Е-270. Задача: использовать модуль для ввода физического значения температуры в программу, написанную на VB6. В тех. документации провозглашается универсальность программного обеспечения для модуля Е-270, созданного в виде DLL. Однако в функциях этой библиотеки в качестве параметра используется указатель на структуру. Но в VB6 не допускается использование указателей в качестве параметров функций, а только значения (ByVal) или ссылки (ByRef). Кроме того, понятие структуры отсутствует, а аналогом является переменная порльзовательского типа, которая тоже на может быть использована вы качестве параметра функции. Что же делать? Или выхода нет? Тогда поллучается, что фирма, создав ПО ограниченного применения, ввела нас в заблуждение и убытки. Посоветуйте, пожалуйста. Заранее благодарю. |
|||
|
||||
|
Re: Как использовать Е-270 с программой на VB?Visual Basic по внутренней архитектуре ничем принципиально не отличается от С++ и других подобных низкоуровневых языков для Windows. Все что можно сделать на С++ можно сделать и на Visual Basic, все зависит от квалификации программиста. В VB есть и указатели, и структуры, и возможность работы с блоками памяти, даже ассемблерный код можно писать на VB. Для использования структуры определяйте пользовательский тип данных: Type ...
Для передачи в функцию указателя на структуру, передавайте первое поле структуры по ссылке (ByRef): Declare .....(ByRef Поле1 As ..., ...) ... Адрес первого поля структуры является также адресом всей структуры. Если сами не справитесь, можем помочь. В ближайшее время планируется также подключить E-270 к ПО PowerGraph. |
|||
|
||||
|
Re: Как использовать Е-270 с программой на VB?И я про тоже.................
Const INTERFACE_RS232=0
Type E270
Declare Function E270Init Lib "e270api" (PE270 As E270) As Long Declare Function E270Open Lib "e270api" (PE270 As E270) As Long Declare Function E270GetDIO Lib "e270api" (PE270 As E270, dout As Byte, din As Byte, dio As Byte) As Long Declare Function E270SetDIO Lib "e270api" (PE270 As E270, ByVal dout As Byte, ByVal din As Byte) As Long ................................... Dim module As E270, res As Long
|
|||
|
||||
|
Re: Как использовать Е-270 с программой на VB?1. Попробуйте так Declare Function E270Open Lib "e270api" (ByRef Interface As Byte) As Long А вызывать так
2. Почему не проверяется возвращаемое значение E270Init? Если ошибка в структуре - надо проверять при первой функции вызова (при инициализации). Скорее всего ошибка может заключаться в особенностях выравнивания полей структуры. Реально ваша структура в памяти расположена следующим образом: Type E270
Перед Handle появляются 2 байта (вы их не видите). Определить это можно просто - сравните значения функций Len(module) и LenB(module). Первая возвращает размер структуры по размерам полей, вторая - реальный размер в байтах, который структура занимает в памяти. Однако это тоже не проблема и ее можно решить в VB. |
|||
|
||||
|
Re: Как использовать Е-270 с программой на VB?Огромное спасибо за квалифицированные советы. Попробую воспользоваться, хватило бы только ума и умения |
|||
|
||||
|
Re: Как использовать Е-270 с программой на VB?Всем моим корреспондентам большое спасибо за данные советы, но, к сожалению ничего у меня не получилось. Виноват сам - не хватает квалификации программиста. Поэтому обращаюсь с нижайшей просьбой: пришлите, пожалуйста, хотя бы простейший, но работающий пример общения Е-270 с программой на VB6. В частности, не могу правильно описать структуру в виде пользовательского типа данных, а то, что получается, не воспринимается в качестве параметра при вызове функции. Если такой работающий пример у меня будет, то дальше, думаю, разберусь сам, а без этого просто полный тупик.
|
|||
|
||||
|
Re: Как использовать Е-270 с программой на VB?Ок. в четверг или пятницу вышлю по почте. |
Страницы 1
Тема закрыта