神谷と申します。
# こちらの ML には久しぶりにメールを書きます

現在、クロッサム2+USB を FreeBSD マシンに接続してエアコン、
コンポ等の制御にトライしているのですが、なかなかうまくいって
いません。もし既に上記のデバイスを利用して家電の制御をされて
いる方がいらっしゃれば、ぜひどのように使用されていらっしゃる
かご教授いただきたく、メールを送信させていただきました。

ちなみに FreeBSD 5.5R を使用しております。

[既にできたこと]
クロッサム2+USB の認識
 ・usbdevs で認識できていることを確認しました
クロッサム2+USB を手動で操作することによる対象機器の制御

[一部できたこと]
tip を利用したクロッサム2+USB の操作
 
・http://web.archive.org/web/20011218210738/http://www.halcorp.co.jp/hard/crossam/transe.htm
  を見て、そのとおりにコマンドを送信することで操作に成功
 ・ただし、コマンド送信ごとに10秒程度の待ち時間が必要
 ・/etc/remote には以下の行を追加
  crossam:dv=/dev/ucom0:br#9600:pa=none:hd:

[できないこと/やりたいこと]
Perl を利用したクロッサム2+USB の操作
 ・/dev/ucom0 に直接書き込む方法(1)や、Device::SerialPort を
  利用した方法(2)を試すも、うんともすんとも・・・

若干 ML 違いかもしれませんが、
 ・うちではこんな方法で動かしている
 ・プログラムのここがおかしい
等々ございましたら、なにとぞよろしくお願いいたします。

(1) のソース:
#!/usr/local/bin/perl

open(crossam, "> /dev/ucom0");

print crossam "/c\r\n";
sleep(10);
print crossam "/t5,40\r\n";
sleep(10);
print crossam "/c\r\n";

close(crossam);

(2) のソース:
#!/usr/local/bin/perl

use strict;
use Device::SerialPort qw (:STAT);

my $port_device = '/dev/ucom0';
my $sleep_time  = 10;

my $initcmd     = "/c\r\n"; # initialize command

my $port = Device::SerialPort->new($port_device)
                || die "Can't open $port_device: $^E\n";

# setup
$port->baudrate(9600);
$port->parity("none");
$port->databits(8);
$port->stopbits(1);
$port->handshake("none");
$port->write_settings || undef $port;

# execute a command
$port->write($initcmd);
sleep($sleep_time);
$port->write("/t5,40\r\n");
sleep($sleep_time);
$port->write($initcmd);

$port->close || die "failed to close";
undef $port;


-- 
Yuki Kamiya <[EMAIL PROTECTED]>

メールによる返信