vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 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: Problem mit Aktualisierung einer Textbox bei seriellem Empfang 
Autor: Manfred X
Datum: 19.12.16 06:20

Hallo!

Du greifst per "Form1" offenbar auf die Defaultinstanz des
Formulars zu. Allem Anschein nach ist das nicht die Instanz der
Form-Klasse, deren Textbox Du ansprechen möchtest.

Es gibt diverse Grundregeln im OOP.
Eine lautet sinngemäß, daß Klassen per Methodenaufruf mit untergeordneten
Klassen kommunizieren und die untergeordneten Klassen Ereignisse
verwenden, um Informationen zu liefern.
Man sollte NIE von außen auf Controls eines Formulars zugreifen.

Deine Com-Klasse sollte deshalb so oder ähnlich konstruiert werden:
Option Strict On : Option Explicit On
Imports System.IO.Ports
Imports System.Threading
 
Public Class Class_COM
    Private WithEvents _serialPort As SerialPort
 
    Public Event ComStateChanged(ByVal sender As Object, e As EventArgs)
    Public Event Datareceived(ByVal sender As Object, data As String)
 
    Public Function OpenCom(ByVal Comport As String) As Boolean
 
        _serialPort = New SerialPort
        _serialPort.PortName = "COM2"
        _serialPort.BaudRate = 115200
        _serialPort.Parity = 0
        _serialPort.DataBits = 8
        _serialPort.StopBits = StopBits.One
        _serialPort.RtsEnable = True
        _serialPort.DtrEnable = True
        _serialPort.Handshake = 0
        _serialPort.ReadTimeout = 500
        _serialPort.WriteTimeout = 500
 
 
        Try
            _serialPort.Open()
            If _serialPort.IsOpen Then
                RaiseEvent ComStateChanged(Me, EventArgs.Empty)
            End If
            Return _serialPort.IsOpen
        Catch ex As Exception
            Return False
        End Try
 
    End Function
 
    Public Function WriteCom(ByVal message As String) As Boolean
        Try
            _serialPort.WriteLine(message)
            Return True
        Catch
            Return False
        End Try
    End Function
 
    Public Function CloseCom() As Boolean
        Try
            _serialPort.Close()
            RaiseEvent ComStateChanged(Me, EventArgs.Empty)
            Return True
        Catch
            Return False
        End Try
    End Function
 
    Public Function comstatus() As Boolean
        Return _serialPort.IsOpen
    End Function
 
    Private Sub DataReceivedHandler(sender As Object, e As  _
      SerialDataReceivedEventArgs) Handles _serialPort.DataReceived
 
        Dim sp As SerialPort = CType(sender, SerialPort)
        Dim indata As String = sp.ReadExisting()
 
        RaiseEvent Datareceived(Me, indata)
    End Sub
 
End Class
Im Formular werden die Ereignisse verarbeitet. Etwa so ...
Public Class frmCom
 
    Dim WithEvents myCom As New Class_COM
 
    Dim WithEvents btnSenden As New Button _
        With {.Parent = Me, .Text = "Senden"}
 
    Dim txtState As New TextBox _
        With {.Parent = Me, .Top = 50}
    Dim txtData As New TextBox _
        With {.Parent = Me, .Top = 100}
 
    Private Sub frmCom_Load(sender As System.Object, _
        e As System.EventArgs) Handles MyBase.Load
 
        If Not myCom.OpenCom("xxxx") Then
            MsgBox("Port kann nicht geöffnet werden")
        End If
 
    End Sub
 
    Private Sub mycom_ComStateChanged(sender As Object, _
        e As System.EventArgs) Handles myCom.ComStateChanged
 
        txtState.Text = If(myCom.comstatus, "Open", "Close")
    End Sub
 
    Private Sub mycom_Datareceived(sender As Object, _
        data As String) Handles myCom.Datareceived
 
        txtData.Text = data
    End Sub
 
    Private Sub btnSenden_Click(sender As Object, _
        e As System.EventArgs) Handles btnSenden.Click
 
        myCom.WriteCom("XXX")
    End Sub
End Class
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Problem mit Aktualisierung einer Textbox bei seriellem Empfa...1.667Lupus5216.12.16 12:41
Re: Problem mit Aktualisierung einer Textbox bei seriellem E...983effeff16.12.16 13:43
Re: Problem mit Aktualisierung einer Textbox bei seriellem E...973Lupus5216.12.16 15:03
Re: Problem mit Aktualisierung einer Textbox bei seriellem E...1.000sv0001016.12.16 17:42
Re: Problem mit Aktualisierung einer Textbox bei seriellem E...1.015Lupus5216.12.16 18:29
Re: Problem mit Aktualisierung einer Textbox bei seriellem E...1.022sv0001016.12.16 19:33
Re: Problem mit Aktualisierung einer Textbox bei seriellem E...1.084Lupus5219.12.16 00:55
Re: Problem mit Aktualisierung einer Textbox bei seriellem E...1.003Manfred X19.12.16 06:20
Re: Problem mit Aktualisierung einer Textbox bei seriellem E...1.059Lupus5219.12.16 10:41
Re: Problem mit Aktualisierung einer Textbox bei seriellem E...1.099Lupus5219.12.16 13:24
Re: Problem mit Aktualisierung einer Textbox bei seriellem E...999Manfred X19.12.16 19:44
Re: Problem mit Aktualisierung einer Textbox bei seriellem E...978Lupus5219.12.16 20:05

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