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:
Code:
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
Dabei ist WORD und INTEGER ggf. natürlich das Gleiche
Beim Slave das Gegenstück
Code:
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
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 ist
Lesezeichen