There was a problem with your SQL connection - Please contact the administrator
Prototype
LinInterpol_F32 (rStart, rEnd, val)
Description
Linear interpolation. The array of points (8 bytes for each point, two floats, x and y) is determined by the positions rStart and rEnd (inclusive).
The x coords must be monotonically increasing and x1. . . xn must never be the same values.
r is the buffer position used for the interpolation location value and for the result.
Return
Nothing
Code Example
The following code example uses the LinInterpol_F32 function.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | /* Example Code * LinInterpol_F32 * * get buffer indexes r1, r2 and idx * set buffer in memory * interpol value at idx * return 0x00 (lookup pas ok) or 0x01 (lookup ok) * * pas de mode avec commande parametrable car ça ne fit pas dans la limite des 20 bytes */ #include "SMK900.evi" #define SENSORCODE 0x01 function exec_aircmd(){ local rxLen; local useParams; local r1,r2,idx; local i; local result; rxLen=GetAirBuf(0, 0, 20); /*if(rxLen>=20){ // 1 byte for paketID + 19 bytes of payload (3 bytes for indexes and minimum 16 bytes for buffer) useParams=true; r1=GetBuffer_S8(1); r2=GetBuffer_S8(2); idx=GetBuffer_S8(3); for(i=4;i<rxLen;i++){ SetBuffer(i-4,GetBuffer_S8(i),1); } }else{*/ useParams= false ; r1=4; r2=12; idx=0; SetBuffer_16(0,0x0000); // 2 SetBuffer_16(2,0x4000); SetBuffer_16(4,0x0000); // 1 SetBuffer_16(6,0x3F80); SetBuffer_16(8,0x0000); // -1 SetBuffer_16(10,0xBF80); SetBuffer_16(12,0x0000); // 5 SetBuffer_16(14,0x40A0); SetBuffer_16(16,0x0000); // -5 SetBuffer_16(18,0xC0A0); /*}*/ LinInterpol_F32(idx,r1,r2); /*if(useParams){ SetBuffer_16(0,GetBuffer_16(idx)); SetBuffer_16(2,GetBuffer_16(idx+2)); Send(4); }else{*/ if (GetBuffer_16(2)==0xC000&&GetBuffer_16(0)==0x0000){ result = 1; } else { result = 0; } SetBuffer(0,result,1); Send(1); /*}*/ } function main() { local execType; execType = GetExecType(); if (execType==MESHEXECTYPE_AIRCMD_bm){ exec_aircmd(); } } |