pppd call provider
我在使用 Hayes 兼容调制解调器的命令时遇到了问题。
PPPD 的版本是 2.4.7,我相信这是最新版本。
仅当我关闭调制解调器时它才会失败(即它不会回复任何 AT 命令)。
我的聊天脚本很简单:
ABORT "BUSY"
ABORT "NO CARRIER"
ABORT "NO DIALTONE"
ABORT "ERROR"
ABORT "NO ANSWER"
TIMEOUT 30
"" AT
OK ATE0
...
当调制解调器关闭时pppd call provider
输出以下内容:
... #bunch of pppd configurations
abort on (BUSY)
abort on (NO CARRIER)
abort on (NO DIALTONE)
abort on (ERROR)
abort on (NO ANSWER)
timeout set to 30 seconds
send (AT^M)
expect (OK)
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@....
说到这里我已经完全糊涂了。
事实:
- 调制解调器已关闭
- 如果我向调制解调器发送“”微型计算机,它没有回答(正如我所料)
- ^@ 会一直打印,30 秒后也不会停止。我必须手动将其杀死
killall -9 chat; killall -9 pppd
即使我将"" AT
行更改为OK AT
(在发送 AT 之前期望 OK),那些 ^@ 字符仍会出现:
...
timeout set to 30 seconds
expect (OK)
^@^@^@^@^@^@^@^@^@^@...
现在我也测试了这个设备:
cat /dev/ttyS0
^C
我等了十多秒,什么都没有打印出来。
我的问题是:
- 这聊天如果程序没有收到预期的答案,它应该运行到错误,为什么这个不这样做?(它显然没有收到 OK)
- 为什么在输出的命令
^M
后面打印?(我已经为聊天脚本做了 dos2unix)AT
答案1
为什么输出中的 AT 命令后面会打印 ^M?
您可能需要调整 S3 和 S4(调制解调器 CR 和 LF 设置)以匹配您所使用的软件的预期 - 或者相应地调整软件设置。
如果聊天程序没有收到预期的答案,它应该运行到错误,为什么这个不这样做?(它显然没有收到 OK)
请注意,^@ 是 ascii nul 的可能表示 - 软件尝试读取串行端口,但失败并且从读取中获取一个 nul 字符,或者无法识别空的读取结果,修改字符串结束 nul(0x00) - 或其任何变体。