vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

VB.NET - Ein- und Umsteiger
Serielle Kommunikation 
Autor: John_Doe
Datum: 29.01.10 13:17

hi

ich muss per Com-Port mit einem Messgerät kommunizieren können. Das Gerät sendet jede Sekunde einen ASCII Text auf der Schnittstelle. Ich habe dazu mal unten Angehängten Code benutzt, den ich im Netz gefunden habe. Soweit klappt das auch, nur bekomme ich nur immer gerade den aktuellen Wert. Danach kommt nichts mehr.
Benutze ich HTerm, kommen alle Daten an.
Da ich von der Com-Schnittstelle null Plan habe, hoffe ich mal jemand kann mir helfen.

Danke schon mal im Voraus

Imports System.Windows.Forms.Application
Imports System.Security.Principal
Imports System.Text
Imports System.IO.Ports
Imports System.Timers
Imports System.IO
 
Public Class Hauptfenster
    Inherits System.Windows.Forms.Form
 
    Dim objDateiMacher As New System.IO.StreamWriter("data.txt")
    Dim WithEvents SerialPort As New System.IO.Ports.SerialPort("COM3", 38400, _
      Parity.None, 8, StopBits.One)
    Private Delegate Sub DelegateSub()
    Dim buf As String
    Dim Programm As String
    Dim StateConnection As Boolean
    Dim Connecting As New System.Threading.Thread(AddressOf CommStart)
    Private TextboxAktualisieren As New DelegateSub(AddressOf Wertübergabe)
 
    Public Sub Me_Closed(ByVal sender As Object, ByVal e As _
      System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
        objDateiMacher.Close()
    End Sub
 
    Public Sub CommStart()
        With SerialPort
            Do Until .IsOpen
                DoEvents()
                Try
                    .Open()
                Catch ex As Exception : StateConnection = True
                End Try
                If StateConnection Then
                    ProgressBar1.Visible = True
                End If
            Loop
        End With
        StateConnection = False
        ProgressBar1.Visible = False
    End Sub
    Public Sub CommStop()
        With SerialPort
            .Close()
        End With
    End Sub
 
    Public Sub SerialPort_DataReceived(ByVal sender As Object, ByVal e As _
      System.IO.Ports.SerialDataReceivedEventArgs) Handles _
      SerialPort.DataReceived
 
        For i As Int32 = 0 To SerialPort.BytesToRead   ' Alle Bytes einzel 
        ' lesen und anzeigen
            Try
 
                Dim buf As Byte() = {SerialPort.BaseStream.ReadByte}
                Dim enc As New System.Text.ASCIIEncoding()
                Programm = enc.GetString(buf)
                Programm = Programm.Replace(Chr(13), Nothing)
                objDateiMacher.Writeline(Programm)
                Me.Invoke(TextboxAktualisieren)
 
            Catch ex As Exception
                MessageBox.Show("Ein Übertragungsfehler ist aufgetreten.", _
                  "Fehler", MessageBoxButtons.OK)
            End Try
        Next i
    End Sub
 
    Private Sub DataStart()
        With SerialPort
            Dim FomTest As Byte() = {85, 255, 5, 1, 0}
            If .IsOpen Then
                .BaseStream.Write(FomTest, 0, 5)
                Return
            End If
        End With
    End Sub
 
    Private Sub NamenStart()
        With SerialPort
            Dim FomTest As Byte() = {85, 32, 5, 21, 0}
            If .IsOpen Then
                .BaseStream.Write(FomTest, 0, 5)
                Return
            End If
        End With
    End Sub
 
    Private Sub Wertübergabe()
        TextBox1.AppendText(Programm)
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button1.Click
        CommStart()
    End Sub
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button2.Click
        CommStop()
    End Sub
 
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button3.Click
        DataStart()
    End Sub
 
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button4.Click
        NamenStart()
    End Sub
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Timer1.Tick
        If SerialPort.IsOpen And Not StateConnection Then
            Me.Label1.Text = "Schnittstelle geöffnet: " + SerialPort.PortName
        Else
            Me.Label1.Text = "Schnittstelle geschlossen: " + SerialPort.PortName
        End If
        If StateConnection Then
            Me.Label1.Text = "InfoPortTry"
        End If
        If Timer1.Enabled And StateConnection Then
            Timer2.Start()
        End If
    End Sub
 
    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Timer2.Tick
        Me.Label1.Text = "InfoPortBemerkung"
    End Sub
 
End Class
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Serielle Kommunikation1.025John_Doe29.01.10 13:17

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-2025 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