我正在尝试使用通过USB连接的本地调制解调器呼叫远程调制解调器。编程语言是VB.NET,我使用SerialPort
控件与调制解调器通信。
沟通如下:
我发送:ATZ0[CR]
调制解调器回复:ATZ0[CR][CR][LF]OK[CR][LF]
我发送:ATDTnnnnnnnnnn[CR]
其中nnnnnnnnnn
是有效号码
调制解调器响应:ATDTnnnnnnnnnn[CR][CR][LF]ERROR[CR][LF]
所有其他命令似乎没有任何问题
有关信息,调制解调器是MultiTech MT5634ZBA-USB-V92
如果我使用超级终端并键入相同的命令,它按预期工作并拨号,所以它必须是我在我的代码中做的事情,可能在SerialPort
控件中进行一些设置
编辑
我已经发布了自己的答案,就是向调制解调器发出AT&D0
。上面的命令现在正在运行。
答案 0 :(得分:2)
我经过几个小时的实验后发现,在AT&D0
之前发出ATDT
(忽略DTR信号)命令会导致调制解调器不再响应ERROR
但拨打遥控器调制解调器。
我仍然有点困惑为什么在没有发出AT&D0
的情况下将命令输入到超级终端有效 - 有没有人知道超级终端是否默默地发出命令?
答案 1 :(得分:2)
我已经发布了大约12年的AT命令,但我记得你需要阅读调制解调器特有的手册,因为每个品牌的所有AT命令都不同。
通常情况下,如果你不得不拨出,你必须拨打“1”作为外线,在你拨打其余号码之前暂停一下。在发出命令之间,您必须经常在拨号脚本中进行小的等待。从记忆中,这些是“W1”,“W2”等。
所以要拨打外线(“1”)然后拨打电话号码(“123456”),您需要输入以下内容:
ATDT1W3123456[CR][LF]
自从我这样做了很长时间以后:)
此外,从内存来看,AT& D0就像“重置调制解调器状态”,所以我们总是用这个命令启动脚本。
答案 2 :(得分:0)
我希望您的代码能够更好地了解问题,但首先请尝试发送
ATDTnnnnnnnnnn[CR][LF]
答案 3 :(得分:0)
您是否尝试使用[LF]而不是[CR]来结束“ATDT”?
答案 4 :(得分:0)
ATZ0
返回一些要使用的存储配置。
也许有些东西会导致问题。
您可以通过命令打印:
AT&V[CR]
尝试恢复出厂设置命令:
AT&F[CR]
然后:
ATDTnnnnn[CR]