Ich entwickle eine Anwendung in VB 2010, wobei ich einen Befehl an die SPS über die serielle Schnittstelle senden und die Daten von PLC in String erhalten.Trennen von Strings fester Länge von dynamischen String Vb.net
Ich habe entfernt unerwünschte Inhalte der Zeichenfolge von der SPS empfangen und die endgültige Zeichenfolge in ReturnStr als unten:
Dim WriteStr, ChkWrite As String
Dim ReadStr, ReturnStr, ChkRecd, ChkCalc As String
Dim ChkComp As Integer
WriteStr = String.Concat("01", cmd, Add, Points)
ChkWrite = Check(WriteStr)
Try
sp.WriteLine(":" & WriteStr & ChkWrite & vbCr)
ReadStr = sp.ReadLine()
Catch ReadErr As Exception
Return "0"
End Try
ChkRecd = ReadStr.Substring((((CInt("&H" & Points)) * 4) + 7), 2)
ChkCalc = Check(ReadStr.Substring(1, ((Len(ReadStr) - 4))))
ChkComp = String.Compare(ChkRecd, ChkCalc)
If ChkComp <> 0 Then
Return "0"
End If
ReturnStr = (ReadStr.Substring(7)).Remove(CInt("&H" & (Points)) * 4)
Return ReturnStr
ReturnStr kehrt String etwas wie 006600D000C9006D0013B003A00014C00349, die ich in die Menge geteilt werden soll von Jeweils 4 Zeichen.
Meine Frage ist ReturnStr Daten von unbestimmter Länge (in Vielfachen von 4) enthalten kann, so wie gehe ich über die Spaltung Strings aus solchen String und Anzeigewert jeder Teilkette in Etikett in Form wie folgt aus:
lblPt1.Text = CInt("&h" & (ReturnStr.Substring(0, 4)))
lblPt2.Text = CInt("&h" & (ReturnStr.Substring(4, 4)))
lblPt3.Text = CInt("&h" & (ReturnStr.Substring(8, 4)))
lblPt4.Text = CInt("&h" & (ReturnStr.Substring(12, 4)))
lblPt5.Text = CInt("&h" & (ReturnStr.Substring(16, 4)))
lblPt6.Text = CInt("&h" & (ReturnStr.Substring(20, 4)))
lblPt7.Text = CInt("&h" & (ReturnStr.Substring(24, 4)))
lblPt8.Text = CInt("&h" & (ReturnStr.Substring(28, 4)))
Es gibt [einige] (http://stackoverflow.com/questions/8774392/how-to-split-a-string-by-x-amount-of-characters) [Beispiele] (http://stackoverflow.com/questions/7376987/how-to-split-a-string-into-a-fixed-length-string-array) [in] (http://stackoverflow.com/questions/30385540/how-do -i-split-a-string-alle-7-zeichen-in-vb? noredirect = 1 & lq = 1) die Website. –