Hallo
Bin heute zufällig bei der verzweifelten Suche nach Hilfe auf Euer Forum gestossen ...
Habe ein Gerät an einem Com Port hängen. In meinem Prog hab ich ein Frame mit Einigen Buttons und einer TextBox um den Port zu testen und abzufragen.
Mit einfachen Befehlen (2 Zeichen) erreiche ich die Ausgabe von bestimmten Werten, die dann im Prog weiterverabeitet werden müssen. Getrennt werden die Zeichenpackete durch ControlChars.CrLf.
Leider kommen die Daten (im Vergleich zum Hyperterinal - da funzts) "abgeschnitten" an.
Ich versuchs zu Beschreiben:
Das trennen der Daten nach funktioniert schon. Und meistens (leider nicht immer) bekomm ich auch die richtige Antwort.
Bei der Antwort wird nie mehr der Anfang der Ausgabe abgeschnipselt, sondern am Ende fehlen ein paar Zeichen... Manchmal muss ich öfter klicken um überhaupt Antwort zu erhalten.
Die Anzahl der fehlenden Zeichen variiert und bei weiteren Klicks (also Befehl senden) kommt dann wieder das richtige raus.
Das sieht so aus:
Vollständige Ausgabe (Beispiel):
ID 21845
BR 85
AN 85
PE 85
Unvollständige Ausgabe (Beispiel):
ID 21845
BR 85
AN 85
P
Antworten mit 2 Zeichen stellen weiterhin kein Problem dar, und werden sofort nach dem Senden des Befehls angezeigt (z.B. OK).
Ein weiteres Problem stellt eine bestimmte Ausgabe dar. Sie sieht so aus (aus dem Hyperterminal kopiert):
B1 744
B2 819
B3 1023
B4 630
B5 682
B6 1170
LX 9550
TR 600
Diese Ausgabe kann mein Prog überhaupt nicht darstellen.
Mir kommt irgendwie vor, das es entweder Befehle nicht abschickt, oder irgendwelche Timeouts beim Empfanden voreingestellt sind.
Das Gerät schickt die Antworten sicher gleich weg. Wo gehen die denn verloren?!?
Irgendwie reagiert mein Prog nicht so schnell wie zB das Hyperterminal. Da muss ich nie einen Befehl 2x oder öfter schicken damit er gehört wird...
Die InBufferSize-Eigenschaft des ComControl ist auf 1024 eingestellt. Das sollte wohl reichen...
Gibt es Timouts, die das ComControl voreingestellt hat?
Unten hab ich noch den Code der der OnComm Prozedur angehängt.
Ich hoffe jemand von Euch kann mir hier weiterhelfen...
Danke schonmal vorab
mirmi
Anbei noch der Code:
Select Case comcom.CommEvent
Case 1006
MsgBox("Datenverlust!")
Case 1008
MsgBox("Datenverlust!")
Case 2
Dim strTexttest As String
strTexttest = strTexttest & comcom.Input
Dim arrText() As String = strTexttest.Split(ControlChars.Cr)
Select Case Microsoft.VisualBasic.Left(arrText(0), 2)
Case "MM"
txtOutput.Text = arrText(0) & ControlChars.CrLf & arrText(1)
Case "ID"
txtOutput.Text = arrText(0) & ControlChars.CrLf & arrText(1) & ControlChars.CrLf & arrText(2) & ControlChars.CrLf & arrText(3)
Case "OK"
txtOutput.Text = arrText(0)
Case "B1"
txtOutput.Text = arrText(0) & ControlChars.CrLf & arrText(1) & ControlChars.CrLf & arrText(2) & ControlChars.CrLf & arrText(3) & _
ControlChars.CrLf & arrText(4) & ControlChars.CrLf & arrText(5) & ControlChars.CrLf & arrText(6) & ControlChars.CrLf & arrText(7)
Case "NM"
txtOutput.Text = arrText(0)
Case "BY"
txtOutput.Text = arrText(0)
End Select
End Select