Hallo,
folgendes Problem würde gerne über Wire eine Zahl sendet und der
Empfänger soll dann ein Licht anmachen funktioniert auch gut.
So und jetzt würde ich auch gerne die zahl 10 und 11 u.s.w benutzen
leider reagiert der Slave nur bis zur Zahl 9.
Hat da jemand eine Ahnung wieso?
Master
Du sendest die Zahlen als ASCII,
also deine '1' ist binär im ASCII Code 0x31.
Eigentlich wird 0x31 als Byte gesendet.
Entweder du sendest es binär, also 0x01 für 1 und 0x0A für 10...
oder du sendest für 10 halt zwei Byte. Erst die 1 dann die 0.
Marc V. schrieb:> Weil 10 zweistellig ist.
und sogar eine '1' und eine '0' enthält, wie würde Robert sagen?
"welches Schweinerl hätten sie gern?"
Also erst mal den ganzen Text String (array of char) lesen und dann in
eine Zahl wandeln -> atoi()
Joachim B. schrieb:> Also erst mal den ganzen Text String (array of char) lesen und dann in> eine Zahl wandeln -> atoi()
Nein!
Warum den Weg über String?
Offensichtlich magst du lieber angepisst sein, als mich verstehen zu
wollen.
OK, dann formuliere ich es um.
Es ist völlig unsinnig per I2C Zeichen, oder Ketten der selben, zu
versenden.
Also macht auch die Auswertung dieser Zeichen(ketten) keinen Sinn.
Arduino Fanboy D. schrieb:> Offensichtlich magst du lieber angepisst sein, als mich verstehen zu> wollen.
moment mal, du fragest mich doch:
Arduino Fanboy D. schrieb:> Joachim B. schrieb:>> Also erst mal den ganzen Text String (array of char) lesen und dann in>> eine Zahl wandeln -> atoi()>> Nein!> Warum den Weg über String?
das war vom TO!
der bekommt doch offensichtlich '1' also gibt es auch einen '1' Sender
wie soll ich darauf antworten?
Richte deine Frage doch an den TO und nicht an mich!
und wenn mehrstellige Zahlen eintrudeln muss man alle lesen und ein Ende
definieren
Joachim B. schrieb:> Also erst mal den ganzen Text String (array of char) lesen und dann in> eine Zahl wandeln -> atoi()
Das kann man tun, wenn die 256 möglichen Werte, die ein einzelnes Byte
annehmen kann, nicht reichen. Vorher gibt es dazu in dem hier
geschilderten Fall keinen Grund. Wenn man das auch nur näherungsweise
ausschöpfen will, ist es allerdings dringend geraten, über die
Programmstruktur nochmal genauer nachzudenken.
> das war vom TO!
Offensichtlich ist der Sender auch von ihm.
Eine gesendete '10' kann es nicht geben, und damit kann eine solche auch
nicht ankommen.
Und das wurde ihm auch schon von Marc V. gesagt.
Warum sollte ich mich dann auch noch darum kümmern?
> wie soll ich darauf antworten?
Wer den String eingeführt hat, warst schließlich du.
Also frage ich auch dich, was du mit dem String anstellen willst.
> Richte deine Frage doch an den TO und nicht an mich!
Warum sollte ich den TO nach Dingen fragen, welche du von dir gibst?
Das halte ich für irrational.
LIDL Konzern schrieb im Beitrag #6415262:
> Hausverbot
Ja, das ist wahr...
Aber das erzählst du doch nur deswegen hier rum, weil ich dich letztens
wegen deinem winzigen Schnäbi vor der Kasse aufgezogen habe.
------------
Und jetzt etwas zum Ernst der Sache.
Aus meiner Wühlkiste, ein Master, welcher permanent die Zahlen von 0 bis
255 sendet. Bei Misserfolg wird der aktuelle Versuch wiederholt.
Und ein Slave, welcher die Daten entgegennimmt und den Empfang
unterbindet, bis die Daten verarbeitet wurden.
Arduino Fanboy D. schrieb:> Das halte ich für irrational.
mag sein, aber wenn der TO Char sendet und keine Zahlen!
Du hast bei I2C natürlich Recht, man kann auch 0-255 direkt senden und
auch so auswerten!
Arduino Fanboy D. schrieb:> Aus meiner Wühlkiste, ein Master, welcher permanent die Zahlen von 0 bis> 255 sendet. Bei Misserfolg wird der aktuelle Versuch wiederholt.
erinnert mich an meine erste Übertragung vom PC1500 zum apple2, dort
habe ich es ähnlich gemacht, Bytes zu senden und als Bestätigung das
gespiegelte Byte zurückzusenden und erst wenn der Sender das
ordnungsgemäße Byte bestätigt wurde zum nächsten Byte gegangen, aber da
hatte ich Kontrolleitungen(IEEE488 ähnlich).
Hier am I2C müsste man sich doch ein Protokoll überlegen, oder ein
Spezialbyte AA/55 welches dann nicht im übertragenen Wertebereich liegen
darf.
Arduino Fanboy D. schrieb:> Es ist völlig unsinnig per I2C Zeichen, oder Ketten der selben, zu> versenden.
Richtig
Arduino Fanboy D. schrieb:> Also macht auch die Auswertung dieser Zeichen(ketten) keinen Sinn.
Aber wenn jetzt Zeichen(ketten) via I2C versendet wurden machen die
Auswertungen dieser Zeiche(ketten) sehr wohl sinn ;)
Der TO müsste sich jetzt also überlegen: Soll er Zeichen via I2C
versenden oder soll er Zahlen via I2C versenden. Je nachdem muss er nur
sein Programm/Programme anpassen und der Drops ist gelutscht. Deswegen
sich zu zanken finde ich etwas lächerlich.