Perlで、LinuxでSerial :: Deviceをファイルとして開くと、Arduinoがリセットされますが、リセットしたくありません。ArduinoはDTRをパルスすることでリセットできるため、シリアルデバイスを開くにはデフォルトでDTRをパルスする必要があります。
私の質問は:Arduinoがリセットされる(DTRがパルス化される)のを防ぐにはどうすればよいですか?
この最小限のコードは私のArduinoをリセットします:
use Device::SerialPort;
use Symbol qw( gensym );
my $handle = gensym();
my $PortName = '/dev/ttyUSB1';
my $PortObj = tie( *$handle , "Device::SerialPort" , $PortName ) or die "Cannot open serial port: $!\n";
# At this point the Arduino is being reset.
メソッドを使用してデバイスを開くだけで実行できることはわかっていPortObj = new Device::SerialPort ($PortName, $quiet, $lockfile);
ますが、シリアルバッファーで待機中のデータがあるかどうかを確認できないため、そのメソッドを使用できません。そして、データ待機のテストは私のプログラムの難しい要件です。