RS232 Hex versturen en ontvangen

Homeseer Forum in het Nederlands (DUTCH forum)

Moderator: Ruud

Post Reply
maikelwijnen
Starting Member
Starting Member
Posts: 41
Joined: Tue Jun 16, 2009 9:15 pm
Location: Netherlands

RS232 Hex versturen en ontvangen

Post by maikelwijnen »

Hoi,

Ik probeer een plugin die Hex gegevens stuurt over RS232
Het zenden lukt al wel via hs.SendToComPort(1, Chr("&HFF")) (Zend FF)
Als de hardware het goed heeft ontvangen stuurd hij de zelfde code terug (Of een foutcode) Via een Datamonitor heb ik kunnen zien dat de hardware doet wat hij moet doen, maar in homeseer krijg ik dit niet voor elkaar.
Als ik via hs.GetComPortData gegevens wil ontvangen is het nooit wat ik stuur.
Ik heb al geprobeerd om via hs.GetComPortCount pas een actie te doen als deze 1 is maar ik ontvang nooit FF

Kan het zijn dat hij eerst 1 F stuurt, en dan de andere F.
Moet ik nog iets converteren?

Ik hoop dat jullie me kunnen helpen, want ik heb er al koppijn van. :roll:
maikelwijnen
Starting Member
Starting Member
Posts: 41
Joined: Tue Jun 16, 2009 9:15 pm
Location: Netherlands

Re: RS232 Hex versturen en ontvangen

Post by maikelwijnen »

Ik heb de verlossende google's gevonden. Het werkt nu en zal het script hier posten.

Code: Select all

    Sub OpenComPort()
        Dim e As String

        e = hs.OpenComPort(ComPort, "9600,N,8,1", 0, "", "")
        If e <> "" Then
            hs.writelog("ERROR", "Error opening COM" & ComPort.ToString & ": " & e)
        End If

        hs.writelog(PLUGIN_NAME, SendToCom("FF", 500)) '(Commando, Na hoeveel ms timeout)
        hs.writelog(PLUGIN_NAME, SendToCom("41", 500))
        hs.writelog(PLUGIN_NAME, SendToCom("1", 500))
        hs.writelog(PLUGIN_NAME, SendToCom("61", 500))
        hs.writelog(PLUGIN_NAME, SendToCom("10", 500))
        hs.writelog(PLUGIN_NAME, SendToCom("7A", 500))
    End Sub

    Function SendToCom(ByRef Data As String, ByRef Timeout As Integer) As String
        Dim ReceiveData As String = ""
        Dim Starttime As DateTime = DateTime.Now()
        Dim Endtime As DateTime
        Dim Span As TimeSpan

        ' Send Hex
        hs.SendToComPort(ComPort, Chr("&H" & Data))

        ' Receive Hex
        Do While ReceiveData = ""
            System.Threading.Thread.Sleep(1)
            ReceiveData = hs.GetComPortData(ComPort)

            Endtime = DateTime.Now()
            Span = Endtime - Starttime

            If Span.TotalMilliseconds > Timeout Then
                Return "Timeout by " & Int(Span.TotalMilliseconds - Timeout) & "ms"
                Exit Function
            End If
        Loop

        Try
            Return (Hex(Asc(ReceiveData)))
        Catch ex As Exception
            Return "No data"
        End Try

    End Function
grts Maikel
Post Reply

Return to “Homeseer algemeen Forum”