ユーザ用ツール

サイト用ツール


dsair2_basic

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
dsair2_basic [2019/02/14 17:18]
yaasan [DSair BASIC (DSbasic)]
dsair2_basic [2019/04/03 22:40] (現在)
yaasan [DSair2 Unique Functions]
ライン 1: ライン 1:
 ====== DSair BASIC (DSbasic) ====== ====== DSair BASIC (DSbasic) ======
  
-[[DSair2_ukeng]]+Keywords: BASIC, Programming,​ プログラミング,​ 教育, Education, Maker, DIY, interpreter,​ 
 + 
 +[[DSair2_ukeng]] ​([[DSair2|JPN]])
  
 DSbasic is a very easy programming solution on your smartphone! This function works in DSair2'​s webapp on your browser.\\ ​ DSbasic is a very easy programming solution on your smartphone! This function works in DSair2'​s webapp on your browser.\\ ​
-DSbasicは、スマートフォン(Android,​iOS)上で動作する、鉄道模型制御向けに最適化されたBASIC開発環境です。命令を打ち込んで実行するだけで、お好きな自動運転や、運転支援機能を実現できます。+DSbasicは、スマートフォン(Android,​iOS)上で動作する、鉄道模型制御向けに最適化されたBASIC開発環境です。命令を打ち込んで実行するだけで、お好きな自動運転や、運転支援機能を実現できます。BASICファイルは、SDカードに置けば、ファイル一覧からロードできます。修正したプログラムは、スマホのメモリに保存できます。
  
-{{http://​buin2gou.sakura.ne.jp/​sblo_files/​powerele/​image/​flashair_28Pixel20229-thumbnail2.png}}\\  +{{http://​buin2gou.sakura.ne.jp/​sblo_files/​powerele/​image/​DSbasic_21-thumbnail2.png}}\\  
-[[http://​buin2gou.sakura.ne.jp/​sblo_files/​powerele/​image/​flashair_28Pixel20229.png|Large Image]]+[[http://​buin2gou.sakura.ne.jp/​sblo_files/​powerele/​image/​DSbasic_21.png|Large Image]]
  
  
ライン 20: ライン 22:
   * Support Locomotive and Turnouts control via BASIC language   * Support Locomotive and Turnouts control via BASIC language
   * MP3 Play suported in MP3 files of FlashAir SD card.   * MP3 Play suported in MP3 files of FlashAir SD card.
-===== Function =====+===== BASIC Function ===== 
 + 
 +==== DSair2 Unique Functions ​====
  
 LocAddr is Locomotive address. Default protocol is DCC. If you want to control Marklin'​s,​ configure protocol on web app. LocAddr is Locomotive address. Default protocol is DCC. If you want to control Marklin'​s,​ configure protocol on web app.
ライン 30: ライン 34:
 |ACC| AccAddr, Direction| diverse=0, straight=1 | |ACC| AccAddr, Direction| diverse=0, straight=1 |
 |DIR| LocAddr, Direction| FWD=1, REV=2 | |DIR| LocAddr, Direction| FWD=1, REV=2 |
-|FNC| LocAddr, FuncNo, FuncON/OFF| FuncNo=0-28 | +|FNC| LocAddr, FuncNo, FuncON/OFF| FuncNo=0-28, FuncON/​OFF=0(OFF) or 1(ON) 
-|FNX| LocAddr, FuncNo| FuncNo=0-28 |+|FNX| LocAddr, FuncNo| FuncNo=0-28,​ファンクションのOFF->​ON->​ON操作をします。 ​|
 |MP3PLAY| FileName with Path | MP3PLAY "​Horn.mp3" ​ | |MP3PLAY| FileName with Path | MP3PLAY "​Horn.mp3" ​ |
 |MP3STOP| - | MP3STOP | |MP3STOP| - | MP3STOP |
-|GETACC| AccAddr(1-2044) | | +|GETACC| AccAddr(1-2044) |指定アドレスのポイント状態(0=div,​ or 1=str)を返します。 | 
-|S88START| - | | +|GETACCW| AccAddr(1-2044) |指定アドレス以降16個分のポイント状態(0=div,​ or 1=str)を返します。 | 
-|S88GET| S88Sensor address(1-16) | Supported ​1 S88 decoder ​+|getslotaddr| SlotNo(0-3) | 4つのユーザー指定アドレススロットからアドレスを取得します。 | 
-|DCPWM| PWMDuty(0-1203) | |+|getslotspd| SlotNo(0-3) | 4つのユーザー指定アドレススロットから速度を取得します。 | 
 +|getslotfnc| SlotNo(0-3),​ FuncNo(0-28) | 4つのユーザー指定アドレススロットからファンクション状態(0=OFF,​1=ON)を返します。 | 
 +|getslotfncw| SlotNo(0-3) | 4つのユーザー指定アドレススロットからファンクション状態を29bit分返します。 ​
 +|S88START| - | S88機能を有効にします。S88の関数を使う場合は必ずBASICプログラムの最初に記述して下さい。括弧はつけないでください。 ​
 +|S88GET,GETS88| S88Sensor address(1-16) | S88センサーの値(0=OFF,​1=ON)を返します。 | 
 +|GETS88W| S88Sensor address(1-16) | S88センサーの値を16bit分返します。 ​
 +|DCPWM| PWMDuty(0-1023) | 
 +|DCDIR| Direction| FWD=1, REV=2 |
  
 The parameters of function mean as the followings.\\ ​ The parameters of function mean as the followings.\\ ​
ライン 50: ライン 61:
 BASIC functions are described in [[https://​github.com/​google/​wwwbasic|wwwbasic]] user manual. BASIC functions are described in [[https://​github.com/​google/​wwwbasic|wwwbasic]] user manual.
  
-==== BASIC functions ====+==== Main functions ====
  
-FOR,NEXT,IF,GOTO,END IF,ELSE,WHILE,WEND, +  * FOR 
-PRINT,​COLOR,​LOCATE,​LINE,​PAINT +  * NEXT 
-RND,​INT,​SLEEP+  * IF 
 +  * GOTO 
 +  * END IF 
 +  * ELSE 
 +  * WHILE 
 +  * WEND 
 +  * CALL 
 +  ​* ​
  
 +==== Drawing functions ====
 +
 +  * PRINT
 +  * COLOR
 +  * LOCATE
 +  * LINE
 +  * PAINT
 +  * CIRCLE
 +  * PUT
 +  * SCREEN
 +  * CLS
 +  * WIDTH
 +  * PALETTE
 +  * 
 +
 +==== Math functions ====
 +
 +asc, sqr, int, cint
 +abs, cos, sin, tan
 +atn, exp, log, rnd, atan2
 +
 +==== Text functions ====
 +
 +  * val 文字を数値に変換
 +  * str$  数値を文字列に変換
 +  * ltrim$ 左側文字列を抜き出す
 +  * rtrim$ 右側文字列を抜き出す
 +  * left$
 +  * right$
 +  * mid$
 +  * string$
 +  * space$ スペースを抜き出す
 +  * tab
 +  * ucase$ 英字を大文字にする
 +  * lcase$ 英字を小文字にする
 +  * mid$
 +  * 
 +
 +
 +
 +==== Key Input functions ====
 +
 +  * inkey$
 +  * input
 +
 +==== Mouse Input functions ====
 +
 +  * getmouse
 +  * 
 +
 +==== Etc functions ====
 +
 +  * timer
 +  * SLEEP
 +  * swap
 +  * 
 ===== Examples ===== ===== Examples =====
  
ライン 147: ライン 221:
 ==== S88 decoder example ==== ==== S88 decoder example ====
  
-S88デコーダのセンサデータを取得するサンプルです。+S88デコーダのセンサデータを取得し、Roco BR621(Addr.3)の往復運転を行うサンプルです。 
 + 
 +Detail: [[http://​powerele.sblo.jp/​article/​185548716.html|DSair2で自動運転をしてみる]]
  
 <​code>​ <​code>​
 +screen(7)
 s88start s88start
-testb = getacc(1) + 
-test = s88get(1) +pwr 
-print s88get(2) +print "START S88 Control"​ 
-print s88get(3) + 
-print s88get(4) +dir 3,1 
-print s88get(5+fnc 3,0,1 
-print s88get(6) +fnc 3,1,1 
-print s88get(7+fnx 3,2 
-print s88get(8+spd 3,200 
-print s88get(9+ 
-print s88get(10+while s88get(1)=0  
-print s88get(11+print "​RUN!"​ 
-print s88get(12+sleep 1000 
-print s88get(13+wend 
-print s88get(14+ 
-print s88get(15+print "S88 Adr.1 Detected"​ 
-print s88get(16)+spd 3,0 
 +sleep 2000 
 + 
 +print "​REV"​ 
 +dir 3,2 
 +spd 3,200 
 +sleep 12000 
 +spd 3,0 
 + 
 +fnc 3,0,0 
 +fnc 3,1,0 
 + 
 +print "​end."​ 
 +end 
 +</​code>​ 
 + 
 + 
 +==== Speed based Announce example ==== 
 + 
 +This automatic announce program is triggered by slot 1 speed. 
 + 
 +[[http://​powerele.sblo.jp/​article/​185561119.html|DSbasicで運転支援機能]] 
 + 
 +{{http://​buin2gou.sakura.ne.jp/​sblo_files/​powerele/​image/​DSbasic_21-thumbnail2.png}} 
 + 
 +<​code>​ 
 +screen(7) 
 + 
 +print "​Announce supporter"​ 
 +print "​Addr:";​getslotaddr(0
 +print "​Speed:";​getslotspd(0
 + 
 +state=0 
 +currentspd = getslotspd(0
 + 
 +while 1  
 + 
 +sleep(1000
 +if currentspd<>​getslotspd(0then 
 +print "​Current Speed is ";​getslotspd(0
 +currentspd = getslotspd(0
 +end if 
 + 
 +if state=0 then 
 +if getslotspd(0)>512 then 
 +state = 1 
 +print "Next Station"​ 
 +mp3play "​NextStationAnnounce.mp3"​ 
 +end if 
 +end if 
 + 
 +if state=1 then 
 +if getslotspd(0)<100 then 
 +state = 0 
 +print "Stop at Station"​ 
 +mp3play "​StopStationAnnounce.mp3"​ 
 +end if 
 +end if 
 +wend
 end end
 </​code>​ </​code>​
 ===== Hints ===== ===== Hints =====
  
-==== 文字を大きくする ====+==== Font size / 文字を大きくする ====
  
 screen(7)コマンドを最初に宣言すると、文字が大きくなります(おおよそ二倍) screen(7)コマンドを最初に宣言すると、文字が大きくなります(おおよそ二倍)
ライン 180: ライン 315:
 </​code>​ </​code>​
  
 +==== Comment / コメント ====
 +
 +If you want to use comment, type like the following.
 +
 +<​code>​
 +'​Comment example
 +'​コメントです
 +</​code>​
 ==== 関数・サブルーチンを宣言する ==== ==== 関数・サブルーチンを宣言する ====
  
ライン 224: ライン 367:
 NEXT i NEXT i
 </​code>​ </​code>​
 +
 +
 +
 +===== 活用例 =====
 +
 +皆様のDSbasicの活用例、サンプル、解説などお待ちしております。
 +
 +  * [[http://​powerele.sblo.jp/​article/​185725380.html|DSbasicでポイントを使った自動運転をしてみた]] (DesktopStation公式ブログ)
 +  * [[http://​powerele.sblo.jp/​article/​185561119.html|DSbasicで運転支援機能]] ​ (DesktopStation公式ブログ)
 +  * [[http://​powerele.sblo.jp/​article/​185548716.html|DSair2で自動運転をしてみる]] ​  ​(DesktopStation公式ブログ)
 +  * [[https://​desktopstation.net/​bb/​showthread.php?​tid=126|DSbasic (DSair用BASIC) 相談室]] デジタル鉄道模型フォーラム
  
  
dsair2_basic.1550132337.txt.gz · 最終更新: 2019/02/14 17:18 by yaasan