「Arduino買ったのでRubyとDinoでLチカした」を試してみた。
Arduino買ったのでRubyとDinoでLチカしたを見て久しぶりにArduinoを触ってみた。
インストール等は簡単にできたんだけど、肝心のRubyのプログラムが動かない・・・
Windows8のせいでArduinoに書き込みが上手くいってないのかと思ったけど、サンプルのBlinkは動くのでOSのせいでは無さそうだ。
ためしに、シリアルコンソールから以下のようにLEDを光らせる命令を送ってみる。
0113 1.
この場合は、LEDがちゃんと光った。と言うことはArduinoにDinoのプログラムは書き込めている事がわかる。
ということは、問題はRubyのプログラム側にありそうだ。
次に、シリアルのプログラムを書いてみる。*1
require 'serialport' s = SerialPort.new("COM4", 115200) s.write("0113 1.")
あれ?ちゃんと付くぞ。
どうやら、Dinoのサンプルがおかしいようだ。
blink.rbをみてみると以下の様な記述がある。
board = Dino::Board.new(Dino::TxRx.new)
Arduinoを操作する基本クラスBoardに通信用のオブジェクトTxRxを渡してるんだけど、TxRxが怪しい。
中をみてみるとSerialPortクラスのオブジェクトを作ってるみたいだけど、どうもここのようだ。
実際にはDino::TxRxからDino::TxRx::USBSerialが作られているのでそのソースをみてみると使用するデバイスをあとから指定できる様子。
なので上記のコードを以下のように書き換えてみる。
txrx = Dino::TxRx.new txrx.io = "COM4" board = Dino::Board.new(txrx)
これで、無事blink.rbが動きました。
あとから分かったことだけど、DinoはCOM1〜COM4をループで回して(Windows版のRubyの場合)最初に引っかかったデバイスを使用しているようだ。
自分のマシンはデバイスマネージャでは見えなかったが実はCOM3が存在していて、そちらを使ってシリアル通信をしていたので動かなかったみたいです。
ちゃんとソース読めってことなんだろうね。
*1:この間にLEDをオフにしたりする作業があるけど端折ってます
.Net Framework 3.5 SP1をインストーラに含める場合のエラーの対処法
.Net Framework 3.5 SP1(以下.Net3.5SP1)をセットアッププロジェクトのプロパティで必須コンポーネントとして「アプリケーションと同じ場所から必須コンポーネントをダウンロードする」設定するとコンパイル時にエラーが出ます。
警告: 項目 'Windows インストーラ 3.1' は '.NET Framework 3.5 SP1' で必要ですが、含まれていませんでした。
エラー: 必須コンポーネントのインストール場所が、'コンポーネントの開発元の Web サイト' に設定されていません。項目 '.NET Framework 3.5 SP1' のファイル 'DotNetFX35SP1\dotNetFX20\aspnet.msp' がディスクに見つかりません。詳細については、ヘルプを参照してください。
これはVisualStudio 2008 SP1の.Net3.5SP1 のブートストラッパー パッケージが、ウェブサイトを通してのみ利用できるという仕様のためらしいです。
この問題は http://download.microsoft.com/download/1/b/e/1be78474-c7f8-427a-8c6c-330e1c5db7d5/VS2008SP1Readme.htm にある内容に従って.NET3.5 用の Samesite オプションを有効にすることで回避できます。
ちょっと手間はかかりますが、インストーライメージを作るときにわざわざネットから取ってこなくて良くなるので便利です。
(客先でネットが使えないとかよくあるし…)
OSインストール
今回はインストールするOSも指示されているのでそれを入れようと思います。
インストールするOSはWindows Web Server 2008です。
実はこのモニターに応募するまでこのOSの存在知りませんでした(^^;
簡単に言うとWebサーバーに特化した製品です。詳しくは@ITの記事でも見てください。
Windows Web Server 2008の概要 - @IT
上記記事の説明から行くと、Webサーバー以外の用途には向かなそうなのでうちの構成としてはフロントエンドをWindows Web Server 2008にして、バックエンドはLinuxサーバーになりそうです。
ちょうど、ASP.NET+Silverlightなんかもさわってみたかったのでちょうどいいかな。
ただ、現在公開しているサービスは外部のサービスに委託しないといけないかもね…
で、インストールについてですが、インストールはとても簡単。
DVDを入れて起動してインストールの構成を選んで後は待つだけ。
インストールオプションはServer Core インストールとフルインストールの2種類があります。
今回は後々悩みたくなかったのでフルインストールを選択しました。
詳しい方はServer Coreインストールを選択し、必要なもののみインストールしていく方がセキュリティ的にはいいかと思います。
インストール後、パスワードの設定をして完了です。
パスワードはいつものように適当に入れると怒られるので注意です(笑)
シヴィライゼーション レボリューションDS
友人がおもしろいと言ってたので購入しようかなと。





