Ich weiß es immer noch nicht
Ja die Gegenstelle ist ein Mikrocontroller => folglich auch programmierbar.
Nur das Programm ist (ich nenns mal so) "dumm". Es liest nur Werte aus einem Speicher ein und schickt diese dann über die serielle Schnittstelle ans LabVIEW.
Wie schaffe ich es das der String so aussieht.
Derzeit schicke ich beim Mikrocontroller ein Signal wie folgt weg:
printf("%u", 0xAA);
Das heißt er schickt 170 über die serielle Schnittstelle weg.
als nächstes printf("%u", 0xBB).
nur sind diese Werte nicht immer 0xAA und 0xBB sondern jedes Mal verschieden.
%u heißt nur unsigned
Nun weiß ich nicht wie ich sie sonst anders wegschicken soll als das obige, damit sie vom LabVIEW richtig interpretiert werden.
Zitat:Derzeit schicke ich beim Mikrocontroller ein Signal wie folgt weg:
printf("%u", 0xAA);
Dann müsstest du eigentlich das Nummernformat auf führende Nullen einstellen können:
Code:
printf("%03u", 0xAA);
Und damit kannst du in LV dann den String nach jedem 3. Zeichen splitten.
Lg Stefan
@opossom
Auch eine Möglichkeit, aber ich würde so machen:
printf("%c", 0xAA);
und dann in LV String To Byte Array verwenden. (Ist besser, weil man nicht mehr parsen muss, sondern man bekommt direkt ein Array aus U8-Zahlen)
Gruss, Eugen
Mist warum muss jede Problemlösung wieder ein neues Problem aufwerfen.
Ich glaube ich verstehe die Funktion "String to Byte Array" nicht ganz.
Was macht die?
Anbei ein Bild:
Wenn ich nacheinander über die serielle SChnittstelle 1,2,3,4,5 und 6 empfange, sollte dann nicht das Byteaarray auch 1,2,...6 enthalten?
WEil wenn ich es nachher wieder extrahiere, dann ist der erste Wert 6 und alle weiteren 0.
Warum?
Über die serielle Schnittstelle sende ich nun wie das printf das von eugen graf vorgeschlagen wurde
@oppossom: Hab den Vorschlag probiert, ist aber in meinem Programm nicht anwendbar.
Wenn ich direkt auf das "Serial Read" draufklicke, dann sieht man ja die erhaltenen Werte und die Anzahl der Bytes.
Dort steht dann zuerst 1 dann 2 dann 3 bis eben 6.
1 entspricht eh 1, oder?
Zitat:Wenn ich nacheinander über die serielle SChnittstelle 1,2,3,4,5 und 6 empfange, sollte dann nicht das Byteaarray auch 1,2,...6 enthalten?
WEil wenn ich es nachher wieder extrahiere, dann ist der erste Wert 6 und alle weiteren 0.
Versuch mal, gleich nach der Umwandlung String/ByteArray einen Indicator hinzusetzten, da müssten die Werte eigentlich der Reihe nach drinnen sein. Alternativ dazu kannst du dir den String vor der Umwandlung auch mit "-Code"-Anzeige anschauen.
Zitat:1 entspricht eh 1, oder?
Das ist genau der Vorteil von Eugens Methode. Du erhältst die Werte quasi gleich direkt, ohne eine zusätzliche Umwandlung/Zerteilung von String nach Zahl machen zu müssen...
Lg
Edit: hab ich vorher überlesen
Zitat:Ich glaube ich verstehe die Funktion "String to Byte Array" nicht ganz.
Was macht die?
Das kannst du dir im Prinzip vorstellen wie eine Umwandlung nach der Ascii-Tabelle. zB du wandelst den String "A" um und bekommst demnach 65
Ich habs jetzt mit Hilfe von einer Anzeige mir angeschaut und der "String to Byte Array" schreibt immer nur an die Nullte Stelle des Arrays.
Also es wird zuerst 1 auf die 0te Stelle geschrieben, dann ein 2er (überschreibt 1er) bis am Ende auf der 0ten Stelle 6 steht und alle anderen 0 sind.
Wie kann ich das machen, dass er nach der Reihe die SPeicherplätze füllt?
Oder geht das mit "String to Byte Array" gar nicht.
Achja die 1,2,3 stehen nicht in einem einzelnen String sondern kommen nacheinander über die serielle Schnittstelle!
Zitat:Achja die 1,2,3 stehen nicht in einem einzelnen String sondern kommen nacheinander über die serielle Schnittstelle!
Dann wundert es mich nicht. Die Umwandlung wartet natürlich nicht, bis ale Zeichen da sind, sondern wandelt sofort um. Nachdem aber nur 1 Zeichen da ist, hat das Array auch nur ein Element.
Nun hast du 2 Möglichkeiten: entweder du wartest, bis dein String komplett ist und wandelst dann um, oder du nimmst jeweils das 0-te Element aus der Umwandlung und schreibst es an die letzte Stelle eines zweiten Byte-Arrays in dem du die Werte "sammelst"
Könntest du bitte einen Vorschlag posten wie ich die Bytes "sammeln" soll. mit Bild oder .vi bitte
Hi!
hab mal beide Vorschläge aufgezeichnet...