Forum: VB.NET |
Thema:
ComPort Daten werden beim lesen abgeschnitten |
Von:
mirmi li (
10.03.2005 14:11) |
Hallo :)
Bin Neuling in Sachen Com Port Programmierung und hab mal wieder ein paar Fragen ...
Kurz eine Beschreibung meiner Kommunikation:
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.
Jetzt zu meinem 1. Problem: Wenn ich dem Gerät einen Befehl schicke (egal welchen), kommt die richtige Antwort an,
nur leider unvollständig.
D.h. Eigentlich sind nur die Antworten betroffen die mehr als 2 Zeichen (und 2 Abschlusszeichen "Wagenrücklauf" und
"LineFeed") lang sind. Dabei wird eine unbestimmte Anzahl von Buchstaben vorne abgeschnitten. Zumindest das letzte
Zeichen der Antwort (ein LineFeed) wird immer angezeigt.
Schicke ich aber per ButtonClick den Befehl öffter zum Gerät, bekomme ich die Antwort irgendwann vollständig.
Habe die Kommunikation bereits übers Hyperterminal getestet. Das Hyperterminal ist natürlich schlauer als mein Prog
und schafft es jedesmal die vollständige Antwort auszugeben.
Also muss es an meinem Prog liegen. Wie kann ich diese "Datensammlung" sicherstellen?
Mein 2. Problem liegt bei den mit jeder Zeile mitgelieferten Zeichen "Wagenrücklauf" und "LineFeed". Ich muss die
Antwort an diesen Zeichen trennen und in Variablen abspeichern. Kann ich das mit dem String.Split-Methode lösen?
Und wie lauten die VB Code tauglichen Bezeichnungen für "Wagenrücklauf" und "LineFeed"?
Noch eine 3. Kleinigkeit. Ich möchte bei einer Integer-Variable feststellen, ob Sie einen Wert zugewiesen hat, oder
nicht. Wie mache ich das? intVariable = "" funzt hier nicht :(
Fragen über Fragen ;)
Ich danke vorab fürs weiterhelfen :)
mirmi
Anbei noch mein Code:
(Die variable intComPort wird an anderer Stelle belegt)
Private Sub cmdPortOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPortOpen.Click
'ComPort öffnen
comcom.CommPort = intComPort
comcom.PortOpen = True
End If
End Sub
Private Sub cmdReadParams_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
cmdReadParams.Click
'Parameter auslesen mit PR
comcom.Output = "PR" & vbCr
End Sub
Private Sub cmdReset_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdReset.Click
'Reset anfordern mit RS
comcom.Output = "RS" & vbCr
End Sub
Private Sub cmdReadValues_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
cmdReadValues.Click
'Ausgabe der Durchnittswerte mit AV anfordern
comcom.Output = "AV" & vbCr
End Sub
Private Sub cmdSimON_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSimON.Click
'Simulationsmodus einschalten mit SM
comcom.Output = "SM1" & vbCr
End Sub
Private Sub cmdSimOF_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSimOF.Click
'Simulationsmodus ausschalten mit SM
comcom.Output = "SM0" & vbCr
End Sub
Private Sub cmdComClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
cmdComClose.Click
'ComPort schliessen
comcom.PortOpen = False
End Sub
Private Sub comcom_OnComm(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comcom.OnComm
Select Case comcom.CommEvent
Case 1006
MsgBox("Datenverlust!")
Case 1008
MsgBox("Datenverlust!")
Case 2
txtOutput.Text = comcom.Input
End Select
End Sub
Betreff |
Von |
Datum |
|
  |
Re: ComPort Daten werden beim lesen abgeschnitten
Hallo nochmal :)<br>Bin schon ein bischen weitergekommen...<br>Zu den Problemen 2 und 3 hier die Antworten:<br>Antwort zu 2.: vbcr und vblf bzw. in VB.net ControlChars.Lf und ControlChars.Cr bzw.... |
 |
 |
 |
|
|
G.
Guest
|
12.03.2005 10:02 |
|
  |
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!