線スペクトル偏光分光装置 CCD開発・製作報告
SUN WSシリアルポートからの機器制御
Nov. 15, 2000.
2000.11.15
概要
SUN WS(Ultra 1; solaris2.6)のシリアルポートから機器を制御するために、
対話式の簡単な通信プログラムを製作した。
CCDカメラ温度コントローラー(Lakeshore model 330)の状態変更、状態読み込み
に成功した。
いずれ、波長板回転機構もシリアルポートから制御することになるが、
今回の結果を応用して実現できそうである。
仕様とプログラム
シリアルポートは、/dev/ttyb (COM2)を使用。温度コントローラー制御に
要求される設定は、以下のとおり。
- Baud rate :1200 bps
- start bit : 1
- data : 7bits
- parity : 1bit (odd)
- stop bit : 1
- Terminator : CR+NL
- 半二重(half-duplex)、非同期(asynchronous)通信
通信形態は、以下を採用した。
- ブロッキング端末I/O(open時に、オプションO_NDELAYは設定せず)
- 非カノニカル通信(タイムアウト VMIN=0 (0文字)、VTIME=2 (0.2 sec) )
- post process output
- 出力で、NLをCR+NLにマッピング
以下のプログラムを組み、実行。
トラブルと対策
- 一般ユーザーが/dev/ttybに書き込むためには、デバイスファイル
/devices/sbus@1f,0/zs@f,1100000:b
のパーミッションを-rw-rw-rwに変更しなければならないが、
しょっちゅう勝手にパーミッションが-rw-rw---になってしまい、
その度にスーパーユーザー権限でパーミッションを設定し直す
必要があった。
admintoolのSerial Portの項目で、ttybをInitialize Only -
No Connectionに設定したら、起こらなくなった?
(もう少し様子をみる必要があるが。)ポートモニタ関連の現象か。
- 温度コントローラーに状態を読む命令を送ると、返信があるまで
若干時間がかかる様子。コマンド送信後、シリアルポートを読むまでに
1秒のsleepを入れるくらいが丁度よさそう。
参考資料
秋田谷 洋
(akitaya@astr.tohoku.ac.jp)