.net 调制解调器发出ATDTNNN后出错

.net 调制解调器发出ATDTNNN后出错,.net,vb.net,modem,at-command,serial-communication,.net,Vb.net,Modem,At Command,Serial Communication,我正在尝试使用通过USB连接的本地调制解调器呼叫远程调制解调器。编程语言是VB.NET,我正在使用SerialPort控件与调制解调器通信 来文如下: 我发送:ATZ0[CR] 调制解调器响应:ATZ0[CR][CR][LF]正常[CR][LF] 然后我尝试拨一个号码: 我发送:atdtnnnnnnnn[CR]其中nnnnnnnn是一个有效数字 调制解调器的响应为:ATDTnnnnnnnnnn[CR][CR][LF]错误[CR][LF] 所有其他命令似乎都可以正常工作 有关信息,调制解调器为Mu

我正在尝试使用通过USB连接的本地调制解调器呼叫远程调制解调器。编程语言是VB.NET,我正在使用
SerialPort
控件与调制解调器通信

来文如下:

我发送:
ATZ0[CR]

调制解调器响应:
ATZ0[CR][CR][LF]正常[CR][LF]

然后我尝试拨一个号码:

我发送:
atdtnnnnnnnn[CR]
其中
nnnnnnnn
是一个有效数字

调制解调器的响应为:
ATDTnnnnnnnnnn[CR][CR][LF]错误[CR][LF]

所有其他命令似乎都可以正常工作

有关信息,调制解调器为MultiTech MT5634ZBA-USB-V92

如果我使用hyperterminal并在其中键入相同的命令,它将按预期工作并拨打号码,因此这一定是我在代码中执行的操作,可能是在
串行端口
控件中进行的一些设置

编辑


我已经发布了我自己的答案,那就是向调制解调器发送
AT&D0
。上面的命令现在正在运行。

我想看看您的代码,以便更好地理解这个问题,但首先,请尝试发送

ATDTnnnnnnnnnn[CR][LF]

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


我仍然有点困惑,为什么在hyperterminal中键入命令时不必发出
AT&D0
-有人知道hyperterminal是否在无声地发出命令吗?

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

通常,如果你必须拨出,你必须拨一个“1”作为外线,在拨出其余号码之前先暂停一下。通常,在发出命令之间,您必须在拨号脚本中进行少量等待。根据记忆,这些是“W1”,“W2”等

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

ATDT1W3123456[CR][LF]
我已经很久没有这样做了:)


此外,从内存来看,AT&D0类似于“重置调制解调器状态”,因此我们总是使用该命令启动脚本。

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

ATZ0
返回一些存储的配置以供使用。 也许有什么东西会引起问题。 您可以通过以下命令进行打印:

AT&V[CR]
尝试工厂重置命令:

AT&F[CR]
然后:

ATDTnnnnn[CR]

@Matt我还没有开发该调制解调器,但是您可以登录并访问一些日志以了解更多详细信息吗?@ChristopherRathermel-是否有从调制解调器访问此信息的命令?@Matt不确定,但我在此处找到了开发手册的链接,其中包含错误代码的详细信息。(希望它是正确的版本)问题与外线拨号无关(它是直接外线)
AT&D0
是忽略DTR信号。无论DTR线路如何,呼叫都将继续,结束呼叫的唯一方法是使用转义序列,或者如果呼叫被另一方终止。只有当计算机设备无法提供或控制DTR时,才使用此设置我尝试了这个,它也返回了错误-我不相信这是命令终止符问题请发布您的SerialPort控件设置我没有做任何设置,只是我在原始问题中发布的设置。在我发出AT&D0命令后,它现在可以工作了。我尝试了这个命令,它也返回了错误-我不相信这是命令终止器问题。我认为这是多技术调制解调器的问题。我的问题与通过微处理器而不是术语发送CMD的问题相同。我认为DTR将通过串行方式影响所有CMD,但我很高兴亲自尝试此解决方案!