Hallo,
ich habe das Problem, dass ab und an mein Serialport die Daten vom vorherigen Objekt ausgibt und nicht die aktuellen. Als ich das Lesen der bytes asynchron gemacht hatte, war es sogar alle 2-3mal passiert. Sonst passiert es ca nach dem 10ten Scan, dass die Daten vom vorherigen Opjekt und nicht vom aktuellen Objekt gelesen werden.
Normal macht man es denke ich so:
oder als While-Schleife.. wie auch immer.
Nun habe ich folgendes getestet:
Aber auch mit diversen Thread.Sleep und Discards konnte ich das Problem bisher nicht lösen. Dabei ist es auch egal, ob ich die Daten als string oder byte auslese.
Woran kann das liegen, dass ich Daten vom vorherigen Scan bekomme?
Mir fallen langsam keine Möglichkeiten mehr ein die ich testen könnte...
MfG
ich habe das Problem, dass ab und an mein Serialport die Daten vom vorherigen Objekt ausgibt und nicht die aktuellen. Als ich das Lesen der bytes asynchron gemacht hatte, war es sogar alle 2-3mal passiert. Sonst passiert es ca nach dem 10ten Scan, dass die Daten vom vorherigen Opjekt und nicht vom aktuellen Objekt gelesen werden.
Normal macht man es denke ich so:
Code:
if (sp.Bytes > 0)
{
buffer = new byte[sp.Bytes ];
sp.Read(buffer, 0, sp.Bytes );
oder als While-Schleife.. wie auch immer.
Nun habe ich folgendes getestet:
Code:
public static void spScanner_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = sender as SerialPort;
System.Threading.Thread.Sleep(1000);
int bAvailable = sp.Bytes ;
sData.buffer = new byte[bAvailable ];
sData.buffer2 = new char[bAvailable ];
try
{
sp.Read(sData.buffer2, 0, bytesAvailable);
if (sp.Bytes == 0)
{
sp.DiscardInBuffer();
}
}
}
private struct serialData
{
public byte[] buffer;
public char[] cbuffer;
}
private static serialData sData = new serialData();
Aber auch mit diversen Thread.Sleep und Discards konnte ich das Problem bisher nicht lösen. Dabei ist es auch egal, ob ich die Daten als string oder byte auslese.
Woran kann das liegen, dass ich Daten vom vorherigen Scan bekomme?
Mir fallen langsam keine Möglichkeiten mehr ein die ich testen könnte...
MfG
Zuletzt bearbeitet: