VisualBasic Modem (COM Port) anwählen und daten auswerten

tempo.1

Cadet 4th Year
Registriert
Feb. 2007
Beiträge
93
Hallo Leute,

Mal wieder plagt mich da ein Problem, bei dem mir das googeln nich mehr weiterhilft.
Folgendes Problem:
Mittels der COM Schnittstelle greife ich auf ein Modem zu, welches ich mit AT Befehlen steuer.
Das ganze geschieht mit Hilfe von einem kleinen Visual Basic Programm.
Code:
Sub SendSerialData()
        Dim returnStr As String = ""
        Using com1 As IO.Ports.SerialPort = My.Computer.Ports.OpenSerialPort("COM1", 9600)
            com1.Write("AT=0" & vbCr)
            Do
                Dim Incoming As String = com1.ReadLine()
                If Incoming Is Nothing Then
                    Exit Do
                Else
                    returnStr &= Incoming & vbCrLf
                End If
            Loop
            com1.Close()
        End Using
End Sub
Jetzt versuche ich mal mein Problem zu beschreiben.
grob gesagt: Der hängt. An der Stelle: Dim Incoming As String = com1.ReadLine() wartet er auf eine eingabe und setzt das Incoming nicht auf Nothing. Wenn ich an der Stelle das modem anrufe, speichert er die "Ring" Events auch schön im returnStr. Wenn ich jedoch wieder auflege, dann bleibt er wieder an der selben stelle stehen und wartet auf eine message vom Modem. Kann ich hier nicht irgendwie eine Interupt oder eventgesteuerte schleife machen?
Und das zweite ist, dass er nicht wählt, wenn das Programm normal (also nicht im einzelschritt) startet.
Dann is er einfach zu schnell. ATD T**** wird zwar gesendet, jedoch bevor eine Verbindung aufgebaut wird, is er schon bei com1.Close() und legt auf. Gibt es da eine Möglichkeit das der Code erst dann weiter macht, wenn sich das modem verbunden hat?
Das Projekt hat eine Randbedingung:
Es soll in Visual Basic Programmiert werden.
Und mir steht nur das VisualStudio 2008 zur Verfügung

Ich hoffe, ich konnte das Problem klar darstellen und dort draußen ist jemand, der sich damit auskennt.
Danke schonmal.

Gruß
 

Ähnliche Themen

Zurück
Oben