Hallo,
ich habe einen Scanner und dieser nimmt ein Bild auf sobald ich den entsprechenden Befehl hinschicke. Anschließend wird mein Event getriggert und ich lese die Daten:
Problem ist, dass die Daten nur nach und nach kommen sprich dieser Code wird zweimal ausgeführt und dadurch werden Daten überschrieben, Arraylänge stimmt nicht mehr etc.
Dann hab ich es noch via Liste probiert.
Hier aber auch genau das selbe Problem. Wird zweimal aufgerufen, Daten werden überschrieben.
Hier die Lösung des Problems:
Aber das möchte ich so nicht lösen. Das muss doch irgendwie anders gehen als mit einem Thread.Sleep.
Wer eine Idee?
MfG
ich habe einen Scanner und dieser nimmt ein Bild auf sobald ich den entsprechenden Befehl hinschicke. Anschließend wird mein Event getriggert und ich lese die Daten:
Code:
if (sp.BytesToRead > 0)
{
byte[] buffer = new byte[sp.BytesToRead];
int cnt = sp.Read(buffer, 0, sp.BytesToRead);
Picture.spImage_Data(buffer);
}
Problem ist, dass die Daten nur nach und nach kommen sprich dieser Code wird zweimal ausgeführt und dadurch werden Daten überschrieben, Arraylänge stimmt nicht mehr etc.
Dann hab ich es noch via Liste probiert.
Code:
byte[] data = new byte[sp.BytesToRead];
int len, pos = 0;
while ((len = sp.Read(data, pos, data.Length - pos)) > 0)
{
pos += len;
}
List<byte> result;
if (sp.BytesToRead == 0 && sp.IsOpen)
{
result = new List<byte>(data);
}
else
{
result = new List<byte>(pos);
for (int i = 0; i < pos; i++)
{
result.Add(data[i]);
}
}
byte[] buffer = result.ToArray();
Picture.Image_Received(buffer);
Hier aber auch genau das selbe Problem. Wird zweimal aufgerufen, Daten werden überschrieben.
Hier die Lösung des Problems:
Code:
if (sp.BytesToRead > 0)
{
byte[] buffer = new byte[sp.BytesToRead];
int cnt = sp.Read(buffer, 0, sp.BytesToRead);
Picture.ImageReceived(buffer);
}
Aber das möchte ich so nicht lösen. Das muss doch irgendwie anders gehen als mit einem Thread.Sleep.
Wer eine Idee?
MfG
Zuletzt bearbeitet: