というわけで、さらにFreeBASICを少しいじる。
SerialPort関係の通信が、ほんとに簡単にできちゃう
のかとか、グラフィック表示はどんななのか。
まぁ、WindowsみたいなUIのGUIは無理だろうけど、
ちょっと簡単なグラフィック表示するだけなら
何とでもできるだろうと。
(実は、WindowsのUIはともかく、イベントドリブン
な、いわゆるWindows的なコーディングスタイルは
可能らしい。へぇ)
まず、serial関係をやってみる。生きてるポートを
探して、その後で固定ポート名でなにやら文字を
出力するという感じで。
(ブログの仕様上、インデント消えちゃうけどご容赦)
dim i as integer
dim ret as integer
' *** for windows,dos ***
for i=1 to 15
ret = open com ("com" + str(i) + ":9600" as 1)
if ret = 0 then
print "o " + str(i) + " port is alive."
close 1
else
print "x " + str(i) + " port is closed."
end if
next i
' *** for linux (usb serial port) ***
for i=0 to 10
ret = open com ("/dev/ttyUSB" + str(i) + ":9600" as 1)
if ret = 0 then
print "o ttyUSB" + str(i) + " is alive."
close 1
else
print "x ttyUSB" + str(i) + " is closed."
end if
next i
' *** for windows,dos ***
open com "com1:9600,n,8,1" as 1
print #1, "string output via serial port." + chr(13, 10)
print #1, "9600bps bit-length=8 parity=non stop-bit=1" + chr(13,10)
close #1
' *** for linux (usb serial port) ***
open com "/dev/ttyUSB0:9600,n,8,1,cs0,ds0,cd0" as 1
print #1, "string output via serial port." + chr(13, 10)
print #1, "9600bps bit-length=8 parity=non stop-bit=1" + chr(13,10)
close #1
DOS/Windowsみたいな「com1」とかっていう番号で探す
のと、Linuxみたいに「/dev/ttyナントカ」って探すの
両方やってみて、結果はretって変数で読み出す。
んで、Ubuntu使ってたんで、/dev/usbTTY0に文字列
出力してみて、なんか出てきたことを確認。
(自動的にcomナントカには割り振られないんだなぁ)
次、グラフィック関係。適当にLine文で色の線を
描いたり、その上でprint文で文字書いたらどう
なるか、みたいな実験。
dim as integer x1, y1, x2, y2, c ,i
dim s as string
screenres 640, 480, 8
randomize
cls
for i=0 to 1000
x1 = (rnd * 640)
y1 = (rnd * 480)
x2 = (rnd * 640)
y2 = (rnd * 480)
c = (rnd * 16)
line (x1, y1) - (x2, y2), c
next i
color 15
locate 10, 10
input "input any word : ", s
print "input text is .. " + s
print "push any key!!!"
sleep
結果から言うと、
こんな風に表示できた。描画も結構速い。
文字は、グラフィック表示のルーチンを使うと、自動で
コンパイラが出力先を標準出力からグラフィック画面に
切り替えるみたい。
(グラフィックと標準出力を合わせたい場合は、
標準出力用の命令使わないといけないみたい)
場所はlocateで指定できるし、改行も勝手にするし、
input文もこのとおり使える。ただ、文字の裏にあった
グラフィックが消える。イメージ的にはFM-7みたいだな。
妙に懐かしい。
ちなみに、グラフィック関係の処理を動かそうとすると、
ncursesだけだとエラーになっちゃうので、以下のライブラリ
もインストールする必要があるみたい。日本語マニュアルの
サイトにも書いてある。
http://www.excite-webtl.jp/world/english/web/?wb_url=http%3A%2F%2Fwww.freebasic.net%2Fwiki%2Fwikka.php%3Fwakka%3DCompilerInstalling%26wb_dis%3D3&wb_lp=ENJA&reload=1
・libxrandr-dev
・libx11-dev
・libxext-dev
・libxpm-dev
・libxrandr-dev
・libxrender-dev
あと、もしかしたら
・libffi-dev
・libgl1
もかな?オイラは今のところまだ入れてない。
それにしても、やっぱBASICはなじむな。頭に
思いついたコードをバシバシ書いて、コンパイル
してみると、大体通る。わかんないところとか
方言だけ調べれば、後はどうとでも。
ちょっとしたツールにはもってこいなんだけど、
やっぱ、gui関係の画面作るのメンドイよな、って
思ってたら、
FreeBasicでglade/Gtkを使うっていう変換ソフト
とかそろってるみたい。
www.siebke.com/freebasic/howto_glade_freebasic.pdf
glade使って画面をVSみたいにサクサク描いて、
出力した画面定義のxmlを、「galde2bas」って
ソフトを使ってFreeBASICのコードに変換して
くれるらしい。
こいつをコンパイルのときに読み込ませてやればいい
みたい。
うーーーーん。なんか、一気に環境がそろっちゃった感
があるなぁ。
まともに動くなら、あれこれFreeBASICで動かしてみたい
気もする。
でもまぁ、でっかい開発とかはあまり推奨してない
みたいだし、OSとかを自分で作っちゃうのも推奨
してないみたいだもんな。ツール用だな。
http://www.highriskrevolution.com/gamelife/index.php?e=393
Ysの開発の歴史の一幕。へぇ。
でも、オイラ的には1と2はちゃんとつながってたと
思うし、それより、Originの設定とかストーリーとか、
すごくよかったよな。アドルの時代までの話の設定
にちゃんとつながってて。
https://twitter.com/HayakawaYukio/status/587136828605534209
お。こう見ると、西ノ島がどのくらいの大きさなのか
がよくわかるなぁ。米塚と同じくらいのスコリア丘
なのか。その昔、米塚の噴火もあんな感じだったん
だろうか。
http://akizukidenshi.com/catalog/g/gP-09190/
秋月で、表面実装用のDIP8ピンソケットっていう、
なんだかよくわからないものが。
これがあれば、表面実装基板のアンプ回路で、
オペアンプをとっかえひっかえできちゃうって
魂胆なのかな?
|