Microsoft Visual Studio Community 2019

Elektronik-Labor  Notizen  Projekte  Labortagebuch  Elexs-USB


Auf der Suche nach einer passenden Visual Basic Version für Windows 10 bin ich am Ende bei Microsoft Visual Studio Community 2019 gelandet. Damit kann man nicht nur in C++ programmieren, sondern auch in Visual Basic und in Python.


In der Toolbox findet man die Komponente SerialPort und unter ihren Eigenschaften auch so schöne Sachen wie DtrEnable. Damit habe ich es zuerst versucht, bin aber schnell auf Probleme gestoßen. Anscheinend wird die Abfrage der RI-Leitung nicht unterstützt. Und wenn ich TXD gesetzt habe und dann DRT verändere, schaltet sich TXD automatisch ab. Also musste ein anderer Weg gesucht werden.

Die Lösung liegt in der Verwendung der bewährten RSCOM.DLL. Zum Glück kann man sie noch genauso einbinden wie in älteren Versionen. Für die Entwicklung mit dem Visual Studio ist es wichtig, dass man die DLL in C:/Windows kopiert. Die Deklarationen der DLL-Funktionen dürfen am Anfang des Quelltextes eingefügt werden. Danach geht alles andere fast genauso wie in VB5 und VB6. Hier der Quelltext:

Public Class Form1
    'DLL muss in C:/Windows stehen!!!!
    Declare Function OPENCOM Lib "RSCOM" (ByVal OpenString$) As Integer
    Declare Sub TIMEOUTS Lib "RSCOM" (ByVal b%)
    Declare Sub BUFFERSIZE Lib "RSCOM" (ByVal b%)
    Declare Sub CLOSECOM Lib "RSCOM" ()
    Declare Sub SENDBYTE Lib "RSCOM" (ByVal Dat%)
    Declare Function READBYTE Lib "RSCOM" () As Integer
    Declare Sub SENDSTRING Lib "RSCOM" (ByVal Dat$)
    Declare Function READSTRING Lib "RSCOM" () As String
    Declare Sub CLEARBUFFER Lib "RSCOM" ()
    Declare Function INBUFFER Lib "RSCOM" () As Integer
    Declare Function OUTBUFFER Lib "RSCOM" () As Integer
    Declare Sub DTR Lib "RSCOM" (ByVal b%)
    Declare Sub RTS Lib "RSCOM" (ByVal b%)
    Declare Sub TXD Lib "RSCOM" (ByVal b%)
    Declare Function CTS Lib "RSCOM" () As Integer
    Declare Function DSR Lib "RSCOM" () As Integer
    Declare Function RI Lib "RSCOM" () As Integer
    Declare Function DCD Lib "RSCOM" () As Integer
    Declare Function INPUTS Lib "RSCOM" () As Integer
    Declare Sub TIMEINIT Lib "RSCOM" ()
    Declare Function TIMEREAD Lib "RSCOM" () As Double
    Declare Sub DELAY Lib "RSCOM" (ByVal ms As Double)
    Declare Sub REALTIME Lib "RSCOM" ()
    Declare Sub NORMALTIME Lib "RSCOM" ()


    Dim OpenString As String
    Dim i
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        OpenString = "COM" + TextBox1.Text + ":1200,N,8,1"
        i = OPENCOM(OpenString)
        If i = 0 Then MsgBox("Schnittstelle nicht verfügbar")
        TIMEINIT
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        RTS(1)
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        RTS(0)
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        DTR(1)
    End Sub

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        DTR(0)
    End Sub

    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
        TXD(1)
    End Sub

    Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
        TXD(0)
    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        CheckBox1.Checked = RI()
        CheckBox2.Checked = DSR()
        CheckBox3.Checked = DCD()
        CheckBox4.Checked = CTS()
    End Sub

    Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
        OpenString = "COM" + TextBox1.Text + ":1200,N,8,1"
        i = OPENCOM(OpenString)
        If i = 0 Then MsgBox("Schnittstelle nicht verfügbar")
        TIMEINIT
    End Sub
End Class


Mit diesem Beispiel kann man sehr einfach auch die vielen anderen VB-Programme umsetzen. Die serielle Schnittstelle wurde hier auf COM2 voreingestellt. Das kann jeder nach seinen Anforderungen ändern.  Das Startprojekt heißt WindowsApp1. Download: WindowsApp1.zip



Das fertige Programm habe ich am Ende in InputOutput.exe umbenannt. Download: InputOutput.zip