Montag, 29. Dezember 2008

Matlab Latex Export

http://www.mathworks.de/matlabcentral/fileexchange/4638
Nur für mich zum merken. Ich glaube das ist was ganz großes, muss ich testen.

Montag, 22. Dezember 2008

Dumme Idee.

Bilder von NI Vision per Queue transportieren zu wollen, ist eine ganz dumme Idee.
Mit dem Wissen über die Datenflussgrundlagen von LabVIEW und der Ausnahme bei Vision Bildern habe ich es trotzdem bisher so gehalten.
Was daran falsch ist?
Ganz einfach, bei den Bildern werden nur Pointer weiter gereicht, nicht das eigentliche Bild. Das bleibt immer an der gleichen Speicherstelle liegen. Alles was ich also gequeuet habe war der Pointer auf diese Speicherstelle. Daraus folgt logischer Weise, dass jeder dieser Pointer in der Queue immer auf das gleich Bild gezeigt hat und damit immer auf das aktuelle. BANG.
Dafür muss man erst fast alleine kurz vor Weihnachten in der FH sitzen. Kein Plan warum mir das erst heute aufgefallen ist, dabei ist das Verhalten doch vollkommen logisch.

Die Lösung ist eigentlich einfach: man wandelt das Bild in ein Array um (gibt es ein VI für) und queuet das dann. Problem ist nur, das in Array-Wandeln und das aus-Array-zurückwandeln braucht wieder mehr Zeit und treibt jetzt den Backlog bei mehr als einer Farbe hoch. i7, ich brauche dich. Oder ich krieg die openCV-Sachen zum Laufen und kann zeigen, dass die schneller als die NI Vision VIs sind, was der Hammer wäre. Oder ich bearbeite nicht mehr Bilder sonderen die Arrays direkt, was ein Schritt gespart wäre. Mal gucken.

Donnerstag, 18. Dezember 2008

LabVIEW Frontpanel Updates unterbinden

So mal wieder was für LabVIEW.
Es gibt Situationen in denen möchte man nicht, dass das Frontpanel aktualisiert wird.
Bei mir ist das Beispielsweise der Fall, wenn ich Kameraparameter in eine Baumstruktur schreibe.
Bisher war es so, dass bei jedem neuen Parameter das Panel neugeschrieben wurde. Man konnte also sehen wie der Baum gefüllt wird. Das Panel wird nicht nur neu geschrieben, sondern es MUSS neu geschrieben werden. Dass heißt, dass auf jedenfall in einem solchen Fall auch ein wenig Zeit verloren geht.
Bei den LabVIEW 8.6 Tagen war die Rede davon, dass man das mit Hilfe des "Set Busy" und "Unset Busy"-VI lösen kann. Ich kann das nicht bestätigen. Bei mir wird (wie auch in der Beschreibung des VIs steht) nur die Maus und Tastatureingabe blockiert, was natürlich auch manchmal gebraucht werden kann.
Gerade eben bin ich über die Frontpanel-Property "Defer Frontpanel Updates". Setzt man dies auf true, so werden Updates vermieden. Mit false lässt man sie wieder zu. Setzt man nun die Aufgabe, in meinem Fall das Baumbefüllen dazwischen, so wird das Panel nur ganz zum Schluss aktualisiert und es geht keine Zeit verloren. Außerdem sieht man nicht wie sich der Baum aufbaut, was auch ganz nett ist :)
Zum Schluss noch ein kleines Beispiel: