Schön, dass dein VI jetzt auch Default Werte enthält.
Da sieht man gleich, dass der String nicht leer ist sondern ein 0x0D Byte enthält:
[
attachment=49998]
Mögliche Lösungen:
- Du änderst das VI von Lucki ab und suchst nach Strings "0x0D".
- Du entfernst prinzipiell solche Zeichen am Anfang und Ende per "Trim Whitespace".
[
attachment=49999]
- oder, oder, oder, ...
Gruß, Jens
Genau das ist die Lösung Jens danke dir.
noch eine Frage, vielleicht habt ihr eine Idee. Ich lese die Werte als String von einem Sensor aus, und die Werte enthalten ein paar Werte (Strings z.B. [#1A, #11b100 und ]), die ich nicht brauche. diese Stringwerte filtere ich mit der Funktion STRING SUCHEN UND ERSETZEN.
Hat jemand eine Idee wie man das am besten programmieren kann.
Liebe Grüße Bouguessaa
Hi Jens ich hab das Programm probiert und die ungewünschte Strings werden leider nicht entfernt. ich bekomme die Strings Elementweise von VISA Lesen und versuche ich die ungewünschte Strings mit dem Programm (im Anhang) zu löschen aber funktioniert nicht mit einzelnen Stringelemente. Hat jemand eine Idee
Gruß Amina B.
@Amina: Dein letztes VI funktioniert doch. String 0x202020 wird nicht weitergegeben.
Du solltest dein Problem mal genauer erklären, im gesamten Kontext.
- Erst willst du leere Strings aus einem Array entfernen.
- Dann stellt sich heraus, die sind gar nicht leer sondern enthalten noch ein 0x0D Byte.
- Jetzt kommst du mit einem Bsp-String 0x202020.
Was denn nun???
@Markus: Dein VI ist die Umsetzung meines Screenshots aus Beitrag #4. Nicht viel Neues...
Gruß, Jens
Hi Jens und Markus danke für eure Hilfe
jetzt zu meinem Programm, ich steuere einen kleinen Linear Schrittmotor und lese die Schritten mit dem Encoder aus. Mit state machine will ich den Motor z.B 20 mm vorne und dann wieder zurück, das klappt alles wunderbar. Es tritt aber das Problem, dass die Encoder Werte auf Null Springen wenn der Motor die Drehrichtung ändert.
ich häng mal mein kompletten Programm mit SubVIs.
Eine Frage, soll der SubVi aus wenn ich den Befehl Drehrichtung ändere? muss immer so bei Seriellen Schnittstellen sein??
Controller von Nanotec SMCI33-1 Schrittmotor L2818.
ich hoffe, dass ich mein Problem gut beschrieben habe.
Liee Grüße Amina
Sorry ich meinte hier SubVI EncoderPosition
Eine Frage, soll der SubVi aus wenn ich den Befehl Drehrichtung ändere? muss immer so bei Seriellen Schnittstellen sein??
keine hat eine Idee??
LG Amina
Was erwartest du für ein Ergebnis, wenn du einen leeren String in eine Zahl wandelst?
Weitere Kritikpunkte:
- LabVIEW Style Guide empfiehlt das 4-2-2-4 Connector Pane Pattern bei SubVIs
- In einigen SubVIs hängst du anstatt nur CR ein CR + LF an deinen Sendestring. Wie reagiert darauf die Steuerung?
- Quittiert deine Steuerung nicht Kommandos (also z.B. wenn du die Beschleunigung setzt)? Falls doch, dann solltest du die Antworten auch auslesen.
- Wieso wertest du in "Steuerung Abfrage" immer die Antwort vom vorherigen Aufruf des SubVIs aus.
- Was willst du mit dem "Auswertungs-Konstrukt" in "Encoder Position neu" erreichen? Alles doppelt gemoppelt, String wird über ein kompliziertes FOR-Loop Konstrukt nur dann weitergegeben, wenn er I1 enthält. I1 wird aber zur Sicherheit (?) 2x entfernt...
- Wieso ist das Enum für deine State-Machine keine Typ-Definition? Wenn du mal einen neuen Fall brauchst oder deine Tipp-Fehler beseitigen willst (rechts straten), musst du alle Enums von Hand ersetzen.
Gruß, Jens
Warum löscht Du nicht alle LF, CR, SP aus Deinem String bevor Du den Messdaten auswertest?
So bleiben alle relevanten Messdaten bestehen und überflüssige Stringanteile fallen weg.
Danke Jens und dali4u für eunre Hilfe, ich versuch gleich eure Kritikpunkten zu bearbeiten.
- LabVIEW Style Guide empfiehlt das 4-2-2-4 Pattern bei SubVIs hier habe ich nicht verstanden was du damit meinst Jens
Liebe Grüße Amina