String:文字列オブジェクトの生成と読み書き

説明

EEPROMのメモリにある1バイトのデータを文字列として利用することができるライブラリです。1文字=8ビットとして扱います。
使い方を説明します。まず、以下の様にStringオブジェクトを生成します。その際、パラメーターにはEEPROMのアドレスを指定します。以下の場合はEEPROMアドレスの0番を指定しています。

var myText=new String(0);

配列に値を書き込むにはset()メソッドを使います。set()メソッドのパラメーターは2つあり、最初に文字列の位置を指定し、次に書き込む値を指定します。以下の場合はmyTextの最初の文字を3という文字にします。

myText.set(0,0x33);

配列から値を読み出すにはcharAt()メソッドを使います。JavaScript本来のcharAt()は文字列から指定した位置にある1文字を読み出しますが、このライブラリでは読み出した文字の値を返します。charCodeAt()と同じ機能になります。charAt()メソッドのパラメーターにはインデックス番号を指定します。以下の場合は2番目の文字の値を読み出し変数nに入れます。

var n=myText.charAt(1);

Stringは文字列の位置がEEPROMのメモリサイズを超えているかどうかはチェックしません。このため、複数のStringオブジェクトを使用した場合、同じメモリにデータを書き込んでしまう可能性があります。この部分に関しては制作者が対処する必要があります。
1MbitのEEPROMを全て配列として使った場合、文字列の位置は0〜32767になります。

[以下のJavaScriptプログラムをダウンロード]

// String(adrs)
function String(a){
this.adrs=a; // EEPROM Address
this.set=function(idx,n){ // Set Char
var adrs=this.adrs+idx; // EEPROM Address+Index
i2cw(0x50|(((adrs>>16)&1)<<2), (adrs&0xff00)>>8,adrs&0xff,n&0xFF);
};
this.charAt=function(idx){ // Get Char
var c,adrs=this.adrs+idx; // EEPROM Address+Index
var d=0x50|(((adrs>>16)&1)<<2);
i2cw(d,(adrs&0xff00)>>8,adrs&255);
i2cr(d,c);
return c;
};
}
// Sample Code
var text=new String(1*2048);
var s=0;
while(s<10){
var c=text.charAt(s);
sleep(10); // Wait
log(chr(c));
s=s+1;
}
log("\n");

目次に戻る