Показано с 1 по 2 из 2

Тема: DCON хромает моя реализация или баги в документации? Подскажите.

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию DCON хромает моя реализация или баги в документации? Подскажите.

    Установка: непосредственно на компорт подключен МВУ-8 в режиме DCON скорость 9600, без паритета, 8 бит данных и т.д. работаю через MSComm. Всё работает, но замечена странность, прибор отвечает той же строкой, что и послана в него. То есть посылаю:#1021.000A5, наблюдаю включение, но отклик прибора в точности такой-же, то есть та-же строка, хотя по документации он должен быть >[Chk](cr). Для облегчения раздумий привожу участки кода на VB:
    Public Function DCONCRC8(Dannie As String) As String '
    Dim data1, i As Long
    data1 = 0
    For i = 1 To Len(Dannie)
    data1 = data1 + Asc(Mid(Dannie, i, 1))
    Next i
    DCONCRC8 = Hex(data1 Mod 256)

    End Function

    Public Sub DCONOut(Modul As Long, Kanal As Long, DataSet As String)
    MSComm1.Output = "#" + Hex(Modul) + Hex(Kanal) + DataSet + DCONCRC8("#" + Hex(Modul) + Hex(Kanal) + DataSet) + Chr(&HD)
    lstO44ed.AddItem ("#" + Hex(Modul) + Hex(Kanal) + DataSet + DCONCRC8("#" + Hex(Modul) + Hex(Kanal) + DataSet) + Chr(&HD))
    'MSComm1.Output = "#" + Hex(Modul) + Hex(Kanal) + DataSet + Chr(&HD)
    'lstO44ed.AddItem ("#" + Hex(Modul) + Hex(Kanal) + DataSet + Chr(&HD))
    End Sub
    Public Function DCONIn() As String
    Dim BufferPort, ChST As String
    Dim dummie As Long
    BufferPort = ""
    tmrErrorFlag = False
    tmrError.Enabled = True

    While MSComm1.InBufferCount < 3
    dummie = DoEvents
    If tmrErrorFlag = True Then
    tmrError.Enabled = False
    lstO44ed.AddItem (BufferPort)
    DCONIn = "Error Time Out Or Sintax Error Or CheckSum Error"
    Exit Function
    End If
    Wend

    tmrError.Enabled = False

    BufferPort = MSComm1.Input
    If Mid(BufferPort, 1, 1) = ">" Then
    DCONIn = "Done"
    ElseIf Mid(BufferPort, 1, 1) = "?" Then
    DCONIn = "Error Value Out Of Bounds"
    ElseIf Mid(BufferPort, 1, 1) = "!" Then
    DCONIn = "Error Of Connect"
    End If
    lstO44ed.AddItem ("Exit with: " + BufferPort)
    End Function
    Последний раз редактировалось samrat; 20.11.2008 в 14:02. Причина: форматирование кода

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •