Forum: VB.NET |
Thema:
Re: ComPort Daten werden beim lesen abgeschnitten |
Von:
G. Guest (
12.03.2005 10:02) |
Hallo nochmal :)
Bin schon ein bischen weitergekommen...
Zu den Problemen 2 und 3 hier die Antworten:
Antwort zu 2.: vbcr und vblf bzw. in VB.net ControlChars.Lf und ControlChars.Cr bzw. ControlChars.CrLf
Antwort zu 3.: if int > 0 then
Leider hackts mit Problem 1 immer noch.
Ich versuchs zu Beschreiben:
Das trennen der Daten funktioniert schon. Und meistens (leider nicht immer) bekomm ich auch die richtige Antwort.
Bei der Antwort wird jetzt nicht mehr der Anfang der Ausgabe abgeschnipselt, sondern am Ende fehlen ein paar Zeichen...
Die Anzahl der fehlenden Zeichen variiert und bei weiteren Klicks (also Befehl senden) kommt dann wieder das richtige raus.
Das sieht dann so aus:
Vollständige Ausgabe:
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.
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
Betreff |
Von |
Datum |
|
  |
Re: ComPort Daten werden beim lesen abgeschnitten
Wen's interressiert, hier kommt die Lösung:<br>:)<br><br>Beim empfangen wird der Output Buffer an eine Prozdur übergeben:<br>strOutput = strOutput & comcom.Input<br>IncomeData(strOutput)<br><br>Die Prozedur stellt... |
 |
 |
 |
|
|
mirmi
li
|
19.03.2005 11:33 |
|
|
Raphael
Crivelli
|
20.03.2005 10:52 |
|
|
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!