Hallo Gerd,
du verwendest nicht CR/LF, sondern EOL. Das kann zwar das gleiche sein, muss es aber nicht!
Verwende doch mal ein Semikolon als Trennzeichen…
Außerdem hast du das EOL erst nach den Bilddaten angehängt - wozu? Du weißt doch vorher, wieviele Bytes du lesen musst!?
Vorschlag:
[
attachment=56626]
Den Empfänger entsprechend anpassen…
Hallo,
Das Problem ist nicht die Senderseite sondern die Empfängerseite. (Mal abgesehen davon, dass das Bild nicht einmal auf der Senderseite direkt nach dem Einlesen wieder darstellbar ist sonder eine absurd große Datei entsteht in der irgendwas drin steht...)
Auf der Empfängerseite treten auch irgendwelche Rahmenfehler auf und ich weiß nicht was ich dagegen machen soll...
Wenn ich den Schalter umlege und das Vi wieder starte tritt das fast immer auf. Als wenn noch Sachen im Puffer wären die ich nicht loswerden.. Ich dachte Eingangspuffer leeren und Übertragungspuffer leeren würden das machen, aber da irre ich mich wohl...
Anbei meine neuesten Vis. Die für False (also Schalter auf Aus) häufig funktionieren.. Für True eigentlich auch (ich sehe ja, dass die Daten in der Anzeige der Empfängerseite die richtigen Daten anzeigen) nur ist die Bilddatei nicht richtig..
Falls du noch Ideen hast wäre ich Dir wirklich sehr dankbar..
Gruß
Gerd
Eine binäre Datei solltest du dringend mit den passenden Funktionen lesen und schreiben, und das sind die Read/Write Binary File VIs.
Aktuell liest du das Bild mit "Read from Text File", hast aber die Option "Convert EOL" (Rechtsklick auf das VI) aktiv. Jedes Auftauchen einer Byte-Folge \r\n (Carriage Return + Newline) wird somit in ein \n (nur Newline) konvertiert. Mist.
Dann solltest du die Größe der Datei mit einer festen Anzahl von Bytes übertragen, ansonsten weiß dein Empfänger ja gar nicht, wieviele Bytes er jetzt als "Größe" interpretieren soll. Ebenfalls Mist.
Ich hab das mal für dich reduziert:
[
attachment=56636]
[
attachment=56668]
Gruß, Jens
EDIT jg: Senden VI ausgetauscht, hat nicht die gesamte Datei von der Festplatte gelesen.
Hallo,
Den Fehler mit ConvertEOL habe ich auch gesehen und behoben. Hat leider nicht viel gebracht. Jabe jetzt Feierabend, melde mich heute abend nochmal.
Danke erstmal.
Gruß
Gerd
Hallo,
Ich hatte auch schon überlegt es mit binary anstelle von text zum machen, aber hatte da leider keinen Erfolg.
Ich habe deine beiden Vis gerade ausprobiert und muß Dir leider sagen, daß die nicht funktionieren. oder ich mache irgendetwas falsch...
Ich habe ein paar Sonden eingesetzt und festgestellt, daß ein leerer String geschrieben wird. Komischer Weise sagt der Ausgabezählwert aber, daß 5 Bytes geschrieben wurden. Verstehe ich gar nicht ...
Auf der Empängerseite liest du dann zuerst 4 Byte aus. Der Lesepuffer ist ein leerer String. Im zweiten read liest du dann ein Byte aus und das Ergebnis ist irgendein Ascii-Zeichen, aber kein vollständiges Bild.
Gruß
Gerd
Hallo,
selbst dieser einfache Test funktioniert nicht. Weder mit binary noch mit text. Mit text sehe ich wenigstens etwas Farbe im Bild...
Ich bin langsam echt am verzweifeln. Ich habe soetwas früher mit C programmiert und das ging völlig problemlos. Das hat nicht einmal 2 Stunden gedauert. Jetzt bin ich schon über eine Woche dabei und habe noch nichts vernünftiges herausbekommen...
naja.. bis Montag habe ich noch zeit und wenn es bis dahin nicht klappt müssen wir uns was anderes überlegen..
Erstma .. schönen abend noch, ich habe die Schnauze voll für heute..
Gruß
Gerd
Wieso verwendest du weiterhin "Read/Write from Text File", obwohl ich dir "Binary File" empfohlen und hochgeladen habe?
Wieso hast du schon wieder "Convert EOL" aktiv gelassen?
[
attachment=56646]
Gruß, Jens
P.S.: Aber das funzt:
[
attachment=56647]
Hallo,
Ja... ich habe einfach den Wald vor lauter Bäumen und so....
Ich habe auch eine Lösung. Werde sie heute abend mal hochladen.
Das Thema ist aber noch nicht ganz beendet.
Vielen Dank für die Tipps und die konstruktive Kritik.
Hat mir sehr geholfen.
Gruß
Gerd
P.s. manchmal ist es gut sich ein paar Stunden mit etwas anderem zu beschäftigen...
Hallo,
Ich habe mal meine funktionierenden Vis hochgeladen.
Das Problem was ich jetzt allerdings nch habe ist folgendes:
Das Senden und Empfangen funktioniert leider immer nur beim ersten Mal.
Da auf der Senderseite nachher eine Kamera angeschlossen werden soll, muß die Empfängerseite also jedes Mal wenn beim Sender auf Start drücke das Bild aktualisieren. Und genau daran scheitere ich im Moment.
Obwohl die Daten des Bildes und des neuen Bildes (siehe Anhang) korrekt übertragen werden (das kann man am String und mit Hilfe von Sonden erkennen) wird das Bild weder in der Datei noch im Picture aktualisiert.
Hat da jemand eine Idee?
Gruß
Gerd
p.s. Man den Pfad der dll im Aufruf der externen Bibliothek anpassen.
Es müssen unbedingt meine Bilder mit der Auflösung 640x480 genommen werden, sonst stürzt das Vi ab. Das hat was mit der dll zu tun .. denke ich.
Wenn man das nicht will, dann muß man w und h anpassen und die Eigenschaften von picture out 480 ebenfalls.
Hallo Gerd,
ganz allgemein: THINK DATAFLOW!
- Wozu so viele lokale Variablen und "Value"-PropertyNodes? Ist dir der Draht ausgegangen?
- Wozu so viele Sequenzen? Die brauchst du alle nicht!
Zitat:wird das Bild weder in der Datei noch im Picture aktualisiert
Doch, wird es!
Dummerweise aber nur insofern, dass du an die Daten des ersten Bildes einfach die nachfolgenden anhängst - und bei korrekter Auswertung des JPG-Streams werden diese zusätzlichen Daten dann einfach ignoriert…
Merke: Schieberegister und Feedbacknodes sollte man auch korrekt initialisieren!