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 

Dieses Thema hat akzeptierte Lösungen:

"Decimal integer String" to "String"



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!

04.05.2014, 00:34
Beitrag #1

SunShineDay Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: May 2014

13.0f (32 Bit)
2014
EN



"Decimal integer String" to "String"
Hallo Zusammen

Ich bin momentan an meiner Abschlussarbeit: Einen Analogwert wird von einem 12Bit ADC eingelesen, und via SPI dem Datenerfassungstool myRIO weitergegeben. Der Wert wird nun im Labview verarbeitet, und dann wieder via SPI über das myRIO auf einem LCD angezeigt. Ich bin nun praktisch am Schluss mit der Realisation. Ich kann die Werte des ADC korrekt via SPI einlesen und im LabVIEW verarbeiten. Ebenso kann ich Zeichen welche ich in einen String schreibe, auf dem LCD ausgeben. Ich habe nun bei dem zusammenfügen dieser zwei Komponenten etwas Mühe: Das SPI-Interface verarbeitet 8Bit - Arrays. Der auszugebende Wert hat jedoch den Datentyp unsigned Word.
Da ich Strings ja in ein 8Bit -Array umwandeln kann, kam mir die Idee, mit der Funktion "Number to Decimal String" einfach ein String zu erzeugen. Dies funktioniert leider nicht, da nicht ein String erzeugt wird, sondern eben ein Dezimalstring.. Weiss jemand wie man einen Dezimalstring in einen "normalen" String umwandlen kann?
Vielen Dank jetzt schon für die Antworten.


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.05.2014, 06:41
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: "Decimal integer String" to "String"
Hier mal 2 Möglichkeiten, wie du von einem U16 auf ein Array of U8 kommst
   
Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.05.2014, 08:42
Beitrag #3

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: "Decimal integer String" to "String"
Falls der ADC im bipolaren Modus arbeitet (+ und - Spannungen), dann gibt es gewöhnlich noch ein kleines Problem mit der richtigen Konvertierung negativer Werte. Melde Dich dann nochmal, wenn es Dich betrifft.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.05.2014, 12:58 (Dieser Beitrag wurde zuletzt bearbeitet: 04.05.2014 13:03 von SunShineDay.)
Beitrag #4

SunShineDay Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: May 2014

13.0f (32 Bit)
2014
EN



RE: "Decimal integer String" to "String"
Vielen Dank erstmals für die Antworten.
@ Jens: Beide Varianten haben leider nicht so funktioniert wie sie sollten. Ich habe das Gefühl dass ich vermutlich irgendwo einen Denkfehler mache. Meine Überlegung war/ist folgende: Wenn ich Werte über einen String einlese, zu einem Bytearray verarbeite dann funktioniert dies einwandfrei (Ich kann ja auch 99999999 in den String schreiben und ausgeben=> D.h. es werden einfach die einzelnen Zeichen des Strings ausgelesen, nicht der Gesamtwert). (Siehe Bild im Anhang.)
Um nicht alles kompliziert zu machen, dachte ich mir dass ich den bearbeiteten ADC- Wert nun doch einfach in einen String, und dann in ein Bytearray wandeln könnte. Bei DFFF (maskiert FFF) wäre dies zum Beispiel ja den Wert 4095. Wenn ich diesen nun als Sting verarbeiten könnte, müsste dies meiner Meinung nach funktionieren.
Die eben gegebenen Hilfestellungen führen ja eigentlich auch zu demselben Datentypen, aber komischerweise funktioniert dies einfach nicht.
@ Lucky: Ich verwende vergleiche 0V-5V gegen 5V. Den IN- ist auf Masse.

Ah ja die Variable "12 Bit ADC Wert" hat den Datentyp U16


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.05.2014, 13:18
Beitrag #5

SunShineDay Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: May 2014

13.0f (32 Bit)
2014
EN



RE: "Decimal integer String" to "String"
Habe die Lösung gerade gefundenSmile Danke trotzdem für die Hilfe..


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.05.2014, 17:38 (Dieser Beitrag wurde zuletzt bearbeitet: 04.05.2014 17:39 von GerdW.)
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.430
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: "Decimal integer String" to "String"
Hallo SunShineDay,

kannst du deine Lösung bitte noch etwas genauer erläutern? Ein reines Bild zeigt leider nicht alles…

- Dein "12 bit Wert" ist augenscheinlich ein Array. Was steht genau in diesem Array?
- Du wandelst dieses Array in 4stellige Dezimalstrings um. Führende Nullen sind anscheinend unnötig?
- Du serialisierst das so erhaltenen Array of Strings. Leider hast du die nötigen Einstellungen dafür in Bedienelementen versteckt. Ich vermute "ohne Längenangabe", aber welche Byteorder verwendest du?
- Der so erhaltene String wird dann in ein Bytearray umgewandelt.
Ich vermute, das ganze könnte auch einfacher funktionieren…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
04.05.2014, 18:55
Beitrag #7

SunShineDay Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: May 2014

13.0f (32 Bit)
2014
EN



RE: "Decimal integer String" to "String"
Hallo GerdW

Im Anhang habe ich das grobe Blockdiagramm der Schaltung angehängt (Als ADC wird der MCP3201 verwendet).
1. Der ADC:
hat eine Auflösung von 12 Bit. Das Signal wird als SPI - Protokoll ausgegeben. Gemäss Datenblatt brauch der MCP3201 die ersten zwei Clocks (somit auch Bits) für die Sampletime. In einem weiteren wird das 0Bit übertragen. Das heisst, ich muss den Wert erst mal maskieren, um an die "brauchbaren" Daten heranzukommen. Dies geschieht mit einer AND-Verknüpfung. (Z.B. in C: Port1 &= 0xF0; // Unteres Nibble wird gelöscht.)

2. Das LCD:
ist von Assembly Electronics (EA DOGM081). Auch dieses besitzt ein SPI-Interface welches ich für die Ansteuerung benutze. Ist die Hardware erst einmal am NI myRIO angeschlossen, kann das LCD einfach über das SPI VI im LabVIEW angesprochen werden. Im Anhang das Struktogramm. Der grosse Vorteil gegenüber einem Mikrocontroller ist, dass die Daten nur in das SPI-VI geschrieben werden müssen. (Konfiguration des SPI gemäss Datenblatt. ==> 8Bit per Frame). Als Testprogram habe ich einen String angehängt, und konnte jegliche Daten schön ausgeben.

3.
Meine Überlegung nun: Ich muss nun nur noch den Input des SPI durch den ADC- Wert ersetzen. Folglich sollte ich dann das gewünschte Resultat bekommen.
Um mir die meiner Meinung nach mühsamen Umrechnungen usw. zu umgehen, wandle ich den auszugebenden ADC- Wert einfach in einen String um.==> Bei Strings werden die einzelnen Zeichen ja offensichtlich richtig Übertragen. (So kann ich meiner Meinung nach die Umformung von den 12Bit Daten (gespeichert in einem U16 Array)zu den jeweils zu sendenden 8Bit per Frame gemütlich umgehenSmile)
Der erste Versuch schlug fehl, da ich an der Umwandlung von einem "Decimal integer String" to "String" scheiterte. Deshalb habe ich diesen Thread eröffnet. Mit der Funktion Flatten to String habe ich nun eine Lösung hinbekommen.
Vieleicht gäbe es auch eine schnellere / bessere Lösung. Da ich etwas Zeitdruck habe, ist vorerst einmal einfach wichtig, dass die Schaltung gemäss Aufgabenstellung "Einen Analogen Wert via SPI (unter Zuhilfenahme des Datenerfassungstools myRIO von NI) auf einem LCD darzustellen".


Angehängte Datei(en) Thumbnail(s)
                   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.05.2014, 08:13
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.430
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: "Decimal integer String" to "String"

Akzeptierte Lösung

Hallo SunShineDay,

meine Kritik im vorigen Beitrag bezog sich darauf, dass du hier nur Bilder von VIs anhängst, deren Einstellungen leider nicht angegeben werden. Sowas dann als Lösung zu markieren ist schon ziemlich grenzwertig…

Wie deine Schaltung aufgebaut ist, interessierte mich weniger. Eher die Art und Weise der Typumwandlungen…

Dass dein LCD-Panel keine Probleme mit der Anzeige von SPACEs hat, ist nun aber klar geworden. Warum sendest du aber die zusätzlichen 4 Byte ans LCD, die bei deiner Art der Typumwandlung entstehen:
   
Wenn du die Strings einfach verknüpfen würdest, bekämest du das gleiche Ergebnis - ohne vorangestellte LabVIEW-interne Typmerkmale…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.05.2014, 10:26
Beitrag #9

SunShineDay Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: May 2014

13.0f (32 Bit)
2014
EN



RE: "Decimal integer String" to "String"
Hallo GerdW

Vielen Dank für diese hilfreiche Antwort. Hab die direkte Verknüpfung der Strings gleich mal mit Erfolg ausprobiert. Ist wirklich eine Vereinfachung des Problems. Ich habe diese Funktion irgendwie übersehen.
Im Anhang die konkrete Umsetzung. Ich musste noch die Wortlänge bei der Funktion Number To Decimal String auf den Wert -4 ändern. (Um den Startpunkt bei 0 zu setzen).


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.05.2014, 10:33 (Dieser Beitrag wurde zuletzt bearbeitet: 05.05.2014 10:35 von GerdW.)
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 17.430
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: "Decimal integer String" to "String"
Hallo SunShineDay,

Zitat:Ich musste noch die Wortlänge bei der Funktion Number To Decimal String auf den Wert -4 ändern. (Um den Startpunkt bei 0 zu setzen).
Was für ein "Startpunkt"? Hmm
Eine "Wortlänge" (in der Kontexthilfe heißt der Anschluß "Breite") von -4 bewirkt genau das gleiche wie ein Wert von 0 - oder wenn du dort gar nichts anschließt: die Zahlen werden einfach (ohne führende SPACEs) nach String konvertiert…

P.S.: Die Nutzung des AutoCleanup-Tools würde hier auch nicht schaden! Big Grin

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


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  String Eingabeelement automatisch ergänzen... Roter Milan 2 2.724 26.10.2023 12:42
Letzter Beitrag: Roter Milan
  Unfallten from String-Error 74 Schrankwand 5 4.488 25.08.2023 11:26
Letzter Beitrag: rolfk
  Umwandlung String in Zeitstempel simcum 3 2.016 14.02.2023 17:41
Letzter Beitrag: Achim
  Tabulator in String-Control einlesen Abrow 1 1.614 12.12.2022 10:12
Letzter Beitrag: jg
  Kein leeren sondern gar kein String in Array einfügen Philipp_O 3 3.338 25.08.2022 15:06
Letzter Beitrag: Kiesch
  String "live" kontrollieren Philipp_O 2 3.042 07.06.2022 09:05
Letzter Beitrag: Philipp_O

Gehe zu: