
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