调制解调器在发出ATDTnnnnnnn后给出ERROR

时间:2011-10-12 12:32:03

标签: .net vb.net modem at-command serial-communication

我正在尝试使用通过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。上面的命令现在正在运行。

5 个答案:

答案 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]