I am attempting to call a remote modem using a local modem connected via USB. Programming language is VB.NET and I am using the SerialPort control to talk to the modem.

Communication is as follows:

I send: ATZ0[CR]

Modem responds: ATZ0[CR][CR][LF]OK[CR][LF]

I then try to dial a number:

I send: ATDTnnnnnnnnnn[CR] where nnnnnnnnnn is a valid number

The modem responds with:ATDTnnnnnnnnnn[CR][CR][LF]ERROR[CR][LF]

All other commands seem to work without any issues

For info the modem is a MultiTech MT5634ZBA-USB-V92

If I use hyperterminal and type the same commands in it works as expected and dials the number, so it must be something I am doing in my code, possible some setup in the SerialPort control

EDIT

I have posted my own answer on this which was to issue AT&D0 to the modem. The above command are now working.

有帮助吗?

解决方案 2

I have found after many hours of experimentation that issuing a AT&D0 (Ignore DTR Signal) command before ATDT has the effect that the modem no longer responds with ERROR but dials the remote modem as desired.

I am still a little confused why typing the commands into hyperterminal worked without having to issue AT&D0 - does anyone know if hyperterminal is issuing commands silently?

其他提示

I haven't issued AT commands for about 12 years, but what I remember was that you needed to read the manual specific to the modem because all the AT commands were different for each brand.

Often, if you had to dial out, you'd have to dial a "1" for an outside line, with a pause before you dialled the rest of the number. Frequently you'd have to have small waits in your dialling scripts between issuing commands. From memory, these were "W1", "W2" etc.

So to dial an outside line ("1") and then the phone number ("123456") you'd type something like this:

ATDT1W3123456[CR][LF]

It's been a long time since I did this :)

Also, from memory, AT&D0 was something like "reset the modem state" so we always started our scripts with that command.

I'd like to see your code to understand better the issue, but as a start, try to send

ATDTnnnnnnnnnn[CR][LF]

Have you tried ending your "ATDT" just with [LF] instead of [CR]?

ATZ0 returns some stored configuration to use. Maybe there is something that cause problems. You can print if by command:

AT&V[CR]

Try factory reset command:

AT&F[CR]

And then:

ATDTnnnnn[CR]
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top