Perl スクリプトを使用して通信しようとしているBotBoarduino (いくつかのエクストラを備えた Duemilanove) があります。Arduino IDE からシリアル モニタを開くと、問題なくデータを送受信できます。これに続いて、私の Perl スクリプトは問題なく通信できます。ただし、Arduino が切断されて PC に再接続された場合、シリアル モニターが再度開かれるまで、Arduino は Perl スクリプトから送信されたコマンドをリッスンしていないようです。
また、PuTTY を使用して Arduino と通信しようとしましたが、これは Arduino IDE のシリアル モニターと同じように機能します。接続が一度開かれるまで、Arduino は Perl スクリプトをリッスンしません。
Perl を使用して Arduino と通信する方法のサンプルを次に示します。
#!perl -w
use Win32::SerialPort;
my $PortName = "COM4";
my $sendData = "c";
### SERIAL PORT SETUP ###
my $PortObj = new Win32::SerialPort($PortName) or die "Can't open $PortName: $^E\n";
$PortObj->baudrate(115200);
$PortObj->parity("none");
$PortObj->databits(8);
$PortObj->stopbits(1);
#$PortObj->dtr_active(1);
#$PortObj->rts_active(0);
#$PortObj->handshake("xoff");
$PortObj->lookclear();
$PortObj->write($sendData);
$PortObj->close();
dtr_active
、rts_active
およびhandshake
ビットをコメントアウトしました。これらの設定は、どこかで犯人の可能性があると言及されていたので、いじってみました。
また、ここで説明されているように、120 オームの抵抗を使用して Arduino の自動リセットを停止しました。
最初に PuTTY/Serial Monitor を開かなくても、Arduino に Perl プログラムをリッスンさせるために必要な設定について、誰か提案はありますか?