MacでGainerMiniを使う

来期の科目準備のためにGainerを購入したので、Macで使ってみた。

参考元はこちら

http://www.gainer-mini.jp/

http://gainer.cc/

ダウンロード

以下のサイトからProcessing本体をダウンロード。現時点では、processing-1.5-macosx.zipが得られる。

http://processing.org/

以下のサイトから、ソフトウェア・ライブラリ(Processing)をダウンロード。現時点ではProce55ingLib_forGAINERmini_v001.zipが得られる。

http://www.gainer-mini.jp/?page_id=7

インストール

Processing本体を展開してできたProcessingアプリケーションをアプリケーションフォルダにコピーする。ここで、一度Processingアプリケーションを起動し、終了する。

ソフトウェアライブラリを展開し、そのフォルダ内容を書類フォルダ内のProcessingフォルダにコピーする。

接続

GainerとMacとをUSBケーブル(A-mini-B)で接続する。すぐにダイアログウィンドウが現れ、ネットワーク設定が必要な旨のメッセージが表示されるので、ネットワーク設定のボタンをクリックする。

Gainer上で赤色のONランプが点灯する。

Macの設定

ネットワークのダイアログでは、そのまま右下の「適用」ボタンをクリックする。Gainerの欄は「構成されていません」のままで良い。ダイアログを閉じる。

起動

Processingアプリケーションを起動する。

サンプル

File-Sketchbook-examples-Gainermini-buttonを選ぶ。Runを選ぶとスケッチがコンパイルされ実行される。青い画面が表示され、Gainer下部のスイッチを押すと赤く変化する。

注意点

たまにGainerへの接続が失敗することがある。

GainerMiniでは内部プルダウン抵抗がないため、外部でデジタル入力する場合にはプルダウン抵抗が必要。(プルダウン抵抗をつけないとOn/Offがゆっくり変化するように見える)

MacでArduino Unoを使う(1)

来期の科目準備のためにArduino Unoを購入したので、Macで使ってみた。

元ネタは以下から。

http://arduino.cc/en/Guide/MacOSX

ダウンロード

以下のサイトよりMac OS X版をダウンロードする。現時点では、arduino-0022.dmgが得られる。

http://arduino.cc/en/Main/Software

インストール

dmgファイルを開き、ArduinoアプリケーションをApplicationsにコピーする。

Unoを利用する場合には、FTDIUSBSerialDriverは不要なので何もしない。

接続

UnoとMacとをUSBケーブル(A-B)で接続する。すぐにダイアログウィンドウが現れ、ネットワーク設定が必要な旨のメッセージが表示されるので、ネットワーク設定のボタンをクリックする。

Uno上で緑色のONランプが点灯する。購入した状態でもオレンジ色のLランプが点滅している。

Macの設定

ネットワークのダイアログでは、そのまま右下の「適用」ボタンをクリックする。Arduino Unoの欄は「構成されていません」のままで良い。ダイアログを閉じる。

起動

Arduinoアプリケーションを起動する。

Arduinoアプリケーションの設定

メニューからTools-Boardを開き、Arduino Unoを選ぶ。

同様に、Tools-Serial Portを開き、/dev/tty.usbmodem3a21(下4桁は異なる可能性あり)を選ぶ。

サンプル1

File-Examples-1.Basics-BareMinimumを選ぶ。これは何もしないスケッチ(プログラム)である。

File-Upload to I/O Boardを選ぶと、スケッチが転送されUno上で実行される。オレンジ色のLランプが消え、緑色のONランプだけが点灯する。

サンプル2

File-Examples-1.Basics-Blinkを選ぶ。

File-Upload to I/O Boardを選ぶと、スケッチが転送されUno上で実行される。オレンジ色のLランプが点滅する。

Pharo 1.2.1 (Windows)での日本語入力

どうやら次期バージョンも間近のようだけど、手に入れたイメージでは、やはり日本語入力できなかった。

入力関係の処理がParagraphEditorからTextEditorに移ったせいで、1.1.1での対処も役には立たない。

とりあえず以下のように修正すれば日本語入力可能となる。

(TextEditor>>dispatchOn:へのコード修正箇所だけ)

- asciiValue := aKeyboardEvent keyValue.
+ char := aKeyboardEvent keyCharacter.
+ asciiValue := char charCode.

(メソッド後半にcharへの代入があるので、それも削除する。残しておいても問題ない。)

Pharo MLへ参加してないのでどうなっているのかさっぱりだが、イメージが出るたびに混乱させられそうな予感。

一応、1.2.1へのパッチをファイルとして公開しておく。もちろん無保証。

http://itolab.com/software/squeak/TextEditor-dispatchOn.st

Pharo 1.1.1 (Windows)での日本語入力(その3)

SqueakではInputInterpreterやLanguageEnvironmentが間に入って言語やホスト環境の差異を吸収しているのね。って既に知ってたわけだけど。

Pharoはそのあたりがメソッドの中に直に書かれていて、しかもParagraphEditor>>dispatchOnKeyEvent:with:でごにょごにょ気持ち悪いこととやっていて、これも問題だ。

特に、charとkeyCharの両者が文字を保持しており、charはRAWイベントの文字を使うくせに、keyCharはscanCodeから再度文字を生成しているのが問題。

Squeak4.2のTextEditor>>dispatchOnCharacter:with:を参考にしながら、charとkeyCharを同じ文字と見なして、keyValueをその文字コードにするというコードを加えたら問題なく入力できた。

(ParagraphEditor>>dispatchOnKeyEvent:with:へのコード追加部分)

char := keyEvent keyCharacter.
+  keyChar := char.
+ keyValue := char charCode.

しばらくこのまま使ってみて、問題があったらまた考え直そう。

(追記)

Pharo 1.2.1の情報はこちら。

https://d.hatena.ne.jp/nqthm/20110403

Pharo 1.1.1 (Windows)での日本語入力(その2)

Pharoでの日本語入力で入力されない文字があるのは、VMからわたされるキーイベント情報(と、多分その処理方法)に問題があるからのようだ。

具体的に言うと、漢字やひらがなが入力された時のイベント情報内のscanCodeが、Ctrl-H等の制御コードと同じものになっており、間違ってそちらが処理されてしまうため、正しく文字入力されない。この現象はPharo 1.0から引き続いている、というよりPharoの開発チームはこんな現象にあわないだろうから、関心も持っていないんだろう。きっと。

その点、Mac(SnowLeopard)では日本語入力時のscanCodeは必ず0になるようなので問題にならない。

手っ取り早く解決するなら、charCodeが256以上の時はscanCodeを0にしちゃうということだろうけど、この辺はSqueakの方法を見ながら解決していこう。

Pharo 1.1.1 (Windows)での日本語入力

よく考えてみたらゼミ生のほとんどはWindowsを利用しているはずなので、Windows上でも表示・入力のテストをしてみた。

すると、http://17get.blogspot.com/2010/11/pharo.html で言及されているように、特定の文字入力ができない。

具体的には「使」とか「!」とか「栄」とか。

上記の文字列をコピーしておいてpasteすると問題なく表示されるので、入力の段階で問題があるようだ。

授業開始まで時間が限られてきたのにまた宿題が増えてしまった。

Pharo 1.1.1 (SnowLeopard)での日本語表示

SnowLeopard上でのPharoの日本語化に手こずったので、その記録。

ちなみに、Pharo 1.1では、World menu-System-SettingsでSettings browserを開き、AppearanceでStandard fontからフォント指定する。フォント一覧に、システムにインストールされたフォントが表示されるのでそこから適当に日本語フォントを選べば表示できる。

Pharo 1.1.1では同様の方法を試してもBitmap DejaVuとAccunyフォントしか表示されない。これはFT2Pluginが組み込まれないことによる。

Pharo 1.1.1の「パッケージの中身を表示」し、Contents/Resourcesフォルダを確認すると、Pharo1.1にはある「FT2Plugin.bundle」がないことがわかる。そこで、Pharo1.1のFT2Plugin.bundle(実際はフォルダ)をPharo1.1.1の同じ場所にコピーすれば、Pharo1.1.1でも日本語表示できるようになる。

(元ネタは、 http://forum.world.st/Fixed-Width-Font-for-COG-td3348188.html のHenrik Sperre Johansenのコメントより)

Squeak4.2でのkeyDown:(続き)

keyDown:でkeyValueが0になる件。時間もないのでクイックハックで解決。

MacUnicodeInputInterpreter >> nextCharFrom: sensor firstEvt: evtBuf
| keyValue mark |
keyValue := evtBuf at: 6.
+   keyValue = 0 ifTrue: [keyValue := evtBuf third].
mark := self japaneseSpecialMark: keyValue.
(以下省略)

適当すぎる。

(2011.3.23追記)

梅澤さんがSqueak4.2用のパッチを作って下さっており、それを適用すればこの問題も解決する。