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
Gast
#6374849
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.
Gast
#6374850
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.
Gast
#6374852
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 | |
Du willst also Strings in Zahlen wandeln:
1 | |
2 | |
leo
Gast
#6374858
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.
Gast
#6374861
Die Frage ist auch auch welchen String du eigentlich hast. Arduino kennt ja auch Strings als Klasse.
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
Gast
#6374918
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
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.
Gast
#6374942
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.
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.