
📌 Bir Bakışta: Visual Basic 6.0 Donanım Haberleşmesi
| Geliştirme Ortamı | Microsoft Visual Basic 6.0 (SP6) |
|---|---|
| Seri Port Kontrolü | MSComm32.ocx Bileşeni veya Win32 COM API |
| Paralel Port Kontrolü | InpOut32.dll / Doğrudan Port Adresleme (0x378) |
| Kullanım Alanı | Endüstriyel Otomasyon, Mikrokontrolcü İletişimi (PIC, AVR), Röle Kartları |
| Avantajı | Hızlı Grafik Arayüz Geliştirme, Olay Odaklı (Event-Driven) Veri Okuma |
| İşletim Sistemi | Windows 98, XP, 7 ve 32-bit Uyumluluk Modları |
Visual Basic 6.0 eski bir teknoloji olmasına karşın, endüstriyel elektronik laboratuvarlarında ve hobi projelerinde seri port (COM) ve paralel port (LPT) üzerinden donanım kontrolünü öğrenmek için en anlaşılır platformlardan biri olmaya devam etmektedir.
Giriş: Gömülü Dünyaya Açılan Kapı
Modern işletim sistemlerinde doğrudan donanım portlarına erişim güvenlik gerekçesiyle kısıtlanmış olsa da, Visual Basic 6.0 döneminde RS-232 seri hatları ve 25 pinli paralel yazıcı portları, mikrokontrolcüler ve röle kartları ile haberleşmenin ana arteriydi [1].
1. MSComm Bileşeni ile Seri Port Haberleşmesi
VB6 ortamında seri port kontrolü için Microsoft’un yerleşik MSComm nesnesi kullanılır:
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. Paralel Port (LPT1) Üzerinden LED ve Röle Tetikleme
Windows NT tabanlı sistemlerde (XP ve sonrası) doğrudan port okuma/yazma (IN / OUT komutları) engellendiğinden, çekirdek düzeyinde sürücü sağlayan InpOut32.dll kullanılır [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
Bağımsız Kaynaklar ve Referanslar
[1] Jan Axelson: Serial Port Complete: COM Ports and USB Virtual COM Ports
[2] High Performance Parallel Port Interfacing: Parallel Port Complete and InpOut32 Architecture Reference