# O Conjunto de Comandos de Modem Hayes

Aqui está uma descrição do Conjunto de Comandos Hayes. A maioria dos modens seguem amplamente este conjunto de comandos. Se você perdeu o manual do seu modem ou nunca teve um manual, esta referência pode ser muito útil. Com ela, eu por exemplo finalmente descobri como desligar a caixinha de som do meu modem: `ATM0` -- Finalmente: Silêncio!

O string de inicialização do modem consiste de uma série de comandos. Ele prepara o modem para comunicação, configurando alguns recursos como modo de discagem, tempos de espera, detecção de sinal de ocupado e muitas outras configurações. Programas mais recentes de comunicação com modem reiniciam o string de inicialização de acordo com as opções de menu que você selecionou, com os recursos que você habilitou, &etc;.

Por muitos anos os modens Hayes foram o padrão. Conforme o campo de fabricantes de modens cresceu, a maioria aderiu pelo menos parte do padrão Hayes. A lista à seguir é uma lista parcial do conjunto de comandos Hayes (chamado de comandos AT). O Conjunto de Comandos Hayes pode ser dividido em quatro grupos:

Conjunto de Comandos Básicos

  Um caracter em maiúscula seguido por um dígito. Por exemplo, `M1`.

Conjunto de Comandos Extendidos

  Um & (e comercial) e um caracter maiúsculo seguido por um dígito. Esta é uma extensão do conjunto de comandos básicos. Por exemplo, `&M1`. Observe que `M1` é diferente de `&M1`.

Conjunto de Comandos de Proprietários

  Normalmente iniciado por uma barra invertida (\) ou um sinal de percentagem (&percnt;), estes comandos variam largamente de acordo com os fabricantes de modens. Por esta razão, somente alguns poucos destes comandos serão listados abaixo.

Comandos Registradores

  `Sr=n` onde r é o número do registrador a ser mudado, e n é o novo valor a ser atribuído.

  Um registrador é o termo computacional para uma localização física específica na memória. Modens possuem uma pequena quantidade de memória em seus circuitos. Este quarto conjunto de comandos é usado para inserir valores em uma registrador específico (localização da memória). O registrador será armazenado em uma variável (informação alfa-numérica) específica que é utilizada pelo modem e programas de comunicação. Por exemplo, `S7=60` instrui ao seu computador para Configurar registrador #7 para o valor 60.

Ainda que a maioria dos comandos sejam definidos através de uma combinação letra-número (`L0`, `L1` &etc;), o uso de um zero é opcional. Neste exemplo, o `L0` é o mesmo que um `L` normal. Leve isso em conta quando ler a tabela abaixo!

Aqui estão alguns dos mais importantes caracteres que podem aparecer em um string de inicialização do modem. Estes caracteres normalmente não devem ser mudados.

`AT`

  Diz ao modem que a seguir existem comandos de modem. Isto deve iniciar cada linha de comandos.

`Z`

  Restaura o modem ao seu estado padrão

`,` (um vírgula)

  faz o seu programa parar por um segundo. Você poderá usar mais de um `,` por cada linha. Por exemplo, o `,,,,` diz ao programa para parar quatro segundos (A duração da pausa é definida pela configuração do registro `S8`).

`^M`

  Envia o caracter de terminação de Retorno de Carro para o modem. Isto é um código de controle que a maioria dos programas de comunicação traduzem como Retorno de Carro

## O Conjunto de Comandos Básicos Hayes

Em ordem alfabética:

### Conjunto de Comandos Básicos Hayes

Comando | Descrição | Comentários
--- | --- | ---
`A0` ou `A` | Responder chamada de chegada |
`A/` | Repete último comando | Não preceder com `AT`. O 'Enter' normalmente aborta.
`B0` ou `B` | Negociação de chamada | Modo V32/Sequência de Resposta CCITT
`B1` | Negociação de chamada | Sequência de Resposta Bell 212A
`B2` | Negociação de chamada | Verbal/Silêncio Ao Responder

`D`

Discar

Disca o número a seguir e então negocia em modo origem.

`P`

  Discagem de Pulso

`T`

  Discagem de Tom

`W`

  Espera pelo segundo tom de discagem

`,`

  Fica em pausa durante o tempo definido no registro `S8` (normalmente 2 segundos)

`;`

  Permanece em modo de comando após discagem.

`!`

  Modo de comutação (suspende por meio segundo, como quem transfere uma chamada).

`L`

  Disca o último número

`E0` ou `E` | Sem Eco | Não ecoa comandos para o computador
`E1` | Eco | Ecoa comandos para o computados (logo você poderá ver que comando foi enviado)
`H0` | Estado do Gancho | No gancho - Telefone desligado
`H1` | Estado do Gancho | Fora do gancho - o telefone foi tirado do gancho
`I0` ou`I` | Inquisição, Informação ou Interrogação | Este comando é muito específico do modelo. `I0` normalmente retorna um número ou código, enquanto números maiores frequentemente fornecem informações mais úteis.
`L0` ou`L` | Nível do Alto-falante. Modens com botões de controle de volume não terão estas opções. | Desligado ou volume baixo
`L1` |  | Volume Baixo
`L2` |  | Volume Médio
`L3` |  | Máximo ou Volume Alto
`M0` ou `M` | Alto-falante desligado | `M3` é também comum, mas diferente em muitas placas
`M1` |  | Alto-falante ligado até um carro remoto ser detectado (&ie; até outro modem ser ouvido)
`M2` |  | Alto-falante sempre ligado (os sons dos dados serão ouvidos após o CONNECT)
`N0` ou `N` | Negociação de Velocidade | Negociar somente na velocidade em `S37`
`N1` |  | Negociar na maior velocidade maior que `S37`
`O0` ou `O` | Retonar Online | Veja também `X1` como a detecção do tom de discagem pode estar ativa.
`O1` |  | Retorna Online após uma sequência de rebuscamento de equalização
`Q0` ou `Q1` | Modo Silencioso | Desligado - Exibe os códigos de resultado, usuários vêem as respostas dos comandos (&eg; `OK`)
`Q1` | Modo Silencioso | Ligado - Códigos de resultado são suprimidos, usuários não vêem respostas.
`Sn?` |  | Consulta o conteúdo do registrador S de número n
`Sn=r` | Armazenar | Armazena o valor de r no registrador S n
`V0` ou `V` | Verbal | Códigos de resultado numéricos
`V1` |  | Códigos de resultado em inglês (&eg; `CONNECT`, `BUSY`, `NO CARRIER`, &etc;)
`X0` ou `X` | Smartmodem | Códigos de resultados compatíveis com o Smartmodem 300 da Hayes
`X1` |  | Normalmente adiciona a velocidade da ligação aos códigos de resultado básicos (&eg; `CONNECT 1200`)
`X2` |  | Normalmente adiciona a detecção de tom de discagem (evitando uma discagem cega, e algumas vezes evitando o `AT0`)
`X3` |  | Normalmente adiciona a detecção de sinal de ocupado
`X4` |  | Normalmente adiciona a deteção do tom de discagem e do sinal de ocupado
`Z0` ou `Z` | Reiniciar | Restaura o modem na configuração salva. Use o `Z0`, `Z1` &etc; para vários perfis. Isto é o mesmo que o `&F` para os valores de fábrica no caso dos modems sem NVRAM (memória não-volátil)

## O Conjunto de Comandos Extendidos Hayes

Comandos &

### O Conjunto de Comandos Extendidos Hayes

Comando | Descrição | Comentários
--- | --- | ---
`&B0` ou `&B` | Rebuscar Parâmetros | Desabilita a função de auto-rebuscar
`&B1` | Rebuscar Parâmetros | Habilita a função de auto-rebuscar
`&B2` | Rebuscar Parâmetros | Habilita o auto-rebuscar, mas desconecta se não houver melhoria da linha no período de tempo ditado pelo `S7`
`&C0` ou `&C1` | Detectar carro | Sinal sempre ligado
`&C1` | Detectar carro | Indicar carro de retorno (normalmente o padrão preferido)
`&D0` ou `&D` | Data Terminal Ready - Terminal de Dados Pronto (DTR) | Sinal ignorado (Isto é específico do modem, você deve ver seu manual para informações sobre esta opção!)
`&D1` | Data Terminal Ready - Terminal de Dados Pronto (DTR) | Se o DTR vai de Ligado para Desligado o modem vai para o modo de comando (Somente alguns modens)
`&D2` | Data Terminal Ready - Terminal de Dados Pronto (DTR) | Alguns modens interrompem a ligação quando ocorre a transição do DTR de Ligado para Desligado (Este é normalmente o padrão preferido)
`&D3` | Data Terminal Ready - Terminal de Dados Pronto (DTR) | Desliga, reinicia o modem e retorna ao modo de comando sobre o DTR

`&F0` ou `&F`

Padrões de fábrica

Padrões genéricos compatíveis com Hayes

Esta é normalmente uma boa coisa para usar no seu comando de inicialização, uma vez que as configurações `&F1`-`&F3` podem variar entre modems, e poderão ser elas próprias a causa de alguns problemas de ligação (Uma vez que você nem sempre sabe o que é que o `&F2` da marca X realmente altera.)

Apesar dele impedir a experimentação de outras opções abaixo, muitos dos problemas podem ser resolvidos substituindo um complicado string de inicialização por um simples `&F2` ou algo parecido. No entanto, se você está construindo um string de inicialização, é melhor iniciar com um simples `&F`, e não usar as formas personalizadas de padrões.

`&F1` | Padrões de Fábrica | Padrões de Fábricas adequados a um usuário de PC compatível com o IBM
`&F2` | Padrões de Fábrica | Padrões de fábrica para um Macintosh com negociação por software
`&F3` | Padrões de Fábrica | Padrões de fábrica para um Macintosh com negociação por hardware
`&G0` ou `&G` | Tons de guarda | Desabilitar tons de guarda
`&K0` ou `&K` | Controle de fluxo local | Desabilitar controle de fluxo local
`&K1` | Controle de fluxo local | Habilitar controle de fluxo local por hardware (RTS/CTS)
`&K2` | Controle de fluxo local | Habilitar controle de fluxo local por software (XON/XOFF)
`&K3` | Controle de fluxo local | Habilitar controle de fluxo local por hardware (RTS/CTS)
`&K4` | Controle de fluxo local | Habilitar controle de fluxo local por software (XON/XOFF)
`&L0` ou `&L` | Modo de discagem | Selecionar modo de discagem
`&M0` ou `&M` | Modo de controle de erro | Seleciona o modo assíncrono não-EC (do inglês, Controle de Erro) (o mesmo que `&Q0`)
`&P0` ou `&P` | Taxa de pulso de discagem | Taxa de pulso de discagem de 39% pulso / 61% quebra (U.S./Canada)
`&P1` | Taxa de pulso de discagem | Taxa de pulso de discagem de 33% pulso / 67% quebra (U.K./Hong Kong)
`&Q0` ou `&Q` | Modo de controle de erro | Modo assíncrono não-EC. Sem armazenamento de dados. ASB desabilitado.
`&Q5` | Modo de controle de erro | Seleciona operação EC V.42 (necessita de controle de fluxo)
`&Q6` | Modo de controle de erro | Modo assíncrono com ASB (necessita de controle de fluxo)
`&Q8` | Modo de controle de erro | Seleciona protocolo alternativo de EC (MNP)
`&Q9` | Modo de controle de erro | Compressão de dados condicional: V.42bis = sim, MNP5 = não.
`&S0` ou `&S` | Seleciona ação DSR | Sempre ligado (padrão)
`&S1` | Seleciona ação DSR | Segue a especificação EIA (Ativa seguindo o tom do carro, e até o carro ser perdido)
`&T0` ou `&T` | Auto-teste | Auto-teste específico do modelo em alguns modens
`&U0` ou `&U` | Modulação de código Trellis | Habilita V.32 TCM
`&U1` | Modulação de código Trellis | Desabilita V.32 TCM
`&V0` ou `&V1` | Ver ativa | (e normalmente salva) dos perfis (ou `ATI4`)
`&W0` ou `&W` | Armazenar perfil | Na NVRAM (`&W0`, `&W1`, etc, para múltiplos perfis). Algumas configurações não podem ser armazenadas. Elas frequentemente não são mostradas no `&V` ou `ATI4`.
`&Y0` ou `&Y` | Seleciona configuração carregada ao ligar a máquina | Carrega perfil 0 (padrão)
`&Y1` | Seleciona configuração carregada ao ligar a máquina | Carrega perfil 1
`&Zn=x` | Faz uma reinicialização suave e carrega o perfil de número n | Observe que todos os itens após o `&Z` na linha de comando são ignorados

## Comandos de Barra Invertida e Percentagem

### Comandos de Barra Invertida e Percentagem

Comando | Descrição | Comentários
--- | --- | ---
`\A0` ou `\A` | Tamanho máximo de caracteres no bloco MNP | Máximo de 64 caracteres
`\A1` | Tamanho máximo de caracteres no bloco MNP | Máximo de 128 caracteres
`\A2` | Tamanho máximo de caracteres no bloco MNP | Máximo de 192 caracteres
`\A3` | Tamanho máximo de caracteres no bloco MNP | Máximo de 256 caracteres
`&percnt;C0` ou `&percnt;C` | Compressão de Dados Habilitada/Desabilitada | Desabilitada
`&percnt;C1` | Compressão de Dados Habilitada/Desabilitada | Habilitada para MNP5
`&percnt;C2` | Compressão de Dados Habilitada/Desabilitada | Habilitada para V.42bis (BTLZ)
`&percnt;C3` | Compressão de Dados Habilitada/Desabilitada | Habilitada para MNP5 & V.42bis (BTLZ)
`&percnt;D0` ou `&percnt;D` | Compressão de dados | Tamanho do dicionário de 512 BLTZ
`&percnt;D1` | Compressão de dados | Tamanho do dicionário de 1024 BLTZ
`&percnt;D2` | Compressão de dados | Tamanho do dicionário de 2048 BLTZ
`&percnt;D3` | Compressão de dados | Tamanho do dicionário de 4096 BLTZ
`&percnt;E0` ou `&percnt;E1` | Método de escape | ESCAPE DESABILITADO
`&percnt;E1` | Método de escape | Método `+++AT` (padrão)
`&percnt;E2` | Método de escape | Método `Break` `AT`
`&percnt;E3` | Método de escape | AMBOS os métodos habilitados
`&percnt;E4` | Método de escape | Desabilitado `OK` para `+++`
`&percnt;E5` | Método de escape | Habilitado `OK` para `+++`
`\J0` ou `\J` | Ajuste de Taxa Automática de DTE | Desabilitada
`\J1` | Ajuste de Taxa Automática de DTE | Taxa DTE é ajustada para corresponder ao estado do carro.
`\N0` ou `\N` | Tipo de conexão | Conexão normal (veja abaixo por definições)
`\N1` | Tipo de conexão | Conexão de direção
`\N2` | Tipo de conexão | Conexão auto-confiável MNP
`\N3` | Tipo de conexão | Conexão de auto-confiável
`\N4` | Tipo de conexão | Ligação confiável V.42bis com fase de detecção
`\N5` | Tipo de conexão | Ligação auto-confiável V.42bis com fase de detecção
`\N6` | Tipo de conexão | Ligação confiável V.42 com fase de detecção
`\N7` | Tipo de conexão | Ligação auto-confiável V.42 com fase de detecção

Uma conexão direta é uma conexão simples e direta sem nenhum controle de erros ou compressão de dados. Neste caso, as velocidades computador-modem e modem-modem devem ser idênticas.

Uma conexão normal usa controle de fluxo (seja por software ou hardware) para armazenar os dados sendo enviados e recebidos, de modo que o modem possa transmitir dados em uma taxa diferente da que o computador está atualmente enviando e recebendo. Por exemplo, um computador pode enviar atualmente dados à 57kbps, mas usando a compresão, o modem atualmente somente envia a 28,8kbps. Este é o modo usado pela maioria dos modens.

Uma conexão confiável é um tipo de conexão normal; se, por algum motivo, a compressão de dados ou correção de erros não puder ser estabelecida ou mantida, a conexão será interrompida. (Em essência, um modem sempre verfica se todas as conexões são confiáveis, para interrompê-las caso não sejam)

Do mesmo modo, uma conexão auto-confiável é virtualmente a mesma, exceto que o modem tentará renegociar a conexão para estabelecer uma conexão confiável. Novamente, este é o modo que a maioria dos modens usam.

## Registradores-S

### Registradores S

Registrador | Intervalo | Padrão | Função
--- | --- | --- | ---
`S0` | 0-255 toques | 1-2 | Responde ao número de toques. Não responde se 0.
`S1` | 0-255 toques | 0 | se `S0` for maior que 0 este registrador conta os toques de chegada.
`S2` | 0-127 ASCII | 43 + | Caracter de escape para o modo de comando
`S2` | >127 |  | sem ESC
`S3` | 0-127 ASCII | 13 CR | Caracter de retorno de carro
`S4` | 0-127 ASCII | 10 LF | Caracter de alimentação de linha
`S5` | 0-32, 127 ASCII | 8 BS | Caracter de backspace
`S6` | 2-255 segundos | 2 | Tempo de espera do toque de chamada (para ligações cegas, ver em Xn)
`S7` | 1-255 segundos | 30-60 | Tempo de espera pelo carro remoto
`S8` | 0-255 segundos | 2 | Tempo de pausa para a vírgula usada na discagem
`S9` | 1-255 décimos de segundo | 6 | Tempo de detecção de carro necessário para reconhecimento
`S10` | 1-255 décimos de segundo | 7-14 | Tempo entre a perda do carro e interrupção da ligação
`S11` | 50-255 millisegundos | 70-95 | Duração e espaçamento dos tons na discagem por tom
`S12` | 0-255 1/50 avos do segundo | 50 | Tempo de guarda para pausa ao redor de uma sequência de comando `+++`

`S36`

Opções de recuo quando a correção de erro da ligação falha:

- 0 - Desconectar

- 1 - Estabelecer Conexão Direta

- 3 - Estabelecer Conexão Normal

- 4 - Estabelecer uma conexão MNP se possível, senão desconectar

- 5 - Estabelecer uma conexão MNP se possível, senão Conexão Direta

- 7 - Estabelecer uma conexão MNP se possível, senão conexão Normal

7

Tratamento de Falha na Negociação

`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

Velocidade de Negociação (negociação inicial)

itenss modens possuem dúzias, mesmo centenas de registradores S, mas somente os primeiros doze são aproximadamente padronizados. Eles são mudados com um comando como `ATSn=N`, e examinados com `ATSn?` (&eg; ``AT` `S10``=70` `S1?`` deve dizer para o modem não desligar por sete segundos se ele não ouvir resposta do modem, e retornar o número de vezes que o telefone tocou por último.)