gpt4 book ai didi

linux - 使用 perl 向调制解调器发送 AT 命令

转载 作者:太空狗 更新时间:2023-10-29 11:45:12 25 4
gpt4 key购买 nike

我有一个带有 perl 5.10 和 GSM 调制解调器的嵌入式 linux 盒子。我编写了一个简单的 perl 脚本来通过调制解调器设备文件 (/dev/ttyACM0) 读/写 AT 命令。

如果我向调制解调器写入一个简单的命令,如“ATZ\r”并等待响应,我会收到非常奇怪的数据,如“\n\n\nATZ\n\n0\n\nOK\n\n\n\n\nATZ\n\n\n\n...”并且数据源源不断地涌入。似乎响应被其他数据弄乱了。

我希望得到类似“ATZ\nOK\n”的信息(如果启用了回显)。

如果我手动发送“ATZ”命令,例如minicom 一切正常。

这让我认为这可能是某种 perl 缓冲问题,但这只是猜测。

我像这样在 perl 中打开设备(我的嵌入式 linux perl 安装上没有 Device::Serialport):



open(FH, "+<", "/dev/ttyACM0") or die "Failed to open com port $comport";

并一次读取一个字节的响应:



while(1) {
my $response;
read(FH, $response, 1);
printf("hex response '0x%02X'\n", ord $response);
}

我是否遗漏了一些初始化或其他东西来解决这个问题?

问候克劳斯

最佳答案

我认为您不需要 while 循环。此代码应发送 ATZ 命令,等待响应,然后打印响应:

 open(FH, "+>", "/dev/ttyACM0") or die "Failed to open com port $comport";
print FH ("ATZ\n");
$R = <FH>;
print $R;
close(FH);

关于linux - 使用 perl 向调制解调器发送 AT 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20094576/

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