Danke, ich komme vielleicht noch darauf zurück...
...momentan kämpfe ich mit den Prüfsummen, dann hole ich mir hoffentlich richtige Messwerte - wenn das funkt', nehme ich mir die COMs wieder vor
Code:
; Define
EnableExplicit
Enumeration
#Serial
EndEnumeration
DataSection
Magic:; Initial command
Data.a $c0,$55,$02,$01,$00,$1a; Set device as master ($1a=CRC)
; Commands after device has been set as bluetooth master (last byte is CRC)
GetMeasurementCount:
Data.a $c0,$51,$02,$FF,$FF,$9c; Get how many measurements are in device memory
GetMeasurementMemory:
Data.a $c0,$51,$02,$01,$01,$18; Get measurement #1
Data.a $c0,$51,$02,$01,$0a,$80; Get measurement #10
InputBuffer:
Data.a 0,0,0
Type:
Data.a 0
Count:
Data.w 0
One:
Data.a 0
Distance:
Data.l 0
Null:
Data.l 0,0
CRC:
Data.a 0
EndDataSection
Global SerialPort.s="COM7"
#CrcPolynomial= 166
#CrcSeed= 170
; EndDefine
Procedure.i ByteCRC(byte,crc)
; http://www.ti.com/lit/an/slua363/slua363.pdf
Protected bit_mask
Protected carry_check
Protected temp_data
temp_data=byte;
For bit_mask=0 To 7
byte!crc
crc<<1
temp_data<<1
carry_check=byte&$80
If carry_check
crc!#CrcPolynomial
EndIf
byte = temp_data
Next bit_mask
ProcedureReturn crc
EndProcedure
Procedure.i DataCRC(*memory,size)
Protected seed=#CrcSeed
While size
seed=ByteCRC(PeekA(*memory),seed)
size-1
*memory+1
Wend
ProcedureReturn seed
EndProcedure
Debug bytecrc(0,1)
Debug DataCRC(?magic,5)
End