Seite 1 von 1

UDP-Steuerung mit TinyNet.dll unter VB.Net

Verfasst: Donnerstag 15. Oktober 2009, 14:14
von RobertS
Mit der TinyNet.dll vom codeproject.com ist es einfach eine UDP-Kommunikation unter VB/C#.Net zu programmieren.
Die DLL ist auf der Site "http://www.codeproject.com/KB/IP/TinyUDP.aspx" beschrieben und kann von hier auch runtergeladen werden.

Grüße
RobertS

Code: Alles auswählen

Imports Tiny.UDP    ' TinyNET.dll from http://www.codeproject.com/KB/IP/TinyUDP.aspx
Imports System.Net
Imports System.Net.Sockets

Public Class Form1
    Inherits System.Windows.Forms.Form

    Dim server As New TinyServer
    Dim WithEvents client As TinyClient

    Dim ReadString As String = ""                                       ' Zeichenbuffer

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Show()

        server.ClientPort = 75                                          ' Sende Port
        server.Protocol = ProtocolType.Udp
        server.Encode = EncodingType.ASCII

        client = New TinyClient                                         ' Client Objekt erstellen
        client.ClientPort = 77                                          ' Empfangs Port    
        client.Protocol = ProtocolType.Udp
        client.Encode = EncodingType.ASCII

        Timer1.Enabled = True                                           ' Der Client startet einen eigenen Prozess und muss deshalb etwas verzögert starten
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Try
            client.Stop()                                               ' Prozess beenden
        Catch ex As Exception
        End Try
        End
    End Sub

    Private Sub client_AfterReceive(ByVal sender As Object, ByVal e As System.EventArgs) Handles client.AfterReceive
        ReadString = client.Message                                     ' Zeichen vom Client-Thread buffern
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Timer1.Enabled = False
        client.Start()                                                  ' Client Start
        Me.Text = "Listen at Port: " & client.ClientPort                ' Port anzeigen

        Timer2.Enabled = True                                           ' Empfangs-Anzeige-Timer starten
        server.ClientAddress = IPAddress.Parse("255.255.255.255")       ' Broadcast IP einstellen
        server.SendMessage("wer da?" + vbCrLf)                          ' Broadcast Komando senden
        server.SendMessage("wer da?" + vbCrLf)                          ' Muß 2 Mal gesendet werden
        server.ClientAddress = IPAddress.Parse("123.123.221.26")        ' Steckdosen IP einstellen
    End Sub

    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        If Len(ReadString) > 0 Then                                     ' Empfangene Zeichen ?
            TextBox1.Text += ReadString                                 ' Anzeigen
            ReadString = ""                                             ' Buffer zurücksetzen
        End If
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        server.SendMessage("wer da?" + vbCrLf)              ' Status abfragen
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        server.SendMessage("Sw_on1user" & Chr(0) & vbCrLf)   ' Einschalten
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        server.SendMessage("Sw_off1user" & Chr(0) & vbCrLf)  ' Ausschalten
    End Sub
End Class

Re: UDP-Steuerung mit TinyNet.dll unter VB.Net

Verfasst: Freitag 16. Oktober 2009, 10:34
von andy
Danke

LG Andy

Re: UDP-Steuerung mit TinyNet.dll unter VB.Net

Verfasst: Donnerstag 18. März 2010, 21:33
von AnelHomeUser
So gehts auch ohne TinyDLL:

Code: Alles auswählen

    Private Sub SwitchPower(ByVal SwitchON As Boolean, ByVal PowerLineNumber As Integer)
        Dim oUDPServer As UdpClient = Nothing
        Try
            oUDPServer = New UdpClient
            oUDPServer.Connect(New IPEndPoint(IPAddress.Parse("192.168.178.05"), 75))
            Dim sCommand As String
            If SwitchON Then
                ' Anschalten
                sCommand = "Sw_on"
            Else
                ' Ausschalten
                sCommand = "Sw_off"
            End If
            Dim aoSendData As Byte() = System.Text.Encoding.ASCII.GetBytes(sCommand & PowerLineNumber & "user" & Chr(0) & vbCrLf)
            oUDPServer.Send(aoSendData, aoSendData.Length)
        Catch ex As Exception
            Console.WriteLine(ex)
        Finally
            If Not (oUDPServer Is Nothing) Then
                oUDPServer.Close()
            End If
        End Try
    End Sub

Re: UDP-Steuerung mit TinyNet.dll unter VB.Net

Verfasst: Dienstag 23. April 2013, 14:52
von burn
Hallo zusammen,

so ähnlich habe ich es auch mit den VB.net Boardmitteln gemacht.
Kann mir vielleicht jemand zeigen, wie ich das mit mit der Zeitverzögerung mache?

Es steht ja in der Anleitung, dass dieser Wert als 16 Bit Integer übergeben werden muss (in VB.net also "short"?)

Mit System.Text.Encoding.ASCII.GetBytes wird ja der komplette string in byte umgewandelt. Wie bekomme ich es hin, dass ich hier den 16Bit Integer übergeben kann?

Lg Burn
Ps.: "Sw_off" habe ich durch "St_off" ersetzt. daran liegts also nicht :)