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 | // BigArray:Filter(BigArraySrc,BigArrayDst,func) // BigArray(adrs) function BigAry(a){ this .adrs=a; // EEPROM Address this .length=0; // Length this .set= function (idx,n){ // Set Data var adrs= this .adrs+idx*4; // EEPROM Address+Index i2cw(0x50|(((adrs>>16)&1)<<2), (adrs&0xff00)>>8,adrs&0xff, (n&0xFF000000)>>24,(n&0xFF0000)>>16,(n&0xFF00)>>8,n&0xFF); if ((idx+1)> this .length){ this .length=idx+1; } }; this .get= function (idx){ // Get Data var adrs= this .adrs+idx*4; // EEPROM Address+Index var t1,t2,t3,t4,d=0x50|(((adrs>>16)&1)<<2); i2cw(d,(adrs&0xff00)>>8,adrs&255); i2cr(d,t1,t2,t3,t4); return (t1<<24)|(t2<<16)|(t3<<8)|t4; }; } // BigArray Filter function filter(ary,aryDst,func){ var s=0; while (s<ary.length){ var d=ary.get(s); sleep(10); // Wait if (func(d)){ aryDst.set(aryDst.length,d); } s=s+1; } } // Sample Code function over10(n){ if (n>=10){ return 1; } return 0; } var myAry= new BigAry(0); var dstAry= new BigAry(2048); myAry.set(0, 1024);sleep(9); myAry.set(1, 2);sleep(9); myAry.set(2, 10);sleep(9); myAry.set(3, 9);sleep(9); myAry.set(4, 99);sleep(9); filter(myAry,dstAry,over10); log( "result\n" ); var n=0; while (n<dstAry.length){ log(n, ":" ,dstAry.get(n), "\n" ); n=n+1; sleep(10); } |