Marida2通信仕様説明 2013.3.20現在
Marida2のソケット通信仕様の説明です。関連アプリMaridaの解説も参考にしてください。
Marida2のソケット通信仕様(2012.03.20版)
1.通信の基本データ構造
1-1.送信の基本データ構造
Marida2との通信は、基本的に下記のデータ構造を持つパケットにより行い、0x03から始まり、0x06で終わります。 1バイト目 0x03 開始コード 2バイト目 xx データ全体サイズ512バイト以内になるように 3〜4バイト目 xxxx 命令コマンド(2バイト) 5バイト以降〜 xx,xx.. データ コマンド毎に意味が異なります 最終バイト目 0x06 終了コード
1-2.受信の基本データ構造
Marida2がパケットを受信した後、接続機器にACKや必要データを返すときは、下記のようなデータ構造を持つパケットが返ります。 1バイト目 0x03 開始コード 2バイト目 xx データ全体サイズ 3バイト以降〜 xx,xx.. ACKやデータなど受け取ったコマンドにより、返信内容が異なります 最終バイト目 0x06 終了コード
1-3.命令コマンド
3〜4バイト目に来る命令コマンドには下記のものがあります。 命令code 命令(Luaridaで使用するコマンド) 0000 受取った返信 0003 touch 0004 Canvas.drawLine 0005 Canvas.drawRect 0006 Canvas.drawCircle 0007 Canvas.putCls 0008 Canvas.putLine 0009 Canvas.putRect 000A Canvas.putCircle 000B inkey 0101 Canvas.drawText 0102 Canvas.drawCls 0103 Canvas.putText 0105 Canvas.drawTextCenter 0106 Canvas.drawTextBox 0104 Canvas.getviewSize 0107 Canvas.drawTextRotate 0108 Canvas.putTextBox 0109 Canvas.putTextRotate 010A Canvas.getColor 010B Canvas.putTextCenter 0205 dialog 0206 toast 0207 editText 0208 System.expCall 0209 System.impCallActionView 020A getSDdcard 020B getRunfile 020C System.impCallActionSend 020D System.exit 020E editsetText 020F System.setScreen 0210 System.setSleep 0308 Item.add 0309 Item.clear 030A Item.list 030B Item.radio 030C Item.check 0400 Canvas.putg 0401 Canvas.getg 0402 Canvas.loadBmp 0403 Canvas.putflush 0404 Canvas.saveBmp 0405 Canvas.workCls 0406 Canvas.putRotg 0407 Canvas.setWorkBmp 0408 Canvas.setMainBmp 0409 Canvas.workflush 040A Canvas.getBmpSize 040B Canvas.putWork 0500 Sound.clearAll 0501 Sound.setSoundFile 0502 Sound.start 0503 Sound.restart 0504 Sound.stop 0505 Sound.pause 0506 Sound.isPlay 0507 Sound.beep 0600 Sensor.getAccel 0601 Sensor.getOrient 0602 Sensor.getMagnet 0603 Sensor.setdevAccel 0604 Sensor.setdevOrient 0605 Sensor.setdevMagnet 0606 Sensor.getGdirection 0700 Http.get 0701 Http.addHeader 0702 Http.status 0703 Http.post 0704 Http.setPostFile 0705 Http.addParam 0706 Http.clrParam 0707 Http.clrHeader 0708 Http.setContentType 0800 Zip.status 0801 Zip.exec 0802 Zip.addFile 0900 Sock.connectOpen 0901 Sock.listenOpen 0902 Sock.close 0903 Sock.send 0904 Sock.recv 0905 Sock.getAddress 0A00 Sprite.define 0A01 Sprite.put 0A02 Sprite.init 0A03 Sprite.touch
2.命令コマンド別の通信仕様
2-0003.画面のタッチを取得します: touch(0x0003)
touch( [タッチ取得(1)] ) 0x03 0x06 0x0003 0xGG 0x06 → 受信 0x03 0x08 0xXXXX 0xYYYY 0xHH 0x06 0xGGの値 0x00: 座標とタッチの状態を返す 0x01: タッチダウンもしくはタッチ状態であれば返る 0x02: タッチアップもしくは離れている上体であれば返る 0x03: タッチアップ状態からタッチして、さらに離れたら状態になれば返る 受信 0xXXXXの値 : タッチしたX座標 0xYYYYの値 : タッチしたY座標 0xHHの値 : タッチの状態 0x00: ACTION_DOWN タッチ押下 0x01: ACTION_UP 指を持ち上げている 0x02: ACTION_MOVE 指を持ち上げずにスライドさせている 0x03: ACTION_CANCEL UP+DOWNの同時発生(=キャンセル) 0x04: ACTION_OUTSIDE ターゲットとするUIの範囲外を押下 0x46: エラー発生させて処理を停止させる
2-0004.画面に線を引きます: Canvas.drawLine(0x0004)
Canvas.drawLine( startX, startY, stopX, stopY, 色) 0x03 0x11 0x0004 0xXXXX 0xYYYY 0xGGGG 0xHHHH 0xIIIIIIII 0x06 0xXXXXの値 : 開始X座標 0xYYYYの値 : 開始Y座標 0xGGGGの値 : 終了X座標 0xHHHHの値 : 終了Y座標 0xIIIIIIIIの値 : 色コード(ARGB) 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0005.画面にボックスを描きます: Canvas.drawRect(0x0005)
Canvas.drawRect( startX, startY, stopX, stopY, 色 [,塗りつぶし]) 0x03 0x12 0x0005 0xXXXX 0xYYYY 0xGGGG 0xHHHH 0xIIIIIIII 0xNN 0x06 0xXXXXの値 : 左上X座標 0xYYYYの値 : 左上Y座標 0xGGGGの値 : 右下X座標 0xHHHHの値 : 右下Y座標 0xIIIIIIIIの値 : 色コード(ARGB) 0xNNの値 0: 枠だけ 1: 塗りつぶし 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0006.画面に円を描きます: Canvas.drawCircle(0x0006)
Canvas.drawCircle( CenterX, CenterY, RadiusX, 色 [,塗りつぶし]) 0x03 0x10 0x0006 0xXXXX 0xYYYY 0xRRRR 0xIIIIIIII 0xNN 0x06 0xXXXXの値 : 中心X座標 0xYYYYの値 : 中心Y座標 0xRRRRの値 : 半径ピクセル数 0xIIIIIIIIの値 : 色コード(ARGB) 0xNNの値 0: 枠だけ 1: 塗りつぶし 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0007.画面を塗りつぶします(putflushが必要): Canvas.putCls(0x0007)
Canvas.putCls( [背景色(4)] ) 0x03 0x0A 0x0007 0xIIIIIIII 0xGG 0x06 0xIIIIIIIIの値 : 色コード(ARGB) 0xGGの値 0:ノーマル(0xIIIIIIIIで塗りつぶします) 1:透明色で初期化する 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0008.画面に線を引きます(putflushが必要): Canvas.putLine(0x0008)
Canvas.putLine( startX, startY, stopX, stopY, 色) 0x03 0x11 0x0008 0xXXXX 0xYYYY 0xGGGG 0xHHHH 0xIIIIIIII 0x06 0xXXXXの値 : 開始X座標 0xYYYYの値 : 開始Y座標 0xGGGGの値 : 終了X座標 0xHHHHの値 : 終了Y座標 0xIIIIIIIIの値 : 色コード(ARGB) 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0009.画面にボックスを描きます(putflushが必要): Canvas.putRect(0x0009)
Canvas.putRect( startX, startY, stopX, stopY, 色 [,塗りつぶし]) 0x03 0x12 0x0009 0xXXXX 0xYYYY 0xGGGG 0xHHHH 0xIIIIIIII 0xNN 0x06 0xXXXXの値 : 左上X座標 0xYYYYの値 : 左上Y座標 0xGGGGの値 : 右下X座標 0xHHHHの値 : 右下Y座標 0xIIIIIIIIの値 : 色コード(ARGB) 0xNNの値 0: 枠だけ 1: 塗りつぶし 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-000A.画面に円を描きます(putflushが必要): Canvas.putCircle(0x000A)
Canvas.putCircle( CenterX, CenterY, RadiusX, 色 [,塗りつぶし]) 0x03 0x10 0x000A 0xXXXX 0xYYYY 0xRRRR 0xIIIIIIII 0xNN 0x06 0xXXXXの値 : 中心X座標 0xYYYYの値 : 中心Y座標 0xRRRRの値 : 半径ピクセル数 0xIIIIIIIIの値 : 色コード(ARGB) 0xNNの値 0: 枠だけ 1: 塗りつぶし 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-000B.キー入力を取得します: inkey(0x000B)
inkey( [キー取得(1)] ) 0x03 0x06 0x000B 0xFn 0x06 → 受信 0x03 0x08 0xXXXX 0xAA 0xMMMM 0x06 0xFnの値 0x00: キーコードと押されている状態を返す 0x01: キーが押されていれば返る 0x02: キーが押されていなければ返る 0x03: キーが押されていない状態から押されて、さらに離されたら返る 戻り値 XXXX 押されたキーコード AA 押されている状態 0x00: ACTION_DOWN キーが押されている 0x01: ACTION_UP キーが押されていない 0x46: エラー発生させて処理を停止させる MMMM メタキーの状態
2-0101.文字を描きます: Canvas.drawText(0x0101)
Canvas.drawText( 文字列(255), X座標(2), Y座標(2), 文字サイズ(2), 文字色(4)[,背景色(4)] ) 0x03 0xSS(全体サイズ) 0x0101 0xXXXX 0xYYYY 0xGGGG 0xIIIIIIII 0xMS(文字長) 0xMM〜文字データ 0x06 0x03 0xSS(全体サイズ) 0x0101 0xXXXX 0xYYYY 0xGGGG 0xIIIIIIII 0xMS(文字長) 0xMM〜文字データ 0xJg 0xKKKKKKKK 0x06 背景処理があるときは、文字データの後に0xJg(==1で背景処理あり)と背景色データが付きます。 0xXXXXの値 : 開始X座標 0xYYYYの値 : 開始Y座標 0xGGGGの値 : フォントサイズ 0xIIIIIIIIの値 : 色コード(ARGB) 0xMSの値 : 文字の長さ 0xMM〜 : 表示する文字コード(UTF-8固定) 0xJgの値 : 背景データの有無 0: 背景無し 1: 背景塗りつぶす 0xKKKKKKKKの値 : 背景色コード(ARGB) 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0102.画面を塗りつぶします: Canvas.drawCls(0x0102)
Canvas.drawCls( [背景色(4)] ) 0x03 0x0A 0x0102 0xIIIIIIII 0xGG 0x06 0xIIIIIIIIの値 : 色コード(ARGB) 0xGGの値 0:ノーマル(0xIIIIIIIIで塗りつぶします) 1:透明色で初期化する 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0103.文字を描きます(putflushが必要): Canvas.putText(0x0103)
Canvas.putText( 文字列(255), X座標(2), Y座標(2), 文字サイズ(2), 文字色(4)[,背景色(4)] ) 0x03 0xSS(全体サイズ) 0x0103 0xXXXX 0xYYYY 0xGGGG 0xIIIIIIII 0xMS(文字長) 0xMM〜文字データ 0x06 0x03 0xSS(全体サイズ) 0x0103 0xXXXX 0xYYYY 0xGGGG 0xIIIIIIII 0xMS(文字長) 0xMM〜文字データ 0xJg 0xKKKKKKKK 0x06 背景処理があるときは、文字データの後に0xJg(==1で背景処理あり)と背景色データが付きます。 0xXXXXの値 : 開始X座標 0xYYYYの値 : 開始Y座標 0xGGGGの値 : フォントサイズ 0xIIIIIIIIの値 : 色コード(ARGB) 0xMSの値 : 文字の長さ 0xMM〜 : 表示する文字コード(UTF-8固定) 0xJgの値 : 背景データの有無 0: 背景無し 1: 背景塗りつぶす 0xKKKKKKKKの値 : 背景色コード(ARGB) 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0104.画面のサイズを取得します: Canvas.getviewSize(0x0104)
Canvas.getviewSize() 0x03 0x06 0x0104 0x00 0x06 受信 0x03 0x07 0xWWWW 0xHHHH 0x06 戻り値 WWWW 画面幅 HHHH 画面高さ
2-0105.センタリングして文字を描きます: Canvas.drawTextCenter(0x0105)
Canvas.drawTextCenter( 文字列(255), X座標(2), Y座標(2), 文字サイズ(2), 文字色(4)[,背景色(4)] ) 0x03 0xSS(全体サイズ) 0x0105 0xXXXX 0xYYYY 0xGGGG 0xIIIIIIII 0xMS(文字長) 0xMM〜文字データ 0x06 0x03 0xSS(全体サイズ) 0x0105 0xXXXX 0xYYYY 0xGGGG 0xIIIIIIII 0xMS(文字長) 0xMM〜文字データ 0xJg 0xKKKKKKKK 0x06 背景処理があるときは、文字データの後に0xJg(==1で背景処理あり)と背景色データが付きます。 0xXXXXの値 : 中心X座標 0xYYYYの値 : 中心Y座標 0xGGGGの値 : フォントサイズ 0xIIIIIIIIの値 : 色コード(ARGB) 0xMSの値 : 文字の長さ 0xMM〜 : 表示する文字コード(UTF-8固定) 0xJgの値 : 背景データの有無 0: 背景無し 1: 背景塗りつぶす 0xKKKKKKKKの値 : 背景色コード(ARGB) 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0106.指定範囲で改行して文字を描きます: Canvas.drawTextBox(0x0106)
Canvas.drawTextBox( 文字列(255), X座標(2), Y座標(2), 文字サイズ(2), 文字色(4), 描画幅(2)[,背景色(4)] ) 0x03 0xSS(全体サイズ) 0x0106 0xXXXX 0xYYYY 0xGGGG 0xIIIIIIII 0xMS(文字長) 0xMM〜文字データ 0xLLLL 0x06 0x03 0xSS(全体サイズ) 0x0106 0xXXXX 0xYYYY 0xGGGG 0xIIIIIIII 0xMS(文字長) 0xMM〜文字データ 0xLLLL 0xJg 0xKKKKKKKK 0x06 背景処理があるときは、文字データの後に0xJg(==1で背景処理あり)と背景色データが付きます。 0xXXXXの値 : 開始X座標 0xYYYYの値 : 開始Y座標 0xGGGGの値 : フォントサイズ 0xIIIIIIIIの値 : 色コード(ARGB) 0xMSの値 : 文字の長さ 0xMM〜 : 表示する文字コード(UTF-8固定) 0xLLLL : 描画範囲(ピクセル)。この範囲を超えると折り返します。 0xJgの値 : 背景データの有無 0: 背景無し 1: 背景塗りつぶす 0xKKKKKKKKの値 : 背景色コード(ARGB) 受信 0x03 0x06 0x00 0x00 0xGG(表示行数) 0x06 0xGGの値: 表示した行数(1〜)
2-0107.文字を回転させて描きます: Canvas.drawTextRotate(0x0107)
Canvas.drawTextRotate( 文字列, 中心X座標, 中心Y座標, 回転角度, 文字サイズ, 文字色 [,背景色] ) 0x03 0xSS(全体サイズ) 0x0107 0xXXXX 0xYYYY 0xRRRR 0xGGGG 0xIIIIIIII 0xMS(文字長) 0xMM〜文字データ 0x06 0x03 0xSS(全体サイズ) 0x0107 0xXXXX 0xYYYY 0xGGGG 0xIIIIIIII 0xMS(文字長) 0xMM〜文字データ 0xJg 0xKKKKKKKK 0x06 背景処理があるときは、文字データの後に0xJg(==1で背景処理あり)と背景色データが付きます。 0xXXXXの値 : 中心X座標 0xYYYYの値 : 中心Y座標 0xRRRRの値 : 回転角度(degree) 0xGGGGの値 : フォントサイズ 0xIIIIIIIIの値 : 色コード(ARGB) 0xMSの値 : 文字の長さ 0xMM〜 : 表示する文字コード(UTF-8固定) 0xJgの値 : 背景データの有無 0: 背景無し 1: 背景塗りつぶす 0xKKKKKKKKの値 : 背景色コード(ARGB) 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0108.指定範囲で改行して文字を描きます(putflushが必要): Canvas.putTextBox(0x0108)
Canvas.putTextBox( 文字列(255), X座標(2), Y座標(2), 文字サイズ(2), 文字色(4), 描画幅(2)[,背景色(4)] ) 0x03 0xSS(全体サイズ) 0x0108 0xXXXX 0xYYYY 0xGGGG 0xIIIIIIII 0xMS(文字長) 0xMM〜文字データ 0xLLLL 0x06 0x03 0xSS(全体サイズ) 0x0108 0xXXXX 0xYYYY 0xGGGG 0xIIIIIIII 0xMS(文字長) 0xMM〜文字データ 0xLLLL 0xJg 0xKKKKKKKK 0x06 背景処理があるときは、文字データの後に0xJg(==1で背景処理あり)と背景色データが付きます。 0xXXXXの値 : 開始X座標 0xYYYYの値 : 開始Y座標 0xGGGGの値 : フォントサイズ 0xIIIIIIIIの値 : 色コード(ARGB) 0xMSの値 : 文字の長さ 0xMM〜 : 表示する文字コード(UTF-8固定) 0xLLLL : 描画範囲(ピクセル)。この範囲を超えると折り返します。 0xJgの値 : 背景データの有無 0: 背景無し 1: 背景塗りつぶす 0xKKKKKKKKの値 : 背景色コード(ARGB) 受信 0x03 0x06 0x00 0x00 0xGG(表示行数) 0x06 0xGGの値: 表示した行数(1〜)
2-0109.文字を回転させて描きます(putflushが必要): Canvas.putTextRotate(0x0109)
Canvas.putTextRotate( 文字列, 中心X座標, 中心Y座標, 回転角度, 文字サイズ, 文字色 [,背景色] ) 0x03 0xSS(全体サイズ) 0x0109 0xXXXX 0xYYYY 0xRRRR 0xGGGG 0xIIIIIIII 0xMS(文字長) 0xMM〜文字データ 0x06 0x03 0xSS(全体サイズ) 0x0109 0xXXXX 0xYYYY 0xGGGG 0xIIIIIIII 0xMS(文字長) 0xMM〜文字データ 0xJg 0xKKKKKKKK 0x06 背景処理があるときは、文字データの後に0xJg(==1で背景処理あり)と背景色データが付きます。 0xXXXXの値 : 中心X座標 0xYYYYの値 : 中心Y座標 0xRRRRの値 : 回転角度(degree) 0xGGGGの値 : フォントサイズ 0xIIIIIIIIの値 : 色コード(ARGB) 0xMSの値 : 文字の長さ 0xMM〜 : 表示する文字コード(UTF-8固定) 0xJgの値 : 背景データの有無 0: 背景無し 1: 背景塗りつぶす 0xKKKKKKKKの値 : 背景色コード(ARGB) 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-010A.ピクセルの色を取得します: Canvas.getColor(0x010A)
Canvas.getColor( X座標, Y座標 ) 0x03 0x09 0x010A 0xXXXX 0xYYYY 0x06 受信 0x03 0x08 0xRX 0xIIIIIIII 0x06 0xRXの値 0x01: OK 0x46: エラー(終了) 0xIIIIIIIIの値 : ピクセルの色(α値,R値,G値,B値)
2-010B.センタリングして文字を描きます(putflushが必要): Canvas.putTextCenter(0x010B)
Canvas.putTextCenter( 文字列(255), X座標(2), Y座標(2), 文字サイズ(2), 文字色(4)[,背景色(4)] ) 0x03 0xSS(全体サイズ) 0x010B 0xXXXX 0xYYYY 0xFFFF 0xCCCCCCCC 0xMS(文字長) 0xMM〜文字データ 0x06 0x03 0xSS(全体サイズ) 0x010B 0xXXXX 0xYYYY 0xFFFF 0xCCCCCCCC 0xMS(文字長) 0xMM〜文字データ 0xBg 0xBBBBBBBB 0x06 背景処理があるときは、文字データの後に0xJg(==1で背景処理あり)と背景色データが付きます。 0xXXXXの値 : 中心X座標 0xYYYYの値 : 中心Y座標 0xGGGGの値 : フォントサイズ 0xIIIIIIIIの値 : 色コード(ARGB) 0xMSの値 : 文字の長さ 0xMM〜 : 表示する文字コード(UTF-8固定) 0xJgの値 : 背景データの有無 0: 背景無し 1: 背景塗りつぶす 0xKKKKKKKKの値 : 背景色コード(ARGB) 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0205.画面にダイアログを出します: dialog(0x0205)
dialog(タイトル,本文[,ボタンの種類]) 0x03 0xSS(全体サイズ) 0x0205 0xNN 0xTS(タイトル文字長) 0xTM〜タイトル文字データ 0xHS(本文文字長) 0xHM〜本文文字データ 0x06 0xNN: ボタンの種類 0x00: ボタンなし 0x01: OK 0x02: Yes/No 0x03: Yes/No/Cancel 受信 0x03 0x04 0xRX(OK/Cancel) 0x06 0xRXの値 0x00: Cancel 0x01: OK/Yes 0x02: No 0x46: エラー(終了)
2-0206.画面にトーストを出します: toast(0x0206)
toast(本文,表示期間) 0x03 0xSS(全体サイズ) 0x0206 0xHN 0xHS(本文文字長) 0xHM〜本文文字データ 0x06 0xHNの値 0x00: 表示時間が短い 0x01: 表示時間が長い 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0207.文字入力させます: editText(0x0207)
editText(タイトル[,文字初期値フラグ]) 0x03 0xSS(全体サイズ) 0x0207 0xSN 0xTS(タイトル長) 0xTM〜タイトルデータ 0x06 0xSNの値 0x00: 初期化する(デフォルト) 0x01: 初期化しない 受信 0x03 0xSS(全体サイズ) 0xRX(OK/Cancel) 0xHS(入力文字長) 0xHM(入力データ) 0x06 0xRXの値 0x00: Cancel 0x01: OK 0x46: エラー(終了)
2-0208.Androidアプリを明示的に呼び出します: System.expCall(0x0208)
System.expCall( クラス名 [,データ,タイプ] ) 0x03 0xSS(全体サイズ) 0x0208 0xLL(class名長) 0xPM〜class名データ 0xTT(Data長) 0xWW〜データ 0xTT(Type長) 0xTM〜cTypeデータ 0x06 このコマンドの後は、Maridaは終了します。ただしエラーが返ったときは、処理を続けます。 0xLLの値 : クラス名の長さ 0xPM〜 : クラス名 0xTTの値 : データの長さ 0xWW〜 : 引数となるデータ 0xTTの値 : タイプの長さ 0xTM〜 : Typeデータ 受信 0x03 0x04 0xRX 0x06 0xRXの値 0x00: 通常終了 0x46: エラー(終了)
2-0209.AndroidアプリをACTION_VIEWで暗黙的に呼び出します: System.impCallActionView(0x0209)
System.impCallActionView( データ文字列, タイプ ) 0x03 0xSS(全体サイズ) 0x0209 0xLL(URI長) 0xPM〜URIデータ 0xTT(Type長) 0xTM〜(Type文字列) 0x06 このコマンドの後は、Maridaは終了します。ただしエラーが返ったときは、構文処理を続けます。 impCallActionViewでは、 it.setAction(Intent.ACTION_VIEW); it.setDataAndType( データ文字列, タイプ); のみ対応しています。 0xLLの値 : URIの長さ 0xPM〜 : URIデータ 0xTTの値 : タイプの長さ 0xTM〜 : タイプ文字列 受信 0x03 0x04 0xRX 0x06 0xRXの値 0x00: 通常終了 0x46: エラー(終了)
2-020A.マウントされているSDカードのディレクトリ名を取得します: getSdcard(0x020A)
0x03 0x05 0x020A 0x06 受信 0x03 0xSS(全体サイズ) 0xRX(OK) 0xHS(SDCARDマウント名長さ) 0xHM(SDCARDマウント名) 0x06 0xRXの値 0x00: OK 0x46: エラー(終了) マウント名の仕様 'sdcard' このように、/で挟まない。
2-020C.AndroidアプリをACTION_SENDで暗黙的に呼び出します: impCallActionSend(0x020C)
impCallActionSend( 送信文字列 [, "text/plain"等] ) 0x03 0xSS(全体サイズ) 0x020C 0xLL(URI長) 0xPM〜URIデータ 0xTT(Type長) 0xTM〜(Type文字列) 0x06 このコマンドの後は、Maridaは終了します。ただしエラーが返ったときは、構文処理を続けます。 impCallActionSendでは、 it.setAction(Intent.ACTION_SEND); it.putExtra(Intent.EXTRA_TEXT, strText); it.setType("text/plain");←省略時は無し。 のみ対応しています。 0xLLの値 : URIの長さ 0xPM〜 : URIデータ 0xTTの値 : タイプの長さ 0xTM〜 : タイプ文字列 受信 0x03 0x04 0xRX 0x06 0xRXの値 0x00: 通常終了 0x46: エラー(終了)
2-020D.Marida2を完全に終了させます: System.exit(0x020D)
System.exit() 0x03 0x05 0x020D 0x06 受信 0x03 0x04 0x46 0x06 エラー値がもどり、即終了
2-020E.文字を初期化します: editsetText(0x020E)
editsetText(初期化文字) 0x03 0xSS(全体サイズ) 0x020E 0xTS(文字長) 0xTM〜文字列 0x06 0xTSの値 : 文字列の長さ 0xTM〜 : 文字データ 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-020F.画面の方向を設定します: System.setScreen(0x020F)
System.setScreen(向き) 0x03 0x06 0x020F 0xMM 0x06 0xMMの値 0x00: 横向き(デフォルト) 0x01: 縦向き このコマンドを送信した後は、500ms程度ウェイトする必要がある。それは、Androdiの画面が回転したイベント処理に時間が掛かるためである。 受信 0x03 0x04 0xRX 0x06 0xRXの値 0x00: 通常終了 0x46: エラー(終了)
2-0210.画面のスリープを設定します:System.setSleep(0x0210)
System.setSleep(off(keep)/on) 0x03 0x06 0x0210 0xMM 0x06 0xMMの値 0x00: スリープしない。 0x01: スリープする。 受信 0x03 0x04 0xRX 0x06 0xRXの値 0x00: 通常終了 0x46: エラー(終了)
2-0308.リスト等の表示アイテムを追加します: Item.add(0x0308)
Item.add(文字[,フラグ]) 0x03 0xSS(全体サイズ) 0x0308 0xGG 0xTS(文字長) 0xTM〜文字データ 0x06 0xGGの値 これはチェックボタン常時時のデフォルトチェック状態を設定するものです 0x00: false 0x01: true; 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0309.表示アイテムをクリアします: Item.clear(0x0309)
Item.clear() 0x03 0x05 0x0309 0x06 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-030A.選択リストを表示します: Item.list(0x030A)
Item.list(文字) 0x03 0xSS(全体サイズ) 0x030A 0xTS(文字長) 0xTM〜文字データ 0x06 受信 0x03 0x05 0xGG 0xNm(番号0〜255) 0x06 0xGGの値 0x00: キャンセル 0x01: 選択された 0x46: エラー(終了) 0xNmの値 : 選択された番号が返ります。
2-030B.選択ラジオボタンを表示します: Item.radio(0x030B)
Item.radio(文字,初期選択位置) 0x03 0xSS(全体サイズ) 0x030B 0xPJ(初期選択位置1〜) 0xTS(文字長) 0xTM〜文字データ 0x06 受信 0x03 0x05 0xGG 0xNm(番号0〜255) 0x06 0xGGの値 0x00: キャンセル 0x01: 選択された 0x46: エラー(終了) 0xNmの値 : 選択されたラジオボタンの番号が返ります。
2-030C.選択チェックボタンを表示します: Item.check(0x030C)
Item.check(文字) 0x03 0xSS(全体サイズ) 0x030C 0xTS(文字長) 0xTM〜文字データ 0x06 受信 0x03 0x14 0xGG 0xXXXXXXXXXXXXXXXX(8バイト) 0x06 0xGGの値 0x00: キャンセル 0x01: 選択された 0x46: エラー(終了) 0xXX..(8バイト) : 先頭順にビット単位でチェックが入っていれば 1、無ければ 0となっている。従って、選択アイテムは64個までである。
2-0400.ワーク画面の画像をメイン画面に表示します: Canvas.putg(0x0400)
Canvas.putg( 画面表示エリアLeftTopX座標(2), 画面表示エリアLeftTopY座標(2), 画面表示エリアRightBottomX座標(2), 画面表示エリアRightBottomY座標(2), ワークLeftTopX座標(2), ワークLeftTopY座標(2), ワークRightBottomX座標(2), ワークRightBottomY座標(2) ) 画面表示エリアとワークの指定範囲が異なる場合は、自動的に扁平します。 0x03 0x15 0x0400 0xXXXX 0xYYYY 0xGGGG 0xHHHH 0xMMXX 0xMMYY 0xMMGG 0xMMHH 0x06 0xXXXXの値 : 表示画面の左上X座標 0xYYYYの値 : 表示画面の左上Y座標 0xGGGGの値 : 表示画面の右下X座標 0xHHHHの値 : 表示画面の右下Y座標 0xMMXXの値 : ワーク画面の左上X座標 0xMMYYの値 : ワーク画面の左上Y座標 0xMMGGの値 : ワーク画面の右下X座標 0xMMHHの値 : ワーク画面の右下Y座標 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0401.メイン画面の画像をワーク画面に取得します: Canvas.getg(0x0401)
Canvas.getg( 画面表示エリアLeftTopX座標(2), 画面表示エリアLeftTopY座標(2), 画面表示エリアRightBottomX座標(2), 画面表示エリアRightBottomY座標(2), ワークLeftTopX座標(2), ワークLeftTopY座標(2), ワークRightBottomX座標(2), ワークRightBottomY座標(2) ) 画面表示エリアとワークの指定範囲が異なる場合は、自動的に扁平します。 0x03 0x15 0x0401 0xXXXX 0xYYYY 0xGGGG 0xHHHH 0xMMXX 0xMMYY 0xMMGG 0xMMHH 0x06 0xXXXXの値 : 表示画面の左上X座標 0xYYYYの値 : 表示画面の左上Y座標 0xGGGGの値 : 表示画面の右下X座標 0xHHHHの値 : 表示画面の右下Y座標 0xMMXXの値 : ワーク画面の左上X座標 0xMMYYの値 : ワーク画面の左上Y座標 0xMMGGの値 : ワーク画面の右下X座標 0xMMHHの値 : ワーク画面の右下Y座標 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0402.画像ファイルをワーク画面に取得します: Canvas.loadBmp(0x0402)
Canvas.loadBmp( 画像ファイル名, ワークLeftTopX座標(2), ワークLeftTopY座標(2), ワークRightBottomX座標(2), ワークRightBottomY座標(2) [,縮小回数] ) 画像ファイルサイズとワークの指定範囲が異なる場合は、自動的に扁平します。0xNNは縮小回数です。省略時は1になります。 0x03 0xSS(全体サイズ) 0x0402 0xMMXX 0xMMYY 0xMMGG 0xMMHH 0xTS(文字長) 0xTM〜ファイル名文字データ 0xNN 0x06 0xMMXXの値 : ワーク画面の左上X座標 0xMMYYの値 : ワーク画面の左上Y座標 0xMMGGの値 : ワーク画面の右下X座標 0xMMHHの値 : ワーク画面の右下Y座標 0xTSの値 : ファイル名の文字数 0xTM〜 : ファイル名(フルパス) 0xNNの値 : 縮小回数(詳しくはhttp://d.hatena.ne.jp/tarosay/20110106/1294290371 参照) 受信 0x03 0x06 0x00 0x00 0xKK(結果) 0x06 0xKKの値 画像ファイルの読み込みに成功したかどうかが返ります。 0x00: 成功 0x01: 失敗
2-0403.メイン画面に書き込みます: Canvas.putflush(0x0403)
Canvas.putflush([x,y,g,h]) 0x03 0x0E 0x0403 0xLL 0xXXXX 0xYYYY 0xGGGG 0xHHHH 0x06 0xXXXXの値 : フラッシュしたい表示の左上X座標 0xYYYYの値 : フラッシュしたい表示の左上Y座標 0xGGGGの値 : フラッシュしたい表示の右下X座標 0xHHHHの値 : フラッシュしたい表示の右下Y座標 0xLLの値 0x00: 画面全体をフラッシュする 0x01: 指定エリアをフラッシュする 0xXXXX〜0xHHHHはフラッシュする範囲を示します。(x,y)-(g,h)のエリアをフラッシュします。 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0404.ワーク画面の指定エリアをファイルに保存します: Canvas.saveBmp(0x0404)
Canvas.saveBmp( 画像ファイル名, ワークLeftTopX座標(2), ワークLeftTopY座標(2), ワークRightBottomX座標(2), ワークRightBottomY座標(2) ) 画像ファイルサイズとワークの指定範囲が異なる場合は、自動的に扁平します。 0x03 0xSS(全体サイズ) 0x0404 0xMMXX 0xMMYY 0xMMGG 0xMMHH 0xTS(文字長) 0xTM〜ファイル名文字データ 0x06 0xMMXXの値 : ワーク画面の左上X座標 0xMMYYの値 : ワーク画面の左上Y座標 0xMMGGの値 : ワーク画面の右下X座標 0xMMHHの値 : ワーク画面の右下Y座標 0xTSの値 : ファイル名の文字数 0xTM〜 : ファイル名(フルパス) 受信 0x03 0x06 0x00 0x00 0xKK(結果) 0x06 0xKKの値 画像ファイルの書き出しに成功したかどうかが返ります。 0x00: 成功 0x01: 失敗
2-0405.ワーク画面をクリアします: Canvas.workCls(0x0405)
Canvas.workCls([Color]) 0x03 0x09 0x0405 0xIIIIIIII 0x06 0xIIIIIIIIの値 : 塗りつぶす色コード(ARGB) 0x00000000の場合は、透明色で塗りつぶします。 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0406.ワーク画面の画像を回転させてメイン画面に表示します: Canvas.putrotg(0x0406)
Canvas.putrotg( 画面表示中心X座標(2), 画面表示エリア中心Y座標(2), 回転角度(2), ワークLeftTopX座標(2), ワークLeftTopY座標(2), ワークRightBottomX座標(2), ワークRightBottomY座標(2) ) 0x03 0x13 0x0406 0xXXXX 0xYYYY 0xKKKK 0xMMXX 0xMMYY 0xMMGG 0xMMHH 0x06 0xXXXXの値 : 表示画面の中心X座標 0xYYYYの値 : 表示画面の中心Y座標 0xKKKKの値 : 画像の回転角度(degree) 0xMMXXの値 : ワーク画面の左上X座標 0xMMYYの値 : ワーク画面の左上Y座標 0xMMGGの値 : ワーク画面の右下X座標 0xMMHHの値 : ワーク画面の右下Y座標 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0407.ワーク画面のサイズを設定します: Canvas.setWorkBmp(0x0407)
Canvas.setWorkBmp(width,height) 0x03 0x09 0x0407 0xWWWW 0xHHHH 0x06 0xWWWWの値 : ワーク画面の幅(ピクセル) 0xHHHHの値 : ワーク画面の高さ(ピクセル) 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0408.メイン画面のサイズを設定します: Canvas.setMainBmp(0x0408)
Canvas.setMainBmp(width,height) 0x03 0x09 0x0408 0xWWWW 0xHHHH 0x06 0xWWWWの値 : メイン画面の幅(ピクセル) 0xHHHHの値 : メイン画面の高さ(ピクセル) 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0409.ワーク画面をSurfaceViewにフラッシュします: Canvas.workflush(0x0409)
Canvas.workflush(x,y,g,h) 0x03 0x0E 0x0409 0xLL 0xMMXX 0xMMYY 0xMMGG 0xMMHH 0x06 0xLLの値 特に設定はない 0xXXXX〜0xHHHHはフラッシュする範囲を示します。ワークエリアの(x,y)-(g,h)のエリアをSurfaceView全体にフラッシュします。 0xMMXXの値 : ワーク画面の左上X座標 0xMMYYの値 : ワーク画面の左上Y座標 0xMMGGの値 : ワーク画面の右下X座標 0xMMHHの値 : ワーク画面の右下Y座標 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-040A.画像ファイルのサイズを取得します: Canvas.getBmpSize(0x040A)
Canvas.getBmpSize( 画像ファイル名 ) 0x03 0xSS(全体サイズ) 0x040A 0xTS(文字長) 0xTM〜ファイル名文字データ 0x06 0xTSの値 : ファイル名の文字数 0xTM〜 : ファイル名(フルパス) 受信 0x03 0x0E 0x00 0x00 0xKK(結果) 0xWWWWWWWW 0xHHHHHHHH 0x06 0xKKの値 0x00: 成功 0x01: 失敗 0xWWWWWWWWの値 画像の幅(ピクセル) 0xHHHHHHHHの値 画像の高さ(ピクセル)
2-040B.ワーク画面内で画像をコピーします: Canvas.putWork(0x040B)
Canvas.putWork(mx,my,mg,mh,xx,yy,gg,hh) 0x03 0x15 0x040B 0xXXXX 0xYYYY 0xGGGG 0xHHHH 0xMMXX 0xMMYY 0xMMGG 0xMMHH 0x06 0xXXXXの値 : ワーク画面のコピー先の左上X座標 0xYYYYの値 : ワーク画面のコピー先の左上Y座標 0xGGGGの値 : ワーク画面のコピー先の右下X座標 0xHHHHの値 : ワーク画面のコピー先の右下Y座標 0xMMXXの値 : ワーク画面のコピー元の左上X座標 0xMMYYの値 : ワーク画面のコピー元の左上Y座標 0xMMGGの値 : ワーク画面のコピー元の右下X座標 0xMMHHの値 : ワーク画面のコピー元の右下Y座標 受信 0x03 0x06 0x00 0x00 0xKK(結果) 0x06 0xKKの値 0x00: 成功 0x01: 失敗
2-0500.サウンドデータをクリアします: Sound.clearAll(0x0500)
Sound.clearAll() 0x03 0x05 0x0500 0x06 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0501.サウンドファイルをセットします: Sound.setSoundFile(0x0501)
Sound.setSoundFile(サウンドファイル名, サウンド番号(0〜7), BGM・効果音フラグ ) 0x03 0xLC(全体サイズ) 0x0501 0xNN(サウンド番号) 0xGM(BGM効果音フラグ) 0xLL(ファイル名長) 0xLN(ファイル名〜) 0x06 0xNNの値 : サウンドデータに割り当てるサウンド番号 0xGMの値 : BGM/効果音フラグ 0: BGMタイプで多重再生不可 1: 効果音タイプで多重再生有効(4重まで) 0xLLの値 : ファイル名の長さ 0xLN〜 : ファイル名(フルパス) 受信 0x03 0x06 0x00 0x00 0xKK(結果) 0x06 0xKKの値 0x00: 設定成功 0x01: 設定失敗
2-0502.サウンド再生します: Sound.start(0x0502)
Sound.start(サウンド番号(0〜7) [, Loop有無] ) 0x03 0x07 0x0502 0xNN(サウンド番号) 0xLP 0x06 0xNNの値 : 割り当てたサウンド番号 0xLPの値 : ループの有無 0: ループ無し 1: ループ有り 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0503.サウンド最初から再生します: Sound.restart(0x0503)
Sound.restart(サウンド番号(0〜7)) 0x03 0x06 0x0503 0xNN(サウンド番号) 0x06 0xNNの値 : 割り当てたサウンド番号 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0504.サウンドの再生を止めます: Sound.stop(0x0504)
Sound.stop(サウンド番号(0〜7) ) 0x03 0x06 0x0504 0xNN(サウンド番号) 0x06 0xNNの値 : 割り当てたサウンド番号 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0505.サウンドの再生を一時停止します: Sound.pause(0x0505)
Sound.pause(サウンド番号(0〜7) ) 0x03 0x06 0x0505 0xNN(サウンド番号) 0x06 0xNNの値 : 割り当てたサウンド番号 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0506.サウンドが鳴っているかどうか調べます: Sound.isPlay(0x0506)
Sound.isPlay(サウンド番号(0〜7)) 0x03 0x06 0x0506 0xNN(サウンド番号) 0x06 0xNNの値 : 割り当てたサウンド番号 受信 0x03 0x06 0x0000 0xIS 0x06 0xISの値 : サウンドの演奏有無 0: 鳴っていない 1: 鳴っている
2-0507.ビープ音を鳴らします: Sound.beep(0x0507)
Sound.beep([周波数[,msec]]) 0x03 0x09 0x0507 0xHZHZ 0xMMMM 0x06 0xHZHZの値 : 周波数 1〜10000Hz 0xMMMMの値 : なっている時間(msec)
2-0600.加速度センサ情報を取得します: Sensor.getAccel(0x0600)
Sensor.getAccel() 0x03 0x05 0x0600 0x06 受信 0x03 0x10 0xKK 0xXXXXXXXX 0xYYYYYYYY 0xZZZZZZZZ 0x06 0xKKの値 : 常にゼロ 0xXXXXXXXXの値 : X方向の加速度(4バイト) float 値を持っている。 0xYYYYYYYYの値 : Y方向の加速度(4バイト) float 値を持っている。 0xZZZZZZZZの値 : Z方向の加速度(4バイト) float 値を持っている。
2-0601.傾斜センサ情報を取得します: Sensor.getOrient(0x0601)
Sensor.getOrient() 0x03 0x05 0x0601 0x06 受信 0x03 0x10 0xKK 0xYYYYYYYY 0xPPPPPPPP 0xRRRRRRRR 0x06 0xKKの値 : 常にゼロ 0xYYYYYYYYの値 : 回転の角度(4バイト) float 値を持っている。 0xPPPPPPPPの値 : 上下のピッチ成分(4バイト) float 値を持っている。 0xRRRRRRRRの値 : ロール成分(4バイト) float 値を持っている。
2-0602.磁気センサ情報を取得します: Sensor.getMagnet(0x0602)
Sensor.getMagnet() 0x03 0x05 0x0602 0x06 受信 0x03 0x10 0xKK 0xXXXXXXXX 0xYYYYYYYY 0xZZZZZZZZ 0x06 0xKKの値 : 常にゼロ 0xXXXXXXXXの値 : X方向の磁気成分(4バイト) float 値を持っている。 0xYYYYYYYYの値 : Y方向の磁気成分(4バイト) float 値を持っている。 0xZZZZZZZZの値 : Z方向の磁気成分(4バイト) float 値を持っている。
2-0603.加速度センサの動作を切り替えます: Sensor.setdevAccel(0x0603)
Sensor.setdevAccel() 0x03 0x06 0x0603 0xSS 0x06 0xSSの値 : センサ動作の有無を設定します 0: 加速度センサ動作終了 1: 加速度センサ動作開始 受信 0x03 0x06 0x00 0x00 0xRR 0x06 0xRRの値 : 設定の成功有無 0: 設定成功 1: 設定失敗
2-0604.傾斜センサの動作を切り替えます: Sensor.setdevOrient(0x0604)
Sensor.setdevOrient() 0x03 0x06 0x0604 0xSS 0x06 0xSS : センサ動作の有無を設定します 0: 傾斜センサ動作終了 1: 傾斜センサ動作開始 受信 0x03 0x06 0x00 0x00 0xRR 0x06 0xRRの値 : 設定の成功有無 0: 設定成功 1: 設定失敗
2-0605.磁気センサの動作を切り替えます: Sensor.setdevMagnet(0x0605)
Sensor.setdevMagnet() 0x03 0x06 0x0605 0xSS 0x06 0xSS : センサ動作の有無を設定します 0: 磁気センサ動作終了 1: 磁気センサ動作開始 受信 0x03 0x06 0x00 0x00 0xRR 0x06 0xRRの値 : 設定の成功有無 0: 設定成功 1: 設定失敗
2-0700.httpのGETコマンド処理を行います: Http.get(0x0700)
Http.get( URL, getFilename ) 0x03 0xLL(全体サイズ) 0x0700 0xUR(URL長) 0xUN(URL〜) 0xXL(ファイル名長) 0xXN(ファイル名〜) 0x06 引数 URL:はURL(Uniform Resource Locator) getFilenameは、取得し保存するファイル名
2-0701.httpのコマンドに設定するヘッダを追加します: Http.addHeader(0x0701)
Http.addHeader( HeaderName, Data ) 0x03 0xLL(全体サイズ) 0x0701 0xHR(ヘッダ名長) 0xHN(ヘッダ名〜) 0xXL(データ長) 0xXN(データ〜) 0x06 引数 HeaderName:はヘッダ名 Dataは、ヘッダの内容
2-0702.httpの取得状態を返します: Http.status(0x0702)
Http.status() 0x03 0x06 0x0702 0x00 0x06 受信 0x03 0x06 0x00 0xST 0xAK 0x06 戻り値 0xST 0: http取得中 1: http取得正常終了 2: URLのプロトコルが開けない 3: URLが見つからない。または接続できない 4: データ取得時にエラー発生 5: 保存ファイルが開けない 6: 接続タイムアウト 7: httpスレッド起動時にエラー発生 8: postできませんでした 9: post処理中にエラーが発生
2-0703.httpのPOSTコマンド処理を行います: Http.post(0x0703)
Http.post( URL ) 0x03 0xLC(全体サイズ) 0x0703 0xUR(URL長) 0xUN(URL〜) 0x06 0xURの値 : POSTするURL名の長さ 0xUN〜 : POSTするURL名 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0704.送信するファイル名をセットします: Http.setPostFile(0x0704)
Http.setPostFile( Filename ) 0x03 0xLC(全体サイズ) 0x0704 0xFL(ファイル名長) 0xFN(ファイル名〜) 0x06 0xFLの値 : POSTするファイル名の長さ 0xFN〜 : POSTするファイル名(フルパス指定) 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0705.パラメータをセットします: Http.addParam(0x0705)
Http.addParam( 文字列 ) パラメータとは、?以降に付けられる&で区切られた文字列です。 0x03 0xLC(全体サイズ) 0x0705 0xPL(パラメータ文字長) 0xPN(パラメータ〜) 0x06 0xPLの値 : POSTするときのパラメータの長さ 0xPN〜 : POSTするときのパラメータ。例えば abc=3 など。URLの後に?で区切られて付くパラメータです。 パラメータは追加セットされるとabc=3&efg=2のように&で区切られて並べられます。 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x06
2-0706.セットしたパラメータを消去します: Http.clrParam(0x0706)
Http.clrParam() 0x03 0x05 0x0706 0x06 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x062-0707.httpのコマンドに設定するヘッダを消去します: Http.clrHeader(0x0707)
Http.clrHeader() 0x03 0x05 0x0707 0x06 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x062-0708.送信するファイル名のコンテントタイプをセットします: Http.setContentType(0x0708)
Http.setContentType( ContentType ) 0x03 0xLC(全体サイズ) 0x0708 0xXL(コンテントタイプ名長) 0xXN(コンテントタイプ名〜) 0x06 0xXLの値 : POSTするファイルのコンテントタイプ名の長さ 0xXN〜 : POSTするファイルのコンテントタイプ名。image/jpeg, text/plain, text/xml, application/zipなど。 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x062-0800.zipの実行状況を返します: Zip.status(0x0800)
Zip.status() 0x03 0x06 0x0800 0x00 0x06 受信 0x03 0x06 0x00 0xST 0xAK 0x06 0xSTの値 : 0: 圧縮中 1: 圧縮の正常終了 2: 圧縮失敗2-0801.zip圧縮を行います: Zip.exec(0x0801)
Zip.exec( zipFilename ) 0x03 0xLC(全体サイズ) 0x0801 0xGL(圧縮ファイル名長) 0xGN(圧縮ファイル名〜) 0x06 0xGLの値 : 圧縮ファイル名の長さ 0xGN〜 : 圧縮ファイル名(フルパス指定) 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x062-0802.zip圧縮するファイルを追加セットします: Zip.addFile(0x0802)
Zip.addFile( Filename ) 0x03 0xLC(全体サイズ) 0x0802 0xGL(ファイル名長) 0xGN(ファイル名〜) 0x06 0xGLの値 : 圧縮するファイル名の長さ 0xGN〜 : 圧縮するファイル名(フルパス指定) 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x062-0803.セットしたzip圧縮ファイル名をクリアします: Zip.clrFile(0x0803)
Zip.clrFile() 0x03 0x05 0x0803 0x06 受信 ACKとして0x000000が返ります 0x03 0x06 0x00 0x00 0x00 0x062-0900.tcpソケット接続を行います: Sock.connectOpen(0x0900)
Sock.connectOpen( Number, Address, Port [,TimeOut] ) 0x03 0xLC(全体サイズ) 0x0900 0xNN(番号) 0xPPPP(ポート番号) 0xTTTT(タイムアウト) 0xAL(アドレス名長) 0xAN(アドレス名〜) 0x06 Numberは、ソケット番号: 2つまでソケットを使うことができます。 Addressは、ホストアドレス Portは、ポート番号 TimeOutは、タイムアウト(s) 受信 0x03 0x06 0xRR 0x00 0xAK 0x06 戻り値 0xRR 0:接続できませんでした 1:接続できました2-0901.tcpソケット接続を待ちます(サーバ行います: Sock.listenOpen(0x0901)
Sock.listenOpen( Number, Port [,TimeOut] ) 0x03 0x0A 0x0901 0xNN(番号) 0xPPPP(ポート番号) 0xTTTT(タイムアウト) 0x06 Numberは、ソケット番号: 2つまでソケットを使うことができます。 Portは、ポート番号 TimeOutは、タイムアウト(s) 受信 0x03 0x06 0xRR 0x00 0xAK 0x06 戻り値 0xRR 0:接続待ちがタイムアウトしました 1:接続できました2-0902.tcpソケット接続をクローズします: Sock.close(0x0902)
Sock.close( Number ) 0x03 0x06 0x0902 0xNN(番号) 0x06 Numberは、ソケット番号: 2つまでソケットを使うことができます。 受信 0x03 0x06 0xRR 0x00 0xAK 0x06 戻り値 0xRR 0: closeできませんでした 1: closeできました2-0903.tcpソケットでデータを送信します: Sock.send(0x0903)
Sock.send( Number, Data, Length ) 0x03 0xLC(全体サイズ) 0x0903 0xNN(番号) 0xAL(データ長) 0xAN(データ〜) 0x06 Numberは、ソケット番号: 2つまでソケットを使うことができます。 Dataは、送信データです。 受信 0x03 0x06 0x00 0x00 0x00 0x062-0904.tcpソケットでデータを受信します: Sock.recv(0x0904)
Sock.recv( Number [,TimeOut] ) 0x03 0x08 0x0904 0xNN(番号) 0xTTTT(タイムアウト) 0x06 Numberは、ソケット番号: 2つまでソケットを使うことができます。 TimeOutは、タイムアウト(s) 受信 0x03 0xSS(全体サイズ) 0xRX(OK) 0xHS(データ長さ) 0xHM(データ〜) 0x06 0xRXの値 0x00: OK 0x01: タイムアウト 0x46: エラー(Marida2終了)2-0905.tcpソケット接続している機器のIPアドレスを返します: Sock.getAddress(0x0905)
Sock.getAddress( Number [,Local] ) 0x03 0x07 0x0905 0xNN(番号) 0xLC(Inet/Local) 0x06 Numberは、ソケット番号: 2つまでソケットを使うことができます。 Localは、省略または、0:接続先のIPアドレスを返します。が1の時には、自機のIPアドレスを返します 受信 0x03 0xSS(全体サイズ) 0xRX(OK) 0xHS(アドレス長さ) 0xHM (アドレス) 0x06 0xRXの値 0x00: OK 0x01: エラー 0x46: エラー(Marida2終了)スプライトについて
Marida2には仮想スプライト処理を実装しています。64個の任意サイズの画像を重ね合わせて表示することが可能です。ただし、Android側では、表示画像の定義、画像の表示、タッチ状態の取得のみが行えます。スプライト画像の表示位置や移動量計算などは接続機器側で処理する必要があります。2-0A00.スプライト番号と画像を定義します: Sprite.define(0x0A00)
Sprite.define( スプライト番号, ワークLeftTopX座標, ワークLeftTopY座標, ワークRightBottomX座標, ワークRightBottomY座標 ) 0x03 0x0E 0x0A00 0xNN(スプライト番号) 0xXXX0 0xYYY0 0xXXX1 0xYYY1 0x06 NNは、スプライト番号です。(0〜63) XXX0は、定義するワーク画面の左上X座標です。 YYY0は、定義するワーク画面の左上Y座標です。 XXX1は、定義するワーク画面の右下X座標です。 YYY1は、定義するワーク画面の右下Y座標です。 受信 0x03 0x06 0x00 0x00 0x00 0x062-0A01.move指定されたスプライトを表示します: Sprite.put(0x0A01)
Sprite.put() 0x03 0x01 0x0A01 0xSSSS 0xNN 0xMMMMMMMMMMMMMMMM(8バイトのmoveデータ)×move指定個数 0x06 MMMMMMMMMMMMMMMMは、moveで設定されたデータです。moveデータは一度に64個まで送ることができます。 1+1+2+2+1+64*8+1= 520バイト | 1バイト | 1バイト | 1バイト | 1バイト | 1バイト | 1バイト | 1バイト | 1バイト | |76543210 |765 |4321076543210 |765 |4321076543210 |76543210 |76543210 |76543210 | |番号(0〜99)|表示モード|X座標(-4096~+4095)|倍率符号|Y座標(-4096~+4095)|横倍率(0.125~31.5)|縦倍率(0.125~31.5)|回転角度(0~255が0~358.59375)| 表示モードは、スプライト画像の表示モードです。0:非表示, 1:表示(表示後、非表示となります), 2:保持(表示後、非表示になりません) 横倍率は、表示時の横倍率(0.125〜31.5)は、指数部 3bit、仮数部 5bitの浮動小数扱いです。 縦倍率は、表示時の縦倍率(0.125〜31.5)は、指数部 3bit、仮数部 5bitの浮動小数扱いです。 縦と横の倍率の符号は、倍率符号部に、縦倍率符号(1bit)縦倍率符号(1bit)をセットします。 回転角は、画像の回転角度です。(0〜359)ただし、360を256分割するので、精度は1.40625度です。 受信 0x03 0x06 0x00 0x00 0x00 0x062-0A02.スプライトの初期化を行います: Sprite.init(0x0A02)
Sprite.init() 0x03 0x06 0x0A02 0x06 受信 0x03 0x06 0x00 0x00 0x00 0x062-0A03.スプライトのタッチ状態を調べます: Sprite.touch(0x0A03)
Sprite.touch([Number,...]) 調べることができるのは、表示モードが2(保持)のスプライトのみです。 0x03 0xKK 0x0A03 0xNN 0xSS..(調べるスプライト番号分) 0x06 Numberは、スプライト番号です。(0〜63) 引数はいくつ書いてもOKです。省略時は64個全て調べます。 0xNNの値 調べるスプライトの個数です 0のときは、63〜0まで全て調べる 0xSSの値 0xNNが0のときは0xSSは省略 調べるスプライト番号です。 受信 0x03 0xKK 0xSS 0xHH ... 0x06 0xSSの値 0: タッチしていない 1〜: タッチしているスプライトの個数 0xHHの値 タッチしているスプライト番号