| |

VB.NET - Ein- und UmsteigerArray Verschiebungen | |  | Autor: roadresident | Datum: 14.09.06 11:40 |
| Hallo auch! Ich habe ein recht merkwürdiges Verhalten meines Programms...
Zum Hintergund. Ich kommuniziere mit einem Messgerät via RS 232. Wenn ich einenen Befehl zu messen sende ("M"), kommt die Antwort hinein, und wird ausgelesen (sie Code). Byte für Byte wird in einem Array gespeichert. Nun, es ommt zu einer Feldverschiebung innerhalb des Arrays. Eine ganz komische Sache. Wenn ihr möchtet, schicke ich euch den kompletten Code per Mail.
Hier mein Code:
Public Class Hauptfenster
Dim WithEvents SerialPort As New System.IO.Ports.SerialPort("COM1", 9600, _
Parity.None, 8, StopBits.One) 'Serial Port definieren
Dim Befehl As String
Dim sRead As String
Dim Hell As String 'Helligkeit
Dim x As String 'CIE x
Dim y As String 'CIE y
Dim Yt() 'Helligkeit Y temporär
Dim RXArray(2047) As Char
Public Delegate Sub StringSubPointer(ByVal Buffer As String)
Private Function Auslesen()
Dim array()
Dim strRxChar As String
sRead = sRead + strRxChar
array = sRead.Split(",")
'Received.Text = Received.Text & sRead
'MsgBox(array(0))
'Hell = CDbl(array(2))
'Hell = CInt(Hell * 3.4262591)
'TB_Helligkeit.Text = Hell
'TB_x.Text = CDbl(array(3))
'TB_y.Text = CDbl(array(4))
End Function
Public Sub SerialPort_DataReceived(ByVal sender As Object, ByVal e As _
System.IO.Ports.SerialDataReceivedEventArgs) Handles _
SerialPort.DataReceived
Dim ByteArray(2047) As Byte
Dim I As Integer = 0
Dim RXByte As Byte
While (SerialPort.BytesToRead > 0)
RXByte = SerialPort.ReadByte
If RXByte <> 0 Then
RXArray(I) = Chr(RXByte)
I = I + 1
End If
End While
Dim RxString As New String(RXArray, 0, I)
Received.BeginInvoke(New StringSubPointer(AddressOf Display), RxString)
End Sub
Private Sub Display(ByVal Buffer As String)
Dim array() 'Array um Werte zu Extrahieren
Received.AppendText(Buffer)
array = Buffer.Split(",")
Hell = CDbl(array(2))
Hell = CInt(Hell * 3.4262591)
TB_Helligkeit.Text = Hell
'TB_x.Text = CDbl(array(3))
'TB_y.Text = CDbl(array(4))
TB_Arr0.Text = (array(0))
TB_Arr1.Text = (array(1))
End Sub
Private Sub But_Ini_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles But_Init.Click
SerialPort.ReceivedBytesThreshold = 20
SerialPort.WriteBufferSize = 20
SerialPort.ReadBufferSize = 20
SerialPort.WriteTimeout = 100
SerialPort.Open()
SerialPort.RtsEnable = True
SerialPort.RtsEnable = False 'RTS High Low zum Initialisieren
SerialPort.DtrEnable = True 'Empfangsleitung öffnen
End Sub
Private Sub But_Mess_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles But_Mess.Click
SerialPort.RtsEnable = True 'RTS High
Befehl = ("M1")
SerialPort.WriteLine(Befehl)
End Sub Hier sind noch Screenshots:
nach ein mal messen: (links in den textbosen wird das array angezeigt, nur die ersten 3 felder)
http://www.roadresidents.de/carsten/screen1.jpg]
nach 2 mal messen:
http://www.roadresidents.de/carsten/screen2.jpg
nach 3 mal messen: Alles verschoben!
http://www.roadresidents.de/carsten/screen3.jpg
nach 5 mal messen ist alles wieder in Ordnung..
http://www.roadresidents.de/carsten/screen5.jpg
Ich hoffe, ihr könnt mir helfen!
Besten Dank, Carsten
DJ Booking + Veranstaltungstechnik: www.roadresidents.de |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Neu! sevPopUp 2.0 
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|