vb.net在类之间传递字符串

时间:2020-09-25 09:29:37

标签: vb.net forms class visual-studio-2019

在处理串行通信时,我完全陷入了相对简单的任务。在VB6中没有任何问题,但是我找不到VB.net的解决方案

我想做什么:

1 /创建具有多种形式的应用程序来控制乐器。

2 /仪器可以随时发送消息。我需要捕获此类消息并将其传递给给定的表单。

如果我具有单个表单应用程序,并且所有代码都在一个类(表单)内,则没有任何问题。

我的想法是创建处理所有串行通信事件(serialcom)的模块或类,并以所有形式使用此模块或类的子或函数。它似乎部分起作用,但不是完全起作用。我当前的问题是我可以调用Subs SerialRead,但是除了MSGBox之外,我都无法传递结果字符串。我的意思是-我可以捕获传入的字符串,但无法将其传递到TextBox中,因此可以在MsgBox中显示它。我检查了数百个线程,但没有找到有效的解决方案。

我的两个课在下面。

主窗口:

Imports System.Threading
   Public Class hlavni
        Public sp As New serialcom
        Private Sub InitBt_Click(sender As Object, e As EventArgs) Handles InitBt.Click
            sp.SP_Open("COM1", 57600)
        End Sub
    
        Private Sub ExitBt_Click(sender As Object, e As EventArgs) Handles ExitBt.Click
            sp.SP_Close()
            Me.Close() 
        End Sub
    
        Private Sub PowerBt_Click(sender As Object, e As EventArgs) Handles PowerBt.Click
            sp.SP_Write("P" & vbCr)
        End Sub
    
        Private Sub EEpromReadBt_Click(sender As Object, e As EventArgs) Handles EEpromReadBt.Click
            sp.SP_Write("E" & vbCr)
        End Sub
    End Class

串行通信类:

Imports System.IO.Ports
Imports System.Threading

    Public Class serialcom
        WithEvents SP As New SerialPort
        Public WithEvents zprava As String
    
        Public Sub SP_Open(ByVal P As String, ByVal B As Integer)
            SP.PortName = P
            SP.BaudRate = B
            SP.Open()
        End Sub
    
        Public Sub SP_DataReceived(sender As System.Object, e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SP.DataReceived
            ReceivedText(SP.ReadExisting())
        End Sub
    
        Public Sub ReceivedText(ByVal [text] As String) 'input from ReadExisting
            hlavni.outputRTB.Text &= [text] 'append text
            MsgBox(text)
        End Sub
    
        Public Sub SP_Close()
            SP.Close()
        End Sub
    
        Public Function SP_Read()
            Dim zprava As String = SP.ReadExisting
            zprava = SP.ReadExisting
            Return zprava
        End Function
    
        Public Function SP_Write(ByVal Str As String)
            SP.WriteLine(Str)
            Return Str
        End Function
    
    
    End Class

任何想法或显示方向表示赞赏。 谢谢 扬

0 个答案:

没有答案
相关问题