INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

String teilen und Teilstrings ausgeben



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

24.05.2012, 13:02
Beitrag #1

kritzel Offline
LVF-Neueinsteiger


Beiträge: 2
Registriert seit: May 2012

2011
2012
DE



String teilen und Teilstrings ausgeben
Hallo!

Ich habe im Forum schon die eine oder andere Antwort zu Problemen gefunden. Nun stehe ich allerdings vor einem Problem, was ich so direkt selber glaube ich nicht loesen kann. Deswegen habe ich mich jetzt hier registriert Smile
Ich kann zwar programmieren (Java, C, etc.), allerdings fällt mir Labview trotzdem schwer, weil es halt einfach "anders" ist.

Zum Problem:

Ich muss im Rahmen meiner Bachelorarbeit ein Programm in Labview schreiben, dass mit Motoren (Nanotec) kommuniziert.
Dies habe ich erfolgreich hinbekommen, sprich ich kann die Motoren so ansteuern, dass sie genau das tun, was ich will.
Nun aber muss ich den Motoren über Labview eine Art "Fahrplan" mitgeben, den sie abarbeiten; beispielsweise sage ich Motor1: Bewege dich 1000 Schritte in Drehrichtung rechts, danach 500 Schritte in Drehrichtung links usw.

Ich habe mir vom Algorithmus her soetwas gedacht:
Ich habe ein Eingabefeld, in dem ich einen Code eingebe. Diese Code ist der gesamte "Fahrplan" und besteht wiederrum aus Code, den ich an den Motor schicken will, welcher durch Semicolons getrennt sind. Dazu muss ich das Eingabefeld, also eine String-Variable, in die einzelnen Bestandteile zerlegen.

Ich habe hier im Forum schon gefunden, dass ich doch das "Spreadsheet String to Array" hernehmen kann, um den String in ein Array zu speichern.
1. Problem: Wenn ich das so mache und als Format-String "%s" eingebe, sowie als Delimiter ";" und das ganze an einem Ausgabefeld anzeigen will, zeigt er mir nur "ints" an und keine String-Bestandteile. Beispiel: Ich gebe "44;a6;bb;" ein und im Ausgabearray steht dann im ersten Feld 44, der Rest ist Null. Wie kann ich das aendern?

Wenn der Code erfolgreich im array ist, will ich jeden Bestandteil des arrays wieder zerlegen (da der Code ja in einer Schrittanzahl für den Motor und einer Drehrichtung besteht). Ich denke, dass ich das mit irgendeiner String-Teile-Funktion hinbekommen kann, mein Problem ist eher das Umdenken von einer Struktur dieser Art:

-----------------------------
for (int i, i<array-length, i++)
{
VISA.write = array[i]
}
-----------------------------

auf die Labview Struktur. Ich weiß also nicht, wie ich an die i-te Stelle des arrays rankomme, damit ich die einzelnen Befehle weiter an VISA-write schicken kann.

Vielleicht gibt es in Labview auch einfach eine Struktur, die einen viel einfacherern Algorithmus fuer soeinen Fahrplan ermoeglicht; mir fehlt da leider noch so ein bisschen der Ueberblick in Labview; mache das ganze erst so 2 Wochen.
Vielleicht kann mir jemand einen kleinen Tipp geben, wie ich das ganze loesen kann, ich bin fuer jede Hilfe dankbar Smile

Gruesse,
kritzel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.05.2012, 13:19
Beitrag #2

Soean Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 140
Registriert seit: Sep 2010

2012
2009
EN


Deutschland
RE: String teilen und Teilstrings ausgeben
Hast du den Eingang "Array Type" der "Spreadsheet String To Array" mit einer String-Konstanten verbunden, um der Funktion mitzuteilen, dass sie ein String-Array generieren soll? Wenn du da nichts anschließt, wird ein DBL-Array generiert. Alles, was in dem Eingabestring keine Zahl ist, wird dann als 0 interpretiert. Daher deine Nullen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.05.2012, 13:20 (Dieser Beitrag wurde zuletzt bearbeitet: 24.05.2012 13:21 von GerdW.)
Beitrag #3

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: String teilen und Teilstrings ausgeben

Akzeptierte Lösung

Hallo kritzel,

Zitat:1. Problem: Wenn ich das so mache und als Format-String "%s" eingebe, sowie als Delimiter ";" und das ganze an einem Ausgabefeld anzeigen will, zeigt er mir nur "ints" an und keine String-Bestandteile.
Du hast den Anschluß links unten nicht beachtet. Standardmäßig erhälst du übrigens keine Ints, sondern DBLs. Du musst über diesen Anschluß festlegen, dass du ein Array of Strings haben willst:
   

Code:
for (int i, i<array-length, i++)
{
VISA.write = array[i]
}
Sieht so aus:
   

Zitat:Ich weiß also nicht, wie ich an die i-te Stelle des arrays rankomme, damit ich die einzelnen Befehle weiter an VISA-write schicken kann.
Wozu der ganze Aufwand? Schicke doch den ganzen String mit einem Mal statt jedes Byte einzeln...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.05.2012, 13:23 (Dieser Beitrag wurde zuletzt bearbeitet: 24.05.2012 13:30 von Soean.)
Beitrag #4

Soean Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 140
Registriert seit: Sep 2010

2012
2009
EN


Deutschland
RE: String teilen und Teilstrings ausgeben

Akzeptierte Lösung

Die Sendefunktion kannst du in eine For-Schleife setzen, und das Array von draußen draufgeben. Dabei wird automatisch ein "Autoindexing Tunnel" erstellt. Das bedeutet, dass für jede iteration der For-Schleife ein Element des Arrays nach Innen gegeben wird. Bei Iteration 0 Index 0, Iteration 1 Index 1 ...
Die Schleife wird dann so oft ausgeführt, wie das Array groß ist, ohne dass du das manuell vorgeben musst.
(24.05.2012 13:20 )GerdW schrieb:  Hallo kritzel,

Zitat:1. Problem: Wenn ich das so mache und als Format-String "%s" eingebe, sowie als Delimiter ";" und das ganze an einem Ausgabefeld anzeigen will, zeigt er mir nur "ints" an und keine String-Bestandteile.
Du hast den Anschluß links unten nicht beachtet. Standardmäßig erhälst du übrigens keine Ints, sondern DBLs. Du musst über diesen Anschluß festlegen, dass du ein Array of Strings haben willst:


Code:
for (int i, i<array-length, i++)
{
VISA.write = array[i]
}
Sieht so aus:


Zitat:Ich weiß also nicht, wie ich an die i-te Stelle des arrays rankomme, damit ich die einzelnen Befehle weiter an VISA-write schicken kann.
Wozu der ganze Aufwand? Schicke doch den ganzen String mit einem Mal statt jedes Byte einzeln...

Hab ich gar nicht so verstanden, dass jedes Byte einzeln gesendet werden soll. "array-length" und nicht "string-length". Oder?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.05.2012, 13:37
Beitrag #5

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: String teilen und Teilstrings ausgeben
Und mir deinem Spreadstring-to-Array-vi ginge es so:
   
Hässlich ist das letzte Semikolon in Deinem String. Ich habe es weggelassen. Wenn das so nicht geht, melde dich.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.05.2012, 13:54
Beitrag #6

kritzel Offline
LVF-Neueinsteiger


Beiträge: 2
Registriert seit: May 2012

2011
2012
DE



RE: String teilen und Teilstrings ausgeben
Hi,
vielen Dank an euch! Ihr habt mich schon ein gutes Stueck weitergebracht.


@Soean und GerdW: Auch mit eurer Beschreibung habe ich leider nicht genau gewusst, wie ich Labview sagen soll, dass es als "array-type" ein "String-array" nehmen soll. Nach ein bisschen googeln bin ich darauf gekommen, dass man einfach bei dem Ausgang auf "create constant" klicken muss und dann im rechten Feld der Konstanten eine "String-Konstante" reinziehen muss.
Das mag fuer euch recht trivial sein, fuer mich noch nicht Smile Ich wurde da mit Labview so ein bisschen ins kalte Wasser geschubst.. Wink

@GerdW: Ich glaube fast, dass ich jeden Befehl an sich schicken muss, weil sonst die Steuerung streikt.
Im Grunde gebe ich den Befehl (ich habe das Format ein bisschen geaendert) ein (als Fahrplan): "s2000, d0;s500,d1", was bedeutet, dass der Motor zuerst 2000 Schritte in Richtung 0 = links und danach 500 Schritte in Richtung 1 = rechts machen soll. Die Befehle "s2000" und "d0" beispielsweise muessen dann aber separat an die Steuerung uebermittelt werden. Aus dem Grund muss ich jeden "Teilstring" selber schicken.

@Soean: Nochmals danke an dich, der "autoindexing-tunnel" ist genial, einfach und funktioniert Wink

@Lucki: Vielen Dank auch an dich, genauso wollte ich es. Da das Format der Eingabe komplett von mir gewaehlt werden kann, ist das fehlende Semicolon kein Problem.


Ich habe das Ganze vorerst so implementiert (fuer die, dies interessiert^^):

if (button.pressed)
{
teile den Fahrplan-String nach jedem ";" und schreibe die Einzelwerte in ein array;
while(indexing_tunnel1)
{
teile das array an den Stellen "," und schreibe Einzelwerte in ein array;
while(indexing_tunnel2)
{
schicke die Einzelbefehle mit Modifikation an VISA.write
}
}
}


Ich teile also zuerst den ganzen Fahrplan in eine "Befehlsgruppe" (Schritt-anzahl und Richtung) und danach in Einzelbefehle (Schrittanzahl oder Richtung), welche ich dann an die Steuerung uebergebe.
Ich hoffe, dass das Ganze jetzt so funktioniert und wuerde einfach nochmal schreiben, wenn es doch noch Probleme gibt Smile

lg,
kritzel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Array mehrfach teilen und "vermessen" Nullstrom 5 4.816 11.04.2013 08:31
Letzter Beitrag: Nullstrom
  Teilstrings in Stringanzeige-Element schreiben trh 4 4.020 25.03.2013 06:44
Letzter Beitrag: NWOmason
  Mehrere Strings teilen und in ein Array einfügen Atilla 14 9.660 30.01.2013 15:40
Letzter Beitrag: Trinitatis
  Aus einem 2D Array Zahlen durch 100 Teilen Banana Joe 12 8.303 29.10.2011 10:21
Letzter Beitrag: Lucki
  String als Tabelle ausgeben Toto2010 5 4.986 03.07.2011 13:36
Letzter Beitrag: Lucki
  Frontpanel in Seiten teilen Elit87 2 4.720 29.03.2011 09:05
Letzter Beitrag: Elit87

Gehe zu: