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.
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ß
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
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ß