【发布时间】:2013-11-22 18:16:03
【问题描述】:
我有一个带有 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);
}
我是否遗漏了一些初始化或其他东西来解决这个问题?
问候 克劳斯
【问题讨论】:
标签: linux perl serial-port modem