# El conjunto de comandos de módem Hayes

Esta es una descripción del conjunto de comandos Hayes. La mayoría de los módems utilizan gran parte de este conjunto de comandos. Si ha perdido el manual de su módem, o si nunca lo ha tenido, esta referencia le podría ser útil. Yo, por ejemplo, al final he aprendido a desconectar el altavoz del módem: `ATM0` - y por fin el silencio.

Las cadenas de inicialización del módem consisten en una serie de comandos. Preparan el módem para las comunicaciones, estableciendo algunos parámetros como el modo de marcado, las esperas, la detección de la señal de ocupado y muchas otras cosas. Los programas de comunicación por módem más modernos reinician las cadenas de inicialización en función de las opciones de menú que seleccione, las características que active, &etc;.

Durante muchos años los módems Hayes han sido el estándar. Con el crecimiento del mercado de fabricantes de módems, la mayoría se han unido, al menos en algo, al estándar Hayes. Lo que viene a continuación en una lista parcial del conjunto de comandos de Hayes (llamados comandos AT). El conjunto de comandos de Hayes se puede dividir en cuatro grupos:

Conjunto de comandos básico

  Una letra mayúscula seguida de un dígito. Por ejemplo, `M1`.

Conjunto de comandos extendido

  El símbolo & y una letra mayúscula seguidos de un dígito. Esta es una extensión del comando básico. Por ejemplo, `&M1`. Tenga en cuenta que el comando `M1` es diferente del comando `&M1`.

Conjunto de comandos propietario

  Comienzan normalmente con una barra invertida (\), o un signo de porcentaje (&percnt;), estos comandos varían dependiendo del fabricante del módem. Pero esa razón, sólo se mostrarán unos pocos comandos de este tipo.

Comandos de registro

  `Sr=n` donde r es el número de registro a cambiar, y n es el nuevo valor que se le asigna.

  Un registro es un punto físico específico de la memoria. Los módems tiene pequeñas cantidades de memoria. Este cuarto conjunto de comandos se utiliza para introducir valor en un registro (punto de la memoria) en particular. El registro almacenará una variable (información alfanumérica) en particular, que será utilizada por el módem y el programa de comunicaciones. Por ejemplo `S7=60` le indica al ordenador que establezca el valor 60 en el registro número 7.

Aunque la mayoría de los comando están definidos por una combinación de letra y número (`L0`, `L1` &etc;), el uso del cero es opcional. En este ejemplo, `L0` es lo mismo que indicar simplemente `L`. Tenga esto en cuenta al leer la tabla que viene a continuación.

Éstos son algunos de los caracteres más importantes que pueden aparecer en la cadena de inicialización de un módem. Estos caracteres no deberían ser cambiados en circunstancias normales.

`AT`

  Le dice al módem que lo que sigue es un comando. Así debe comenzar cada línea de comandos.

`Z`

  Reinicia el módem a su estado por defecto.

`,` (una coma)

  hace que el programa se detenga durante un segundo. Puede utilizar más de una `,` consecutivamente. Por ejemplo, `,,,,` le dice al módem que espere durante cuatro segundos (la duración de la pausa viene determinada por el valor del registro `S8`).

`^M`

  Envía el carácter de retorno de carro al módem. Es un código de control que la mayoría de los programas de comunicaciones interpretan como retorno de carro.

## El conjunto básico de comandos Hayes

En orden alfabético:

### Conjunto básico de comandos Hayes

Comando | Descripción | Comentarios
--- | --- | ---
`A0` o `A` | Responde a una llamada entrante |
`A/` | Repite el último comando | No utilizar `AT` como prefijo. Normalmente Intro lo aborta.
`B0` o `B` | Negociación de la llamada | Secuencia de respuesta de modo V32/CCITT
`B1` | Negociación de la llamada | Secuencia de respuesta de Bell 212A
`B2` | Negociación de la llamada | Respuesta informativa/tranquila

`D`

Llamada

Llama al número indicado y se conecta en modo llamante.

`P`

  Llamada por pulsos

`T`

  Llamada por tonos

`W`

  Espera al segundo tono de llamada

`,`

  Pausa durante el tiempo especificado en el registro `S8` (normalmente 2 segundos)

`;`

  Permanece en modo de comandos después de marcar.

`!`

  Cuelgue fugaz (cuelga durante medio segundo, como para la llamada en espera).

`L`

  Llama al último número marcado

`E0` o `E` | Sin eco | No escribirá en pantalla los comandos enviados al ordenador
`E1` | Eco | Escribirá en pantalla los comandos enviados al ordenador (así se puede ver lo que se escribe)
`H0` | Estado de colgado | Corta la comunicación
`H1` | Estado de colgado | Se descuelga el teléfono
`I0` o `I` | Información o Interrogación | Este comando es muy dependiente del tipo de modelo. `I0` devuelve normalmente un número o código, donde los número más altos proporcionan normalmente información muy útil.
`L0` o `L` | Altavoz reducido. Los módems con control de volumen externo no tendrán esta opción. | Minimiza el volumen
`L1` |  | Volumen bajo
`L2` |  | Volumen medio
`L3` |  | Volumen alto
`M0` o `M` | Apaga el altavoz | `M3` también es común, pero difiere según las marcas
`M1` |  | El altavoz permanece encendido hasta que se detecta la portadora (es decir, hasta que se oye al otro módem)
`M2` |  | El altavoz permanece siempre encendido (se oyen los sonidos de los datos después del CONNECT)
`N0` o `N` | Velocidad de preconexión | Preconectar sólo a la velocidad indicada en `S37`
`N1` |  | Preconectar a la velocidad más alta mayor de `S37`
`O0` o `O` | Volver en línea | Ver también `X1` ya que la detección del tono de llamada podría estar activada.
`O1` |  | Volver en línea después de una secuencia de ajuste de ecualización
`Q0` o `Q1` | Modo tranquilo | Apagado. Muestra códigos de resultados, el usuario ve respuestas a los comandos (&eg; `OK`)
`Q1` | Modo tranquilo | Encendido. Se suprimen los códigos de resultados, el usuario no ve respuestas.
`Sn?` |  | Solicita los contenidos el registro S n
`Sn=r` | Almacena | Almacena el valor de r en el registro S n
`V0` o `V` | Informativo | Códigos de resultado numéricos
`V1` |  | Códigos de resultado en inglés (&eg; `CONNECT`, `BUSY`, `NO CARRIER` &etc;)
`X0` o `X` | Smartmodem | Códigos de resultado compatibles con el módem Hayes Smartmodem 300
`X1` |  | Normalmente añade la velocidad de conexión a los códigos de resultado básicos (&eg; `CONNECT 1200`)
`X2` |  | Normalmente añade detección de tono de marcado (evitando la marcación a ciegas y en ocasiones evitando `AT0`)
`X3` |  | Normalmente añade detección de señal de ocupado
`X4` |  | Normalmente añade detección tanto de señal de ocupado como de tono de marcado
`Z0` o `Z` | Reiniciar | Reinicia la configuración del módem a la almacenada. Utilice `Z0`, `Z1` &etc; para tener varios perfiles. Es lo mismo que `&F` para reiniciar los valores de fábrica en los módems sin NVRAM (memoria no volátil)

## El conjunto extendido de comandos Hayes

Comandos tipo &

### El conjunto extendido de comandos Hayes

Comando | Descripción | Comentarios
--- | --- | ---
`&B0` o `&B` | Parámetros de autoajuste | Desactivar la función de autoajuste
`&B1` | Parámetros de autoajuste | Activar la función de autoajuste
`&B2` | Parámetros de autoajuste | Activar autoretrain, pero desconectar si no hay mejoras en la línea más tarde del periodo dictado por `S7`
`&C0` o `&C1` | Detección de portadora | Señal siempre activa
`&C1` | Detección de portadora | Indica la portadora remota (preferido por defecto)
`&D0` o `&D` | Terminal de datos lista (DTR) | Señal ignorada (esto es específico del módem, debe comprobar su manual sobre este comando concreto).
`&D1` | Terminal de datos lista (DTR) | Si DTR cambia de activo a inactivo, el módem se sitúa en modo de comandos (sólo algunos módems)
`&D2` | Terminal de datos lista (DTR) | Algunos módems cuelgan en la transición de DTR activo a inactivo (preferido por defecto)
`&D3` | Terminal de datos lista (DTR) | Cuelga y reinicia el módem, y vuelve al modo de comandos sobre DTR

`&F0` o `&F`

Predeterminados de fábrica

Predeterminados genéricos compatibles con Hayes

Normalmente es bueno que utilice esto en la cadena de inicio, ya que los parámetros `&F1`-`&F3` varían de unos módems a otros, puede causar problemas de conexión (ya que nunca se sabe realmente qué es lo que cambia realmente `&F2`).

Por otro lado, también interesa probar las otras opciones que se detallan, muchos de los problemas se pueden resolver sustituyendo una cadena de inicio complicada por un simple `&F2` o similar. Sin embargo, si está construyendo una cadena de inicio, es mejor que comience con un simple `&F`, y no utilice los parámetros personalizados.

`&F1` | Predeterminados de fábrica | Predeterminados de fábrica basados en un usuario de un ordenador compatible con IBM PC
`&F2` | Predeterminados de fábrica | Predeterminados de fábrica para un Mac con preconexión por software
`&F3` | Predeterminados de fábrica | Predeterminados de fábrica para un Mac con preconexión por hardware
`&G0` o `&G` | Tonos guardia | Desactivar tonos guardia
`&K0` o `&K` | Control de flujo local | Desactivar control de flujo local
`&K1` | Control de flujo local | Activa el control local de flujo por hardware RTS/CTS
`&K2` | Control de flujo local | Activa el control local de flujo por software XON/XOFF
`&K3` | Control de flujo local | Activa el control local de flujo por hardware RTS/CTS
`&K4` | Control de flujo local | Activa el control local de flujo por software XON/XOFF
`&L0` o `&L` | Modo de marcado | Selecciona el modo de marcado
`&M0` o `&M` | Modo de control de errores | Selecciona el modo asíncrono no-EC (el mismo que `&Q0`)
`&P0` o `&P` | Ratio de marcación por pulsos | Marcación por pulsos en EE.UU./Canada, 39% señal / 61% ruptura
`&P1` | Ratio de marcación por pulsos | Marcación por pulsos en R.U./Hong Kong, 33% señal / 67% ruptura
`&Q0` o `&Q` | Modo de control de errores | Modo de control de errores asíncrono no-EC. No se hace caché de datos. ASB desactivado.
`&Q5` | Modo de control de errores | Selecciona la operación V.42 EC (requiere control de flujo)
`&Q6` | Modo de control de errores | Modo asíncrono con ASB (requiere control de flujo)
`&Q8` | Modo de control de errores | Selección de protocolo EC alternativo (MNP)
`&Q9` | Modo de control de errores | Compresión de datos condicional: V.42bis = sí, MNP5 = no.
`&S0` o `&S` | Selección de acción DSR | Siempre activo (por defecto)
`&S1` | Selección de acción DSR | Sigue la especificación EIA (activar el siguiente todo de portadora, hasta que se pierda esta).
`&T0` o `&T` | Auto comprobación | Auto comprobación dependiente del modelo en algunos módems
`&U0` o `&U` | Modulación de código de Trellis | Activar V.32 TCM
`&U1` | Modulación de código de Trellis | Desactivar V.32 TCM
`&V0` o `&V1` | Ver activo | (y casi siempre almacenadas) opciones del perfil de configuración (o `ATI4`
`&W0` o `&W` | Almacenar perfil | En NVRAM (`&W0`, `&W1` etc. para múltiples perfiles) algunos parámetros no pueden ser almacenados. Estos no aparecen normalmente con `&V` o `ATI4`
`&Y0` o `&Y` | Seleccionar la configuración que se cargará durante el encendido | Cargar perfil 0 (predeterminado)
`&Y1` | Seleccionar la configuración que se cargará durante el encendido | Cargar perfil 1
`&Zn=x` | Reiniciar por software y cargar el perfil almacenado número n | Note que se ignorarán todos los elementos de la línea de comandos posteriores a `&Z`

## Comandos de barra invertida y de porcentaje

### Comandos de barra invertida y de porcentaje

Comando | Descripción | Comentarios
--- | --- | ---
`\A0` o `\A` | Número de caracteres máximo en el tamaño de bloque de MNP | 64 caracteres máximo
`\A1` | Número de caracteres máximo en el tamaño de bloque de MNP | 128 caracteres máximo
`\A2` | Número de caracteres máximo en el tamaño de bloque de MNP | 192 caracteres máximo
`\A3` | Número de caracteres máximo en el tamaño de bloque de MNP | 256 caracteres máximo
`&percnt;C0` o `&percnt;C` | Activar/desactivar compresión de datos | Desactivar
`&percnt;C1` | Activar/desactivar compresión de datos | MNP5 activado
`&percnt;C2` | Activar/desactivar compresión de datos | V.42bis (BTLZ) activado
`&percnt;C3` | Activar/desactivar compresión de datos | MNP5 & V.42bis (BTLZ) activado
`&percnt;D0` o `&percnt;D` | Compresión de datos | Tamaño del diccionario 512 BLTZ
`&percnt;D1` | Compresión de datos | Tamaño del diccionario 1024 BLTZ
`&percnt;D2` | Compresión de datos | Tamaño del diccionario 2048 BLTZ
`&percnt;D3` | Compresión de datos | Tamaño del diccionario 4096 BLTZ
`&percnt;E0` o `&percnt;E1` | Método de salida | SALIDA DESACTIVADA
`&percnt;E1` | Método de salida | Método `+++AT` (predeterminado)
`&percnt;E2` | Método de salida | Método `AT` `Break`
`&percnt;E3` | Método de salida | AMBOS métodos activados
`&percnt;E4` | Método de salida | Desactivar `OK` a `+++`
`&percnt;E5` | Método de salida | Activar `OK` a `+++`
`\J0` o `\J` | Ajuste de ratio automático DTE | Desactivar
`\J1` | Ajuste de ratio automático DTE | El ratio DTE se ajusta para que coincida con el ratio de la portadora.
`\N0` o `\N` | Tipo de conexión | Conexión normal (ver más adelante las definiciones)
`\N1` | Tipo de conexión | Conexión dirección
`\N2` | Tipo de conexión | Conexión auto-fiable MNP
`\N3` | Tipo de conexión | Conexión auto-fiable
`\N4` | Tipo de conexión | Enlace fiado en V.42bis con detección de fase
`\N5` | Tipo de conexión | Enlace V.42bis auto-fiable con detección de fase
`\N6` | Tipo de conexión | Enlace fiado en V.42 con detección de fase
`\N7` | Tipo de conexión | Enlace V.42 auto-fiable con detección de fase

Una conexión directa es simplemente un enlace sin ningún tipo de control de errores o compresión de datos. En este caso, las velocidades entre el ordenador y el módem y entre los módems deben ser idénticas.

Una conexión normal utiliza control de flujo (ya sea por software o hardware) para hacer una caché de la información enviada o recibida, de forma que el módem puede transmitir información a una velocidad diferente de la que se recibe. Por ejemplo, un ordenador puede enviar a una velocidad real de 57kbps, utilizando compresión, mientras que el módem tiene una velocidad real de 28.8 kbps. Este es el modo que utilizan la mayoría de los módems.

Una conexión fiable es un tipo de conexión normal; si, por alguna razón, no se pueden establecer o mantener la compresión de datos o la corrección de errores, se cortará la conexión. (Esencialmente, un módem de ese tipo asegura que todas las conexiones son fiables, ya que colgará cuando la conexión no lo sea).

Igualmente, las conexiones auto-fiables son básicamente lo mismo, excepto que el módem tratará de negociar las conexión para establecer un enlace fiable. Nuevamente, este es el modo que utilizan la mayoría de los módems.

## Registros-S

### Registros S

Registro | Rango | Predeterminado | Función
--- | --- | --- | ---
`S0` | 0-255 tonos | 1-2 | Contestar en el número de tono. No contestar si es 0
`S1` | 0-255 tonos | 0 | si `S0` es mayor que 0, este registro cuenta el número de tonos entrantes.
`S2` | 0-127 ASCII | 43 + | Carácter de salida al modo de comandos
`S2` | >127 |  | ESC no
`S3` | 0-127 ASCII | 13 CR | Carácter de retorno de carro
`S4` | 0-127 ASCII | 10 LF | Carácter de salto de línea
`S5` | 0-32, 127 ASCII | 8 BS | Carácter de espacio hacia atrás
`S6` | 2-255 segundos | 2 | Tiempo de espera al tono de llamada (llamada a ciegas, vea Xn
`S7` | 1-255 segundos | 30-60 | Tiempo de espera a la portadora remota
`S8` | 0-255 segundos | 2 | Duración de la pausa de coma al marcar
`S9` | 1-255 décimas de segundo | 6 | Tiempo de detección de la portadora requerido para su reconocimiento
`S10` | 1-255 décimas de segundo | 7-14 | Tiempo entre la pérdida de la portadora y el cierre de la comunicación
`S11` | 50-255 milisegundos | 70-95 | Duración y espaciado de los tonos al realizar marcación por tonos
`S12` | 0-255 cincuentavos de segundo | 50 | Tiempo de guardia para la pausa con la secuencia de comandos `+++`

`S36`

Opciones a realizar cuando falla la corrección de errores:

- 0 - Desconectar

- 1 - Establecer conexión directa

- 3 - Establecer conexión normal

- 4 - Establecer una conexión MNP si el posible, en caso contrario colgar

- 5 - Establecer una conexión MNP si es posible, en caso contrario una conexión directa.

- 7 - Establecer una conexión MNP si es posible, en caso contrario una conexión normal

7

Tratamiento de los fallos de negociación

`S37`

- 1 = 300 bps

- 5 = 1200 bps

- 6 = 2400 bps

- 7 = 1200/75 bps (modo v.23)

- 8 = 4800 bps

- 9 = 9600 bps

- 10 = 12000 bps

- 11 = 14400 bps

- 12 = 7200 bps

0

Velocidad de negociación (establecimiento inicial)

Muchos módems tiene docenas, incluso cientos, de registros S, pero sólo la primera docena más o menos suele ser medianamente estándar. Se cambian con un comando del tipo `ATSn=N`, y se leen con `ATSn?` (&eg; ``AT` `S10``=70` `S1?`` indicará al módem que no cuelgue durante siete segundos sin oír al módem receptor, y que devuelva el número de veces que el teléfono sonó en la última ocasión).