Javaでシリアル通信

Java Communications API というライブラリがあるがメンテされていない。が、その仕様に準じたRXTXというOSSがある。

http://www.rxtx.org/

配布先からダウンロードして解凍。

RXTXcomm.jar と、各種OS用のドライバをclasspathの通っているディレクトリに置く。

eclipseならプロジェクトごとにクラスフォルダを作ってそこに配置

ちゃんと調べてないけど、多分、JNIで実装されているっぽいので
WindowsならDLL、Linuxなら.soとOSごとに異なるライブラリが必要になのだと。

で、Javaでシリアル通信ができて何がうれしいかというと、ArduinoとJavaでお話ができちゃうのだ。送信のほうは簡単だけど、受信はイベント駆動なので少し手間っぽい。今の段階では送信さえできていればロボットの操作ができるのでOKとしよう。

追記
RXTXcomm.jarのプロパティから、「ネイティブライブラリのロケーション」でdllを置いたパスを指定する

babelを使ってeclipseを日本語化する

eclipse起動後
[Help]-[Install New Software…]からダイアログを開く

Name: Babel
Location: http://download.eclipse.org/technology/babel/update-site/galileo

babel Language Packs in Japanese を選択、から日本語ランゲージパックを取得してeclipseを再起動

OpenCV2.1のインストール

コンパイルが不要のOpenCV-2.1.0-win32-vs2008.exe をダウンロード

インストーラを起動してインストール

デフォルトで

c:\OpenCV2.1\

に展開される。

c:\OpenCV2.1\include\opencv インクルードファイル
c:\OpenCV2.1\lib ライブラリファイル

をVisualStudioのパスに設定。

ライブラリファイル名にバージョンナンバーの追加と
デバッグモード用のライブラリ(~d.lib)が用意されている。

2.0→2.1への移行はヘッダを変更する。

#include "cv.h"
#include "highgui.h"

#ifdef _DEBUG
  #pragma comment(lib,"cv210d.lib")
    #pragma comment(lib,"cxcore210d.lib")
    #pragma comment(lib,"cvaux210d.lib")
    #pragma comment(lib,"highgui210d.lib")
#else
  #pragma comment(lib,"cv210.lib")
    #pragma comment(lib,"cxcore210.lib")
    #pragma comment(lib,"cvaux210.lib")
    #pragma comment(lib,"highgui210.lib")
#endif