【问题标题】:Modem gives ERROR after issuing ATDTnnnnnnn调制解调器在发出 ATDTnnnnnnn 后给出错误
【发布时间】:2011-10-12 12:32:03
【问题描述】:

我正在尝试使用通过 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。上面的命令现在可以工作了。

【问题讨论】:

  • @Matt 我还没有使用那个调制解调器开发,但你可以登录并访问一些日志以了解更多详细信息吗?
  • @ChristopherRathermel - 是否有从调制解调器访问此信息的命令?
  • @Matt 不确定,但我在这里找到了开发手册的链接,其中包含有关错误代码的详细信息。 (希望是正确的版本)multitech.com/en_US/DOCUMENTS/Families/MultiMobileUSB/…

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


【解决方案1】:

我已经有 12 年没有发出 AT 指令了,但我记得你需要阅读调制解调器的特定手册,因为每个品牌的所有 AT 指令都不同。

通常,如果您必须拨出外线,则必须先拨“1”,然后再拨其余号码。在发出命令之间,您经常不得不在拨号脚本中稍作等待。根据记忆,这些是“W1”、“W2”等。

所以要拨打外线(“1”),然后拨打电话号码(“123456”),您需要输入如下内容:

ATDT1W3123456[CR][LF]

我已经很久没有这样做了:)

此外,根据记忆,AT&D0 类似于“重置调制解调器状态”,因此我们总是使用该命令启动脚本。

【讨论】:

  • 此问题与外线拨号无关(是直接外线)AT&D0 是忽略DTR 信号。 “无论 DTR 线路如何,呼叫都会继续,结束呼叫的唯一方法是使用转义序列,或者如果它被对方终止。此设置仅在计算机设备无法提供或控制 DTR 时使用。 "
【解决方案2】:

经过数小时的实验后,我发现在ATDT 之前发出AT&D0(忽略DTR 信号)命令的效果是调制解调器不再响应ERROR,而是根据需要拨打远程调制解调器。

我仍然有点困惑,为什么无需发出 AT&D0 就可以在超级终端中输入命令 - 有谁知道超级终端是否在静默发出命令?

【讨论】:

  • 我认为这与 Multitech 调制解调器有关。我有同样的问题,因为我通过微处理器而不是术语发送 CMd。我认为 DTR 会通过串行影响所有 CMDS,但我很高兴自己尝试这个解决方案!
【解决方案3】:

我希望查看您的代码以更好地理解问题,但作为开始,请尝试发送

ATDTnnnnnnnnnn[CR][LF]

【讨论】:

  • 我试过了,它也返回了错误 - 我不相信这是一个命令终止符问题
  • 请发布您的 SerialPort 控件设置
  • 我没有做任何设置,只是我在原始问题中发布的内容。这在我发出 AT&D0 命令后现在可以工作了。
【解决方案4】:

您是否尝试过仅使用 [LF] 而不是 [CR] 来结束“ATDT”?

【讨论】:

  • 我试过了,它也返回了错误 - 我不相信这是一个命令终止符问题
【解决方案5】:

ATZ0 返回一些存储的配置以供使用。 也许有些东西会导致问题。 可以通过命令打印 if:

AT&V[CR]

尝试恢复出厂设置命令:

AT&F[CR]

然后:

ATDTnnnnn[CR]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多