# String := '$Byte';



## SirTom78 (1 September 2011)

Hallo Zusammen,

ich hoffe Ihr könnt mir weiterhelfen...

Für eine serielle Kommunikation mit einem RFID benötige ich z.B. folgenden String := '$186'.

Problem:
Wie kann ich einen String mit einem '$'Byte dynamisieren?

So gehts nicht: 
Variable : Byte := 186;
String := '$Variable'; 

Danke im Voraus!

Grüße, Thomas


----------



## Ralle (1 September 2011)

Mal rein theoretisch:
Du mußt das Byte in String wandeln (Dafür gibts Funktionen, z.Bsp. Int_To_String. Und dann mit einer Funktion (Concat) die Strings verbinden. Concat findest du in der Standard.Lib unter String functions.


----------



## PN/DP (1 September 2011)

Versuche es mal so:

```
String := CONCAT (‘$$’, BYTE_TO_STRING(Variable));
```

Harald


----------



## SirTom78 (2 September 2011)

Hallo Ralle,
Danke für die Idee, aber leider geht das nicht so einfach...  Das Byte bzw. bei dir die Int Variable wird dann als dreistelliger String gewandelt => 3x Byte! Somit ist mein '$186' anschließend länger als ein Byte...


Danke

Grüße Thomas


----------



## mac203 (2 September 2011)

Sieht gut aus.
Du solltest generell bei der Kommunikation beachten, dass ein "$" - Zeichen ein Steuerzeichen ist. Somit drauf achten, dass Du die Zeile so wie PN/DP gezeigt, schreibst.

Interessant bei der seriellen Kommunikation können auch noch die Funktionen

F_ToAsc
F_TChr
aus der TcSystem.lib

für Dich sein.

Gruß,
Mac203


----------



## SirTom78 (2 September 2011)

Hallo pm/dp,
Danke für die Antwort, aber leider geht das auch nicht...
Der Concat-Befehl macht dann einen vierstelligen String daraus => '$186'! 

Danke!

Grüße Thomas


----------



## soma (2 September 2011)

SirTom78 schrieb:


> Für eine serielle Kommunikation mit einem RFID benötige ich z.B. folgenden String := '$186'.
> 
> 
> Hallo pm/dp,
> ...


----------



## mac203 (2 September 2011)

Speicheraufbau:


```
1234
$186\0
```


----------



## Chräshe (2 September 2011)

SirTom78 schrieb:


> Hallo Ralle,
> Danke für die Idee, aber leider geht das nicht so einfach... Das Byte bzw. bei dir die Int Variable wird dann als dreistelliger String gewandelt => 3x Byte! Somit ist mein '$186' anschließend länger als ein Byte...


 
  Hallo Thomas,

  wenn das nicht gewünscht ist, verstehe ich die Frage nicht.

  Die Funktion mit „CONCAT“ ist ansonsten für solche Anwendungen wie geschaffen…

```
sTrennzeichen:= '$T';  (* vorbelegt mit Tabulator *)

String := CONCAT ('$$', BYTE_TO_STRING(Variable));
String := CONCAT (String, sTrennzeichen);  
String := CONCAT (String, BYTE_TO_STRING(Variable_2));
String := CONCAT (String, sTrennzeichen);  
String := CONCAT (String, BYTE_TO_STRING(Variable_3));
```
Gruß
Chräshe


----------



## SirTom78 (2 September 2011)

Hi Chräshe,

in deinem Beispiel ist der String dann mehrere Byte's lang!

Ich wollte hingegen ein Steuerzeichen mit einem String. Mein Steuerzeichent (String) sieht so aus '$BA' und ist auch nur ein Byte groß!

Danke für die Antwort!

Ich habe das Problem mit einer Funktion gelöst!

case Variable of
0:  String := '$01';
1:  String := '$02';
.
.
.
186: String := '$BA'
.
.
.
und so weiter!!!  

Grüße Thomas


----------



## StructuredTrash (4 September 2011)

Erst jetzt, wo Du Deine Lösung präsentierst, wird deutlich, was Du eigentlich wolltest. Das geht allerdings einfacher mit der bereits von mac203 genannten Funktion "F_ToChr".


----------

