説明
2つのBigArray配列を連結し新しい配列(BigArray)とします。concat()のパラメーターは連結元の配列1(BigArray)、連結元の配列2(BigArray)、結果を返す配列(BigArray)の順番で指定します。
// BigArray:Concat(BigArraySrc1,BigArraySrc2,BigArrayDst)
// 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 Concat
function concat(src1,src2,dst){
var s=0,d;
while(s<src1.length){
d=src1.get(s);sleep(10); // Wait
dst.set(dst.length,d);sleep(10); // Wait
s=s+1;
}
s=0;
while(s<src2.length){
d=src2.get(s);sleep(10); // Wait
dst.set(dst.length,d);sleep(10); // Wait
s=s+1;
}
}
// Sample Code
var srcAry1=new BigAry(0);
var srcAry2=new BigAry(2048);
var dstAry=new BigAry(4096);
srcAry1.set(0, 0x30313233);sleep(9);
srcAry1.set(1, 0x40414243);sleep(9);
srcAry2.set(0, 0x60616263);sleep(9);
srcAry2.set(1, 0x64656667);sleep(9);
srcAry2.set(2, 0x68696A6B);sleep(9);
srcAry2.set(3, 0x36373839);sleep(9);
concat(srcAry1,srcAry2,dstAry);
目次に戻る