
📌 Auf einen Blick: Visual Basic 6.0-Hardwarekommunikation
| Entwicklungsumgebung | Microsoft Visual Basic 6.0 (SP6) |
|---|---|
| Kontrolle der seriellen Schnittstelle | MSComm32.ocx Komponente oder Win32 COM API |
| Parallelport-Steuerung | InpOut32.dll / Direkte Portadressierung (0x378) |
| Einsatzgebiet | Industrielle Automatisierung, Mikrocontroller-Kommunikation (PIC, AVR), Relaiskarten |
| Vorteil | Schnelle grafische Schnittstellenentwicklung, ereignisgesteuertes Datenlesen |
| Betriebssystem | Kompatibilitätsmodi für Windows 98, XP, 7 und 32-Bit |
Obwohl es sich bei Visual Basic 6.0 um eine alte Technologie handelt, bleibt es eine der verständlichsten Plattformen zum Erlernen der Hardware-Steuerung über serielle Schnittstellen (COM) und parallele Schnittstellen (LPT) in industriellen Elektroniklabors und Hobbyprojekten.
Einleitung: Das Tor zur vergrabenen Welt
Obwohl der direkte Zugriff auf Hardware-Ports in modernen Betriebssystemen aus Sicherheitsgründen eingeschränkt ist, waren in der Zeit von Visual Basic 6.0 serielle RS-232-Leitungen und 25-polige parallele Druckerports die Hauptader der Kommunikation mit Mikrocontrollern und Relaiskarten [1].
1. Kommunikation über die serielle Schnittstelle mit der MSComm-Komponente
Das von Microsoft integrierte MSComm-Objekt wird zur Steuerung der seriellen Schnittstelle in der VB6-Umgebung verwendet:
Private Sub Form_Load()
MSComm1.CommPort = 1 ' COM1 Portu
MSComm1.Settings = "9600,N,8,1" ' 9600 Baud, Parity Yok, 8 Data Biti, 1 Stop Biti
MSComm1.InputLen = 0 ' Tüm tamponu oku
MSComm1.PortOpen = True ' Portu aç
End Sub
Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = comEvReceive Then
txtGelenVeri.Text = txtGelenVeri.Text & MSComm1.Input
End If
End Sub
2. LED- und Relaisauslösung über Parallelport (LPT1)
Da das direkte Lesen/Schreiben von Ports (IN / OUT-Befehle) in Windows NT-basierten Systemen (XP und höher) blockiert ist, wird InpOut32.dll verwendet, das einen Treiber auf Kernel-Ebene bereitstellt [2]:
Private Declare Function Inp Lib "inpout32.dll" Alias "Inp32" (ByVal PortAddress As Integer) As Integer
Private Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)
' LPT1 Data Port Adresi: &H378 (Hex)
Private Sub btnLediYak_Click()
Out &H378, 255 ' Tüm pinleri (D0-D7) 5V Yüksek (HIGH) seviyeye çek
End Sub
Unabhängige Quellen und Referenzen
[1] Jan Axelson: Serial Port Complete: COM-Ports und virtuelle USB-COM-Ports
[2] Hochleistungs-Parallelport-Schnittstelle: Parallel Port Complete und InpOut32-Architekturreferenz