プチコン3号 3DS同士の近距離データ交換
一つ前のエントリーで書いた、3DS同士の近距離データ交換について。
前にも書いたように、ワイアレス通信を使うことで行けるはず。
命令表から考えた妄想のソースコードは以下のとおり。
なお、これはプログラムのテキスト用で、データに関してもこの応用で行けるはず。
・送信用のコード(命令一覧から考えた妄想コード)
MPSTART 1,"SENDFILE" PRINT "READY TO ANY BUTTON" WHILE BUTTON()==0: WEND DIM SLOT%, CURLINE%, PSIZE%, MSG$, OK% OK% = 1 'MPSTATUSが返す値のうち、通信READY状態の値を定義しておく SLOT% = 1 CURLINE% = 1 PSIZE% = PRGSIZE(SLOT%) PRGEDIT SLOT%, CURLINE% REPEAT PRGLINE = CURLINE% MSG$ = PRGGET$() WHILE MPSTATUS() <> OK%: WEND MPSEND MSG$ INC CURLINE%, 1 UNTIL PSIZE% < CURLINE% MPEND
発売前の11月1日現在の妄想で書いたコードだけど、mkIIに比べるとかなりモダンなコードになった。
なお、通信開始についてのタイミング等については上記では考慮していないので、発売後に調整することになると思う。
続いて受信側コード。
・受信用のコード(命令一覧から考えた妄想コード)
PRINT "READY TO ANY BUTTON" WHILE BUTTON()==0: WEND DIM SLOT%, CURLINE%, PSIZE%, MSG$, COMEND%, COMHOSTID% COMEND% = -1 'MPSTATUSが返す値のうち、セッション終了の値を定義しておく COMHOSTID% = 1 '通信ホストの端末ID SLOT% = 1 CURLINE% = 1 PSIZE% = PRGSIZE(SLOT%) PRGEDIT SLOT%, CURLINE% REPEAT MPRECV OUT COMHOSTID%, MSG$ IF MSG$ <> "" THEN PRGSET CURLINE%, MSG$ INC CURLINE%, 1 END IF UNTIL MPSTATUS(COMHOSTID%) == COMEND% OR BUTTON() == 1024
受信側はどうやってセッションに参加するのかが命令一覧からだと読み取れないのでかなり当てずっぽう。
受信側はセッションの開始・終了は宣言しないと仮定した。
おおむね、こんな感じで行けると思う。
(2014.11.05 MPRECVの書き方を修正)