Du mußt deine Messag z.B so aufbauen, wenn du als Daten Bytes, Words, singles oder doubles senden willst. Die genau sende-Länge mußt du allerdings selbst ausrechnen
Beispiel:
Dabei ist WORD und INTEGER ggf. natürlich das GleicheCode:DIM Befehl AS BYTE DIM Info AS BYTE DIM Datenbyte AS BYTE DIM Datenword AS BYTE AT Datenbyte OVERLAY DIM Datenlong AS BYTE AT Datenbyte OVERLAY DIM Datensingle AS BYTE AT Datenbyte OVERLAY DIM Datendouble AS BYTE AT Datenbyte OVERLAY Twi_mt_data = Varptr(Befehl) ' ist immer gleich Befehl = nnn ' was du magst Info = 1 '------------------------------------------- Datenbyte = 255 ' z.b Info = 1 Twi_mt_cntr = 3 ' Befehl + Info + 1 Byte gosub Run_wait_master '------------------------------------------- Datenword = 32768 ' z.b Info = 2 Twi_mt_cntr = 4 ' Befehl + Info + word gosub Run_wait_master '------------------------------------------- Datenlong = 41000000 ' z.b Info = 3 Twi_mt_cntr = 6 ' Befehl + Info + long gosub Run_wait_master '------------------------------------------- Datensingle = 3.14 ' z.b Info = 4 Twi_mt_cntr = 6 ' Befehl + Info + single gosub Run_wait_master '------------------------------------------- Datendouble = 3.1487967499 ' z.b Info = 5 Twi_mt_cntr = 10 ' Befehl + Info + double gosub Run_wait_master
Beim Slave das Gegenstück
Bei Dir könnte der Empfänger den Datentype eigentlich auch aus der Länge der Message entnehmen, die gibt ja weitgehend Aufschluss, was es istCode:twi_sr_data = VARPTR(Befehl) ---etc-etc---- If Twi_slv_flag = &H60 Then select case Info case 1: print Datenbyte case 2: print Datenword case 3: print Datenlong case 4: print Datensingle case 5: print Datendouble







Zitieren

Lesezeichen