Здравствуйте!
Пытаюсь достучаться до ТРМ-101 из VB6.
Код модуля:
Код:
Option Explicit
' Определения для последовательных портов COMxx=(xx-1)
Enum ePorts
COM_1 = 0
COM_2 = 1
COM_3 = 2
COM_4 = 3
COM_5 = 4
COM_6 = 5
COM_7 = 6
COM_8 = 7
End Enum
' Определения скорости
Enum eRates
' Добавлено для приборов на АС2
er300 = -3
er600 = -2
er1200 = -1
' Добавлено для приборов на АС2
er2400 = 0
er4800 = 1
er9600 = 2
er14400 = 3
er19200 = 4
er28800 = 5
er38800 = 6
er57600 = 7
er115200 = 8
End Enum
Enum eParity
parity_NONE = 0
parity_EVEN = 1
parity_ODD = 2
End Enum
Enum eDataBits
databits_7 = 0
databits_8 = 1
End Enum
Enum eStopBits
stopbit_1 = 0
stopbit_2 = 2
End Enum
Enum eConverterType
RS485CONV_MANUAL = 0
RS485CONV_AUTO = 1
RS485CONV_MANUAL_DTR = 2
End Enum
' Выбор модели
Public Declare Function SetApiMode Lib "owen_io" (ByVal n As Long) As Long
Public Declare Function OpenPort Lib "owen_io" _
(ByVal n As ePorts, _
ByVal speed As eRates, _
ByVal parity As eParity, _
ByVal databits As eDataBits, _
ByVal bitstop As eStopBits, _
ByVal vid As eConverterType) As Long
...
'×òåíèå 3-õ áàéòîâîãî ïëàâàþùåãî
Public Declare Function ReadFloat24 Lib "owen_io" _
(ByVal adr As Long, _
ByVal adr_type As Long, _
ByVal cmd As String, _
res As Single, _
ByVal Index As Integer) _
As Long
...
Public Function getFloat24(ByVal adr As Long, _
ByVal adr_type As Long, _
ByVal cmd As String, _
ByVal Index As Integer) As Single
Dim val As Single
Dim ret As Long
checkReturn ReadFloat24(adr, adr_type, cmd, val, Index)
getFloat24 = val
End Function
Function checkReturn(ret As Long)
If ret < 0 Then
Dim errstr As String
errstr = Space$(300)
LastErrToStr errstr
errstr = Left$(errstr, InStr(errstr, Chr(0)) - 1)
Err.Raise 12345, , "Error: " + errstr
End If
End Function
Стучусь через окно immediate:
Код:
checkreturn openport(COM_3,er9600,parity_NONE,databits_8,stopbit_1,RS485CONV_AUTO)
? getFloat24(16,0,"Pv",-1)
Выдаёт ошибку "Размер поля данных не соответствует ожидаемому". Пробовал менять индекс, результат аналогичен. Пробовал строки "PV ", "Pv ", "PV", "Pv", "AL-d". Результат аналогичен. Пробовал RS485CONV_MANUAL, аналогично. Если меняю адрес, ошибка меняется на что-то типа "нет ответа". Если меняю строку на что-то невнятное, говорит что-то вроде "параметр не найден".
С конфигуратором связывается.
ТРМ-101 с прошивкой v03.0023. Файл конфигурации попробую прикрепить... http://www.owen.ru/forum/attachment....1&d=1490979053
Подключён через конвертер USB-RS232 мастеркит и АС-3М
Помогите пожалуйста!