PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Strings über I2C senden?



toter_fisch
09.08.2012, 11:52
Hi, ich möchte die Daten von einem GPS empfänger über I2C senden. Bisher habe ich immer nur ein Byte gesendet. Kann man auch ganze Strings mit ASCII zeichen über I2C versenden, und wie sieht dann der Empfang auf dem Slave gerät in Bascom aus?

Gruß toter_fisch

Kampi
09.08.2012, 11:57
Hey,

Strings sind nicht mehr als zusammengehörende Bytes. Wenn du also einen String verschicken willst, sendest du jedes Byte einzelnt. Da jeder String mit einer "0" abgeschlossen wird, machst du eine While-Schleife die solange die Bytes deines Strings sendet, bis das Zeichen eine "0" ist.
Alternativ kannst du auch die Länge des Strings bestimmen und damit weiterarbeiten.
Der Empfang sieht dann ähnlich aus. Du empfängst jedes Zeichen und hängst es an deinen Empfangsstring dran, sprich z.B. so:

String = String + Chr(Zeichen aus dem Empfangsbuffer)

Wichtig ist nur das du den Befehl "Chr()" verwendest, da du sonst nicht das Zeichen an sich speicherst sondern den ASCII Wert des Zeichens.

toter_fisch
09.08.2012, 12:45
Das GPS sendet ja aber nicht nur Buchstaben sondern vorallem auch Zahlen. Der "Chr()" Befehl macht jetzt aber plötzlich aus einer 3 ein komisches Zeichen :(

Kampi
09.08.2012, 14:04
Ja bei Zahlen kannst du genauso verfahren.
Der Chr() Befehl wandelt einen Dezimalwert in ein ASCII um, sprich er nimmt deine 3 und wandelt sie in das dementsprechende ASCII Zeichen um.
Wenn du eine "3" per UART bzw. RS232 als Zeichen empfängst und nicht als ASCII benötigst du den Befehl nicht.
Schau mal hier:

http://avrhelp.mcselec.com/

und such mal nach "Chr"