Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите разобраться с comport

92K
20 января 2014 года
livtaras
1 / / 20.01.2014
Здравствуйте!!! У меня такая проблема, есть некое устройство которое работает по протоколу MODBUS RTU(к компъютеру подключено через comport), на него подается команда на считывание информации, оно в ответ передает даныные(ток, напряжение, состояние входов). Команду на считывание я подал, устройство ответило, но в ответе вместо 11 байт приходит 22.
Ответ который я получаю:
01 00 03 00 06 00 03 00 20 04 03 00 22 20 00 00 00 00 40 04 4C 04
Нужный ответ:
01 03 06 03 D0 03 97 00 00 51 3C




Код:
' Кнопка "Запрос"
Private Sub Command3_Click()
Dim Buffer() As Byte
Dim voltage As Integer
Dim Current As Integer
TextI = ""
If MSComm1.PortOpen = False Then
    Text1.Text = "ERROR SEND"
End If
If MSComm1.PortOpen = True Then
    MSComm1.Output = Chr(&H1) & Chr(&H3) & Chr(&H0) & Chr(&H5) & Chr(&H0) & Chr(&H3) & Chr(&H15) & Chr(&HCA)
    Buffer = MSComm1.Input
    Debug.Print "=== BOF ==="
For i = LBound(Buffer) To UBound(Buffer)
Debug.Print Right("0" & Hex(Buffer(i)), 2) & " ";
voltage = 256 * Buffer(6) + Buffer(8)
Text2.Text = voltage & "B"
Current = 256 * Buffer(10) + Buffer(12)
Text3.Text = Current & "A"
Text1.Text = Buffer(10) & " " & Buffer(11) & " " & Buffer(12) & " " & Buffer(13)
 
Next i
Debug.Print
Debug.Print "=== EOF ==="
 
End If
End Sub
Настройки порта

Код:
Private Sub Form_Load()

MSComm1.CommPort = 1
    ' 19200 baud, no parity, 8 data, and 1 stop bit.
   MSComm1.Settings = "19200, N, 8, 1"
    ' Tell the control to read entire buffer when Input
   ' is used.
   MSComm1.InputLen = 0
    ' Open the port.
   MSComm1.PortOpen = True
End Sub
327
20 января 2014 года
UserNet2008
748 / / 03.04.2010
Не очень ясно вот здесь:
 
Код:
MSComm1.Output = Chr(&H1) & Chr(&H3) & Chr(&H0) & Chr(&H5) & Chr(&H0) & Chr(&H3) & Chr(&H15) & Chr(&HCA)
Chr это совсем другое.

Если Вы setup флаг тогда примерно так:
 
Код:
MSComm1.Output = &H1 And &H3 And .......
Нужно смотреть в сторону bit-операций
7
21 января 2014 года
@pixo $oft
3.4K / / 20.09.2006
Рекомендую всмотреться и задуматься. Нули на чётных позициях говорят о том, что приходит юникод. Соответственно, на это надо ориентироваться и учитывать при обработке.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог