Форум: Техническая поддержка

Тема: Как использовать Е-270 с программой на VB?

Вы не вошли.

 Поиск | Регистрация | Вход 

Александр
31.03.2003 08:39:42
#1

Гость

Как использовать Е-270 с программой на VB?

Приобрели Е-270. Задача: использовать модуль для ввода физического значения температуры в программу, написанную на VB6. В тех. документации провозглашается универсальность программного обеспечения для модуля Е-270, созданного в виде DLL.  Однако в функциях этой библиотеки в качестве параметра используется указатель на структуру. Но в VB6 не допускается использование указателей в качестве параметров функций, а только значения (ByVal) или ссылки (ByRef). Кроме того, понятие структуры отсутствует, а аналогом является переменная порльзовательского типа, которая тоже на может быть использована вы качестве параметра функции. Что же делать? Или выхода нет? Тогда поллучается, что фирма, создав ПО ограниченного применения, ввела нас в заблуждение и убытки. Посоветуйте, пожалуйста. Заранее благодарю.

PowerGraph
31.03.2003 13:08:27
#2

Гость

Re: Как использовать Е-270 с программой на VB?

Visual Basic по внутренней архитектуре ничем принципиально не отличается от С++ и других подобных низкоуровневых языков для Windows. Все что можно сделать на С++ можно сделать и на Visual Basic, все зависит от квалификации программиста.

В VB есть и указатели, и структуры, и возможность работы с блоками памяти, даже ассемблерный код можно писать на VB.

Для использования структуры определяйте пользовательский тип данных:

Type ...
   Поле1 As ...
   Поле2 As ...
   ....
End Type 

Для передачи в функцию указателя на структуру, передавайте первое поле структуры по ссылке (ByRef):

Declare .....(ByRef Поле1 As ..., ...) ...

Адрес первого поля структуры является также адресом всей структуры.

Если сами не справитесь, можем помочь.

В ближайшее время планируется также подключить E-270 к ПО PowerGraph.

alexander
31.03.2003 14:17:52
#3

Гость

Re: Как использовать Е-270 с программой на VB?

И я про тоже.................
к примеру:

Const INTERFACE_RS232=0
Const INTERFACE_RS485=1
Const INTERFACE_USB  =2

Type E270
  Interface As Byte
  Port      As Byte
  Handle    As Long
  ReqTotal  As Long
  ReqBad    As Long
...................
End Type

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
Dim din As Byte, dout As Byte, dio As Byte


E270Init(module)
module.Interface=INTERFACE_USB
module.Address=0
res=E270Open(module)
If res=0 Then
   E270SetDIO(module, 11, 22)     
   E270GetDIO(module, dout, din, dio)
   .........................
Else
   ...........ОШИБКА........
End If

PowerGraph
31.03.2003 14:45:37
#4

Гость

Re: Как использовать Е-270 с программой на VB?

1. Попробуйте так

Declare Function E270Open Lib "e270api" (ByRef Interface As Byte) As Long

А вызывать так
res=E270Open(E270.Interface)

2. Почему не проверяется возвращаемое значение E270Init? Если ошибка в структуре - надо проверять при первой функции вызова (при инициализации).

Скорее всего ошибка может заключаться в особенностях выравнивания полей структуры. Реально ваша структура в памяти расположена следующим образом:

Type E270
Interface As Byte (1 байт)
Port As Byte      (1 байт)
!(Align)          (2 байта - выравнивание)
Handle As Long    (4 байта)
ReqTotal As Long
ReqBad As Long
...................
End Type

Перед Handle  появляются 2 байта (вы их не видите).

Определить это можно просто - сравните значения функций Len(module) и LenB(module). Первая возвращает размер структуры по размерам полей, вторая - реальный размер в байтах, который структура занимает в памяти.

Однако это тоже не проблема и ее можно решить в VB.

Александр
31.03.2003 15:42:28
#5

Гость

Re: Как использовать Е-270 с программой на VB?

Огромное спасибо за квалифицированные советы. Попробую воспользоваться, хватило бы только ума и умения

Александр
31.03.2003 21:04:49
#6

Гость

Re: Как использовать Е-270 с программой на VB?

Всем моим корреспондентам большое спасибо за данные советы, но, к сожалению ничего у меня не получилось. Виноват сам - не хватает квалификации программиста. Поэтому обращаюсь с нижайшей просьбой: пришлите, пожалуйста, хотя бы простейший, но работающий пример общения Е-270 с программой на VB6. В частности, не могу правильно описать структуру в виде пользовательского типа данных, а то, что получается, не воспринимается в качестве параметра при вызове функции. Если такой работающий пример у меня будет, то дальше, думаю, разберусь сам, а без этого просто полный тупик.
Если поможете, то моя благодарность не будет знать границ, но в разумных пределах.

alexander
01.04.2003 14:19:49
#7

Гость

Re: Как использовать Е-270 с программой на VB?

Ок. в четверг или пятницу вышлю по почте.

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25
Факс: +7 (495) 785-95-14

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск