# 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 Estendidos

- 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 porcentagem (%), 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

- `S`r`=`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

`,` (uma 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ário
`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` | Retornar 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 veem as respostas dos comandos (⪚ `OK`)
`Q1` | Modo Silencioso | Ligado - Códigos de resultado são suprimidos, usuários não veem respostas.
`S`n`?` |  | Consulta o conteúdo do registrador S de número `n`
`S`n`=`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 (⪚ `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 (⪚ `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 detecçã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 Estendidos Hayes

Comandos &

## O Conjunto de Comandos Estendidos Hayes

Comando | Descrição | Comentário
`&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
`&Z`n`=`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 Porcentagem

Comando | Descrição | Comentário
`\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
`%C0` ou `%C` | Compressão de Dados Habilitada/Desabilitada | Desabilitada
`%C1` | Compressão de Dados Habilitada/Desabilitada | Habilitada para MNP5
`%C2` | Compressão de Dados Habilitada/Desabilitada | Habilitada para V.42bis (BTLZ)
`%C3` | Compressão de Dados Habilitada/Desabilitada | Habilitada para MNP5 & V.42bis (BTLZ)
`%D0` ou `%D` | Compressão de dados | Tamanho do dicionário de 512 BLTZ
`%D1` | Compressão de dados | Tamanho do dicionário de 1024 BLTZ
`%D2` | Compressão de dados | Tamanho do dicionário de 2048 BLTZ
`%D3` | Compressão de dados | Tamanho do dicionário de 4096 BLTZ
`%E0` ou `%E1` | Método de escape | ESCAPE DESABILITADO
`%E1` | Método de escape | Método `+++AT` (padrão)
`%E2` | Método de escape | Método `Break` `AT`
`%E3` | Método de escape | AMBOS os métodos habilitados
`%E4` | Método de escape | Desabilitado `OK` para `+++`
`%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 compressã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 verifica 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 X`n`)
`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 milissegundos | 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)

Muitos modems possuem dúzias, ou até mesmo centenas de registradores S, mas somente os primeiros doze são aproximadamente padronizados. Eles são mudados com um comando como `ATS`n`=`N``, e examinados com `ATS`n`?` (⪚ ``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.)