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
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.
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.
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
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.
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
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.