Forum: Mikrocontroller und Digitale Elektronik stringToBinary gesucht


von R. F. (rfr)


Lesenswert?

Hallo allerseits,

im Arduino lese ich einen string ein, den ich per  SPI ausgeben will. 
Der an den SPI angeschlossene Chip soll aber Registerinhalte erhalten. 
Ich werde das also in das Binärformat wandeln müssen.

Wie macht man das?

Die Funktionsliste der Arduinohilfe lässt keinen Hinweis darauf erkennen 
(oder ich habe den Übersehen)

Grüsse
Robert

von STK500-Besitzer (Gast)


Lesenswert?

R. F. schrieb:
> lese ich einen string ein

Wie sieht der aus?

R. F. schrieb:
> Ich werde das also in das Binärformat wandeln müssen.

Nö, in eine Zahl.
"Binär" ist nur eine Darstellungsform.

von W.S. (Gast)


Lesenswert?

Tja, dann solltest du mal lernen, wie man Eingabe-Konvertierungen - also 
Ziffernfolge in einer Zeichenkette - denn so programmiert. Es gibt ne 
Menge Beispiele hier im Forum (ja,auch von mir), guck einfach mal. Im 
Prinzip ist das alles nicht wirklich schwer, du solltest derartige 
Algorithmen binnen 1..2 Minuten selber ausgedacht haben.

W.S.

von leo (Gast)


Lesenswert?

R. F. schrieb:
> im Arduino lese ich einen string ein, den ich per  SPI ausgeben will.
> Der an den SPI angeschlossene Chip soll aber Registerinhalte erhalten.
> Ich werde das also in das Binärformat wandeln müssen.

Nein. SPI transferiert Zahlen. Im simplen Fall:
1
receivedVal = SPI.transfer(val);

Du willst also Strings in Zahlen wandeln:
1
       #include <stdlib.h>
2
       int atoi(const char *nptr);

leo

von Hauke (Gast)


Lesenswert?

R. F. schrieb:
> Hallo allerseits,
>
> im Arduino lese ich einen string ein, den ich per  SPI ausgeben will.
> Der an den SPI angeschlossene Chip soll aber Registerinhalte erhalten.
> Ich werde das also in das Binärformat wandeln müssen.

Wenn du den String über das serielle Interface einliest, dann versuche 
es mal mit 'Serial.parseInt'. Diese Methode und weitere sind in der 
Stream Klasse definiert.

von slim shady (Gast)


Lesenswert?

Die Frage ist auch auch welchen String du eigentlich hast.

Arduino kennt ja auch Strings als Klasse.

von R. F. (rfr)


Lesenswert?

Ich sehe mich missverstanden...

ich habe einen Chip an den SPI eines Arduino angeschlossen.
Der Arduino hat am seinem USB-Stecker eine Verbindung zum Terminal.
Über dieses gebe ich ein: '07E28f91'  .
Dieses stellt die ASCII-Repräsentation einer Hexadezimalzahlm dar.
Dieses soll jetzt in den am SPI hängendem Chip geschrieben werden.
Dazu lese ich mit serial.read den String ein. Ich will den per SPI in 
den Chip schreiben.

Wie muss ich wandeln?

Gruss

Robert

von Uwe (Gast)


Lesenswert?

Hi,
>Dieses stellt die ASCII-Repräsentation einer Hexadezimalzahlm dar.
und wenn du nun jeder einzelnen "ASCII-Repräsentation" den ASCII Wert 
klaust, haste da nicht den Hexwert? also "0" = $30 - $30 = $0
Was ist da so schwer drann?

Viel Erfolg, Uwe

von Rolf M. (rmagnus)


Lesenswert?

R. F. schrieb:
> Ich sehe mich missverstanden...

Du hast allerdings auch nicht richtig erklärt was du unter "String in 
Binärformat wandeln" verstehst.

> ich habe einen Chip an den SPI eines Arduino angeschlossen.
> Der Arduino hat am seinem USB-Stecker eine Verbindung zum Terminal.
> Über dieses gebe ich ein: '07E28f91'  .
> Dieses stellt die ASCII-Repräsentation einer Hexadezimalzahlm dar.
> Dieses soll jetzt in den am SPI hängendem Chip geschrieben werden.
> Dazu lese ich mit serial.read den String ein. Ich will den per SPI in
> den Chip schreiben.

Ok, also möchtest du den Inhalt des String als Hexadezimalzahl 
interpretieren und in einen Integer umwandeln. Dafür kann man strtoul 
verwenden.
http://www.cplusplus.com/reference/cstdlib/strtoul/
base wäre in dem Fall 16.

von Wolfgang (Gast)


Lesenswert?

Rolf M. schrieb:
> Ok, also möchtest du den Inhalt des String als Hexadezimalzahl
> interpretieren und in einen Integer umwandeln. Dafür kann man strtoul
> verwenden.
> http://www.cplusplus.com/reference/cstdlib/strtoul/

Über SPI kann man nur Bytes versckicken. UL macht die Sache nicht 
einfacher. Da ist dann schon die nächste Frage vorprogrammiert.

von Rolf M. (rmagnus)


Lesenswert?

Wolfgang schrieb:
> Über SPI kann man nur Bytes versckicken. UL macht die Sache nicht
> einfacher. Da ist dann schon die nächste Frage vorprogrammiert.

Was er da genau machen will, ist immer noch nicht so klar. Aber ja, auf 
eine Folgefrage warte ich auch schon. ?

Ich habe daraus:

R. F. schrieb:
> Über dieses gebe ich ein: '07E28f91'  .

geschlossen, dass er evtl. 32-Bit-Werte wandeln will.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.