Hallo tahity,
Zitat:Auch bei dem Speichern der Daten bin ich etwas weitergekommen. Und zwar wird in der inneren Schleife jeweils die Position mittels WriteSpreadsheetFile (Danke nochmals für den Tipp) in eine Tabelle geschrieben.
Wie geht das? Du speicherst hoffentlich dein Array in einem Schieberegister zwischen?
Zitat:Ich stelle mir das so vor, dass jetzt pro Iteration eine Zeile mit X,Y,Z und ein Messwert( Anzahl von Flureszenzphotonen - das ist bis dato allerdings noch nicht berücksichtigt im Code, da ich die Bibliothek des Detektors noch nicht zur Verfügung habe) in die Datei geschrieben wird und diese jeweils durch Komma voneinander getrennt.
- Das ist so Standard bei CSV-Dateien ("comma separated values")!
- Wo kommt dein Z-Wert her, wenn du nur XY-Positionen abfährst?
Zitat:Jetzt bleibt die Frage der Darstellung. Ich denke, dass eine Darstellung als 3D-Histogram am übersichtlichsten ist. Wie kann ich die Daten dann aus dem CSV-File darstellen? Also die Anzahl der Photonen gegen X und Y.
Wenn es sich um eine Ebene handelt, kann man sie mittels des Intensitygraph darstellen - oder in einem 3D-Plot.
Zitat:Und ein anderes Problem bereitet gerade etwas Kummer: Und zwar geht es dabei um das Timing. Der Motor soll ja bei jedem Schritt erst in seiner Ziel-Position ankommen, bevor es weitergeht. Wie kann ich das gewährleisten?
Mit einer herkömmöichen Statemachine wäre das kein Problem: Einfach einen State aufrufen, der abwartet, bis der Motor die gewünschte Zielposition erreicht hat.
Zitat:Eine Überlegung ist, dass ich innerhalb der For-Schleifen eine flache Sequenzstruktur einfüge, in der im ersten Rahmen die aktuelle Position plus Schrittweite berechnet wird. Das ist dann die neue Ziel-Position. Im zweiten Rahmen soll der Motor dann eine Relativbewegung ausführen. Und im dritten Rahmen soll die Ist-Position dann mit der Ziel-Position verglichen werden. Und zwar mit einem kleinen Wertebereich, um eventuelle Ungenauigkeiten des Motors abzufangen. Und wenn dieser Vergleich wahr ist, soll es weitergehen. So weit die Idee. Aber wie setze ich das am besten um? Im vierten Rahmen dann eine While-Schleife, die leer ist und beendet wird, sobald der Vergleich wahr ist?
Oder gibt es da bessere Ansätze/Lösungen?
Wann immer du selbst schon klare "Schritte"/States/Frames definierst, solltest du auch "Statemachine" denken!
Zitat:Das mit dem Fehlerdraht werde ich berücksichtigen. Und wie kann ich das mit "Stop Scanning" ändern?
Einfach keine Race-Condition programmieren!
Du hast mittlerweile die Links in meiner Signatur beachtet?