vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Serielles Protokoll ohne Handshake empfangen 
Autor: Laserbrenner
Datum: 21.02.12 17:57

Hallo,
hier nochmal meine Lösung wie ich es bis jetzt mache:
Option Explicit On
Option Strict Off
Imports System.IO.Ports
Imports Microsoft.Win32
Imports Microsoft.VisualBasic
 
 
Public Class Form1
 
    Dim T3_IO_Status_Array(0 To 100) As Byte
    Dim ByteArray(0 To 100) As Byte
 
    Private Delegate Sub DelegateSub()
    Private Aktualisieren As New DelegateSub(AddressOf updateForm)
 
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
      Handles Me.Load
        'Com-Ports finden
        Dim EinzelPort As String
        For Each EinzelPort In My.Computer.Ports.SerialPortNames
            ComboBox1.Items.Add(EinzelPort)
        Next EinzelPort
 
    End Sub
    Private Sub verbinden_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles verbinden.Click
        With SerialPort1
            If Not .IsOpen Then
                Try
                    .PortName = ComboBox1.Text
                    .BaudRate = 38400
                    .DataBits = 8
                    .Parity = Parity.None
                    .StopBits = StopBits.One
                    .WriteTimeout = 1000               ' 1000 ms = 1 Sek.
                    .ReadTimeout = 1000             ' 1000 ms = 1 Sek.
                    .ReceivedBytesThreshold = 8
                    .Open()
                    verbinden.BackColor = Color.Green
                    verbinden.Text = "Verbunden"
                Catch ex As Exception
                    MessageBox.Show(ex.Message, "Fehler beim Open", _
                      MessageBoxButtons.OK, MessageBoxIcon.Error)
                    Exit Sub
                End Try
            End If
        End With
    End Sub
 
    Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As _
      System.IO.Ports.SerialDataReceivedEventArgs) Handles _
      SerialPort1.DataReceived
        'System.Threading.Thread.Sleep(50)
        Delay(50)           'warten bis Telegramm empfangen ist
        If DatenPruefen() = True Then
            If ByteArray(1) = &H30 And ByteArray(2) = &H1 And ByteArray(6) = _
              &H66 Then   'Staus
                ByteArray.CopyTo(T3_IO_Status_Array, 0)  'Datenübertrag
                Me.Invoke(Aktualisieren)
            End If
        End If
    End Sub
 
    Function DatenPruefen() As Boolean
        DatenPruefen = False
        With SerialPort1
            Try
                Dim count As Integer = .BytesToRead  'Anzahl der empangenden 
                ' Byts
                .Read(ByteArray, 0, count)
                If ByteArray(0) = 255 And Checksumme(ByteArray) = True Then
                    DatenPruefen = True
                End If
                .DiscardInBuffer()
            Catch ex As Exception
                MessageBox.Show(ex.Message, "Fehler beim Empfangen" & _
                  "T3-ComPort...")
                If .IsOpen Then .DiscardInBuffer()
            End Try
        End With
    End Function
 
    Function Checksumme(ByVal Daten As Array) As Boolean
        Dim summe As Integer = 0
        For zähler As Integer = 2 To 39
            summe = summe + (Daten(zähler))
        Next
        summe = summe Mod 256
        If summe = 255 Then summe = 0
        If Daten(40) = summe Then
            Checksumme = True
        Else
            Checksumme = False
        End If
    End Function
 
    Private Sub Delay(ByVal Zeit As Integer)
        Dim Zeit1 As Integer = System.Environment.TickCount
        While (System.Environment.TickCount - Zeit1) < Zeit
            Application.DoEvents()
        End While
    End Sub
    Sub updateForm()
        TextBox1.Text = "Hallo"
    End Sub
End Class
falls jemand von euch eine bessere Idee hat dann immer gerne her damit

gruß
Matthias
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Serielles Protokoll ohne Handshake empfangen4.282Laserbrenner16.02.12 19:42
Re: Serielles Protokoll ohne Handshake empfangen2.902sv0001018.02.12 12:13
Re: Serielles Protokoll ohne Handshake empfangen3.064Laserbrenner19.02.12 13:09
Re: Serielles Protokoll ohne Handshake empfangen2.915ModeratorDaveS19.02.12 13:10
Re: Serielles Protokoll ohne Handshake empfangen2.953Manni0119.02.12 16:02
Re: Serielles Protokoll ohne Handshake empfangen2.993Laserbrenner20.02.12 12:18
Re: Serielles Protokoll ohne Handshake empfangen3.060Laserbrenner21.02.12 17:57
Re: Serielles Protokoll ohne Handshake empfangen2.989Preisser21.02.12 20:08
Re: Serielles Protokoll ohne Handshake empfangen2.885Manni0121.02.12 20:30
Re: Serielles Protokoll ohne Handshake empfangen2.871Laserbrenner22.02.12 14:51
Re: Serielles Protokoll ohne Handshake empfangen2.845Laserbrenner23.02.12 20:50
Re: Serielles Protokoll ohne Handshake empfangen2.826Laserbrenner23.02.12 20:52
Re: Serielles Protokoll ohne Handshake empfangen2.872Laserbrenner23.02.12 20:53
Re: Serielles Protokoll ohne Handshake empfangen2.841Laserbrenner28.02.12 07:42
Re: Serielles Protokoll ohne Handshake empfangen2.794Laserbrenner19.03.12 06:43
Re: Serielles Protokoll ohne Handshake empfangen2.783ModeratorDaveS19.03.12 07:19

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel