Hallo Leute !
Bin neu hier und hoffe nach langem, unerfolgreichem suchen, hier Hilfe zu finden.
Und zwar geht es um folgendes:
Für mein Praktikumsprojekt muss ich einen ECC200-Code mit Hilfe eines Multicode Readers einlesen und auswerten. Der Multicode Reader kann über eine TCP Verbindung angesprochen werden und mit Hilfe eines Trigger-Befehls werden dann die Daten ausgegeben. Soweit, sogut, dies habe ich mittlerweile alles hinbekommen.
Eine weitere nette Funktion ist die Einbindung des aktuellen Bildes an den Auswertestream. Dies kann als bmp oder jpg geschehen. Habe es zunächst mit der bmp versucht, bin aber nun auf die jpg umgestiegen und für den "positiven Auswertestream", also bei Erkennung des Codes, klappt Darstellung der jpg auch, aber beim "negativen Auswertestream" möchte die Funktion Image.FromStream(oMemoryStream) einfach nicht! Der Fehler: "Ungültige Parameter".
Habe mittlerweile auch herausgefunden, dass der Fehler z.B. auftritt, wenn ich zuviele Bytes abgeschnitten oder dort gelassen habe, denn so sehen die beiden Ausgaben aus:
positiver Ausgabestream: "Diagnose ErfolgreichJPG000124207X`..JFIF...." und so weiter.. die ersten 32 Bytes sind also für die Image Geschichte uninteressant, und diese lese ich dann auch aus, bevor ich dazu übergehe, alle bytes der Jpg in edn oMemoryStream zu schreiben.
negativer Ausgabestream: "JPG000122778X`..JFIF..." und so weiter... sieht im Endeffekt genauso aus, nur dass die gelesene Nachricht des QR-Codes nicht enthalten ist. Also nehme ich nur 12 Bytes weg und lasse den gleichen Code drüber laufen, wie beim positiven Ausgabestream.. UND HIER kommt dann der oben beschriebene Fehler.
Wäre super, wenn mir einer helfen könnte, ich stelle mal zum Verständnis meinen Code dazu.
Vielen Dank im Voraus !!!!
Bin neu hier und hoffe nach langem, unerfolgreichem suchen, hier Hilfe zu finden.
Und zwar geht es um folgendes:
Für mein Praktikumsprojekt muss ich einen ECC200-Code mit Hilfe eines Multicode Readers einlesen und auswerten. Der Multicode Reader kann über eine TCP Verbindung angesprochen werden und mit Hilfe eines Trigger-Befehls werden dann die Daten ausgegeben. Soweit, sogut, dies habe ich mittlerweile alles hinbekommen.
Eine weitere nette Funktion ist die Einbindung des aktuellen Bildes an den Auswertestream. Dies kann als bmp oder jpg geschehen. Habe es zunächst mit der bmp versucht, bin aber nun auf die jpg umgestiegen und für den "positiven Auswertestream", also bei Erkennung des Codes, klappt Darstellung der jpg auch, aber beim "negativen Auswertestream" möchte die Funktion Image.FromStream(oMemoryStream) einfach nicht! Der Fehler: "Ungültige Parameter".
Habe mittlerweile auch herausgefunden, dass der Fehler z.B. auftritt, wenn ich zuviele Bytes abgeschnitten oder dort gelassen habe, denn so sehen die beiden Ausgaben aus:
positiver Ausgabestream: "Diagnose ErfolgreichJPG000124207X`..JFIF...." und so weiter.. die ersten 32 Bytes sind also für die Image Geschichte uninteressant, und diese lese ich dann auch aus, bevor ich dazu übergehe, alle bytes der Jpg in edn oMemoryStream zu schreiben.
negativer Ausgabestream: "JPG000122778X`..JFIF..." und so weiter... sieht im Endeffekt genauso aus, nur dass die gelesene Nachricht des QR-Codes nicht enthalten ist. Also nehme ich nur 12 Bytes weg und lasse den gleichen Code drüber laufen, wie beim positiven Ausgabestream.. UND HIER kommt dann der oben beschriebene Fehler.
Wäre super, wenn mir einer helfen könnte, ich stelle mal zum Verständnis meinen Code dazu.
Vielen Dank im Voraus !!!!
VB.NET-Quellcode
- Dim oMemoryStream As New MemoryStream
- Dim Rest_receive(32) As Byte
- Dim Restfehler_receive(10) As Byte
- Dim Test As Byte
- Dim Rest As Integer
- Dim Ende As Integer
- Try
- If client.Connected Then
- Dim stream As NetworkStream = client.GetStream()
- streamw = New StreamWriter(stream) ' Stream zum Senden wird deklariert
- Dim Str = "t" & vbCrLf
- ' Trigger-Befehl senden
- stream.Write(TextStringToByteArray(Str), 0, Str.Length)
- stream.Flush()
- 'Testen, ob Diagnose erfolgreich oder nicht, indem erstes Byte abgefragt wird
- Test = stream.ReadByte()
- If Test = 68 Then
- 'Diagnose Erfolgreich --> Bild
- Rest = stream.Read(Rest_receive, 0, 31)
- Do
- If stream.CanRead Then
- Dim rbuffer(1) As Byte
- Dim size As Integer = 0
- size = stream.Read(rbuffer, 0, rbuffer.Length)
- Ende = size
- oMemoryStream.Write(rbuffer, 0, size)
- Else
- MessageBox.Show("Fehler: Aus diesem NetworkStream kann nicht gelesen werden!")
- End If
- Loop While stream.DataAvailable
- ElseIf Test = 74 Then
- 'Diagnose nicht Erfolgreich --> Bild
- Rest = stream.Read(Restfehler_receive, 0, 10)
- Do
- If stream.CanRead Then
- Dim rbuffer(1) As Byte
- Dim size As Integer = 0
- size = stream.Read(rbuffer, 0, rbuffer.Length)
- Ende = size
- oMemoryStream.Write(rbuffer, 0, size)
- Else
- MessageBox.Show("Fehler: Aus diesem NetworkStream kann nicht gelesen werden!")
- End If
- Loop While stream.DataAvailable
- End If
- Else : MsgBox("FEHLER BEIM LESEN")
- End If
- Catch ex As SocketException
- MessageBox.Show("LISTENER: Exception! : " & e.ToString)
- End Try
- 'Aus dem MemoryStream das Image erstellen:
- Dim myImage As Image
- myImage = Image.FromStream(oMemoryStream)
- PictureBox1.Image = myImage
- oMemoryStream.Close()
- End Sub