Hab inzwischen mehr oder weniger rausgefunden, woran es lag. Vielleicht kann mir jemand das Symptom genauer erklären.
Im Code von Form 1 wird auf die LED Klasse mit so zugegriffen: (Beispiel)
|
Visual Basic Quellcode
|
1
2
3
4
5
6
7
|
Public Class Form1
Dim log As New LogControl
Dim led As New ErrorLED
Private Sub neu()
led.an()
End Sub
End Class
|
Im Code der LogControl Klasse wird genauso darauf zugegriffen: (Beispiel)
|
Visual Basic Quellcode
|
1
2
3
4
5
6
|
Public Class LogControl
Dim led As New ErrorLED
Private Sub neu()
led.an()
End Sub
End Class
|
Wenn jetzt die LED von Form1 gestartet werden soll, funktionierts, wird sie hingegen von LogControl aufgerufen, funktionierts nicht und ich bekomme den Fehler, dass der ComPort nicht geöffnet ist.
Habe jetzt das Problem so gelöst:
|
Visual Basic Quellcode
|
1
2
3
4
5
6
|
Public Class LogControl
Dim led As New ErrorLED
Private Sub neu()
Form1.ledweitergabe(True)
End Sub
End Class
|
|
Visual Basic Quellcode
|
1
2
3
4
5
6
7
8
9
10
|
Public Class Form1
Dim log As New LogControl
Dim led As New ErrorLED
Private Sub neu()
led.an()
End Sub
Public Sub ledweitergabe(ByVal ledan As Boolean)
If ledan = True Then led.An() Else led.Aus()
End Sub
End Class
|
Wieso kann man also die LED einschalten, wenn man dies von Form1 aus tut und warum nicht, wenn man es von LogControl aus tut?
PS: Ein Comport wird nicht automatisch geschlossen. Habs mit nem anderen selbstgeschriebenen Programm und der ErrorLED Klasse probiert und der Port blieb ne viertel Stunde offen, bis ich den Versuch abgebrochen habe.