gpt4 book ai didi

linux - 阻止 Perl 的 `tie` 在我的串行接口(interface)上​​重置我的 Arduino/脉冲 DTR

转载 作者:太空狗 更新时间:2023-10-29 12:20:33 27 4
gpt4 key购买 nike

在 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); 方法打开设备即可完成,但我无法使用该方法,因为我无法检查串行缓冲区中是否有数据在等待。测试数据等待是我程序中的硬性要求。

最佳答案

您需要更改端口的 termios 设置中的 HUPCL 位。这将持续存在,直到其他东西改变它(我看到同一个发行版的不同版本默认它不同)

查看 man termios 和 man stty

以下 shell 命令可能有效——未经测试:

stty -F /dev/ttyUSB1 -hupcl

关于linux - 阻止 Perl 的 `tie` 在我的串行接口(interface)上​​重置我的 Arduino/脉冲 DTR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10364136/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com