# O Conjunto de Comandos de Modem Hayes

Aqui está uma descrição do Conjunto de Comandos Hayes. A maioria dos modems seguem este conjunto de comandos em grande medida. Se você perdeu o manual do seu modem ou nunca teve nenhum, de facto, esta referência poderá ser útil. O autor, por exemplo, descobriu como desligar o altifalante do seu modem: `ATM0` -- Finalmente: Silêncio!

O comando de inicialização do modem consiste numa série de comandos. Ele prepara o modem para as comunicações, configurando algumas funcionalidades como o modo de marcação, as esperas, a detecção do sinal de ocupado, entre muitas outras configurações. Os programas mais recentes de comunicação por modem repõem o comando de inicialização por si de acordo com as opções do menu que selecciona, quais as funcionalidades que activa, &etc;.

Durante vários anos, os modems Hayes foram a norma. Como o campo do fabrico dos modems cresceu, alguns aderiram pelo menos de forma ligeira à norma Hayes. O que se segue é uma lista parcial do conjunto de comandos Hayes (chamados os comandos AT). O conjunto de comandos Hayes poderá ser dividido em quatro grupos:

Conjunto Básico de Comandos

- Um carácter maiúsculo seguido de um dígito. Por exemplo, `M1`.

Conjunto de Comandos Extendidos

- Um & (E comercial) e um carácter maiúsculo seguido de um número. Esta é uma extensão do conjunto de comandos básico. Por exemplo, `&M1`. Repare que o `M1` é diferente do `&M1`.

Conjunto de Comandos Proprietário

- Normalmente iniciados por uma barra invertida (\), ou por um sinal de percentagem (%), estes comandos variam de fabricante para fabricante de modems. Por essa razão, somente alguns desses comandos estão aqui listados.

Comandos de Registos

- `S`r`=`n`` em que o `r` é o número do registo a ser alterado e o `n` é o valor novo que é atribuído.

  Um registo é o termo informático para uma localização física específica na memória. Os modems têm muito pouca memória incorporada. Este quarto conjunto de comandos é usado para introduzir valores num registo (localização de memória) em particular. O registo irá guardar uma variável especial (informação alfanumérica) que será usada pelo modem e pelo programa de comunicação. Por exemplo, o `S7=60` diz ao seu computador para Configurar o registo #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. Tenha isso em atenção quando ler a tabela em baixo!

Aqui estão alguns dos caracteres mais importantes que poderão aparecer no comando de inicialização do modem. Estes caracteres normalmente não deverão ser alterados.

`AT`

- Diz ao modem que se seguem comandos do modem. Isto deverá iniciar cada uma das linhas de comandos.

`Z`

- Repõe o modem no seu estado predefinido

`,` (uma virgula)

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

`^M`

- Envia o carácter de Mudança de Linha que termina a linha actual para o modem. Este é um código de controlo que a maioria dos programa de comunicação traduz como Carriage Return

## O Conjunto Básico de Comandos Hayes

Em ordem alfabética:

## Conjunto Básico de Comandos Hayes

Comando | Descrição | Comentários
`A0` ou `A` | Atende a chamada recebida |
`A/` | Repete o último comando | Não prefixe com o `AT`. O Enter normalmente interrompe.
`B0` ou `B` | Negociação de chamadas | Sequência de Resposta Modo V32/CCITT.
`B1` | Negociação de chamadas | Sequência de Resposta Bell 212A.
`B2` | Negociação de chamadas | Descritivo/Silencioso na Resposta
`D` | Ligar | Liga o número seguinte e executa o início do protocolo no modo de origem. `P` Marcação por Impulsos `T` Marcação por Tons `W` Esperar pelo segundo toque de ligação `,` Fica em pausa durante o tempo definido no registo `S8` (normalmente 2 segundos) `;` Fica no modo de comandos depois da marcação. `!` Modo de comutação (suspende por meio segundo, como quem transfere uma chamada). `L` Marca o último número
`E0` ou `E` | Sem Eco | Não fará eco dos comandos para o computador
`E1` | Eco | Fará eco dos comandos para o computador (para que o utilizador veja o que escreve)
`H0` | Estado do Descanso | No descanso - Suspenso
`H1` | Estado do descanso | Fora do descanso - telefone levantado
`I0` ou `I` | Pesquisa, Informação ou Interrogação | Este comando é muito específico do modelo. O `I0` normalmente devolve um número ou um código, enquanto que os números mais elevados normalmente devolvem informações muito mais úteis.
`L0` ou `L` | Volume do Altifalante. Os modems com controlos de volume não terão estas opções. | Volume baixo ou desligado
`L1` |  | Volume Baixo
`L2` |  | Volume Médio
`L3` |  | Volume Alto
`M0` ou `M` | Altifalante desligado | O `M3` também é normal, mas é diferente de marca para marca
`M1` |  | Altifalante ligado até à portadora remota ser detectada (&ie; até que o outro modem se ouça)
`M2` |  | O altifalante está sempre ligado (os sons dos dados ouvem-se depois do CONNECT)
`N0` ou `N` | Velocidade da Negociação | Negoceia só a à velocidade indicada no registo `S37`
`N1` |  | A negociação é feita a uma velocidade maior do que o registo `S37`
`O0` ou `O` | Volta a 'Online' | Veja também o `X1`, dado que a detecção do toque de chamada poderá estar activa.
`O1` |  | Volta a 'Online' depois de uma sequência de equalização
`Q0` ou `Q1` | Volume Silencioso | Desligado - Mostra os códigos do resultados, o utilizador vê as respostas dos comandos (⪚ `OK`)
`Q1` | Volume Silencioso | Ligado - Os códigos do resultado são suprimidos e o utilizador não vê as respostas.
`S`n`?` |  | Pergunta o conteúdo do registo S `n`
`S`n`=`r`` | Gravar | Guarda o valor de `r` no registo S `n`
`V0` ou `V` | Descritivo | Códigos de resultado numéricos
`V1` |  | Códigos de resultado em inglês (⪚ `CONNECT` (ligado), `BUSY` (ocupado), `NO CARRIER` (sem portadora), &etc;)
`X0` ou `X` | Smartmodem | Códigos resultado 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 do toque de chamada (o que evita a ligação cega e algumas vezes evita o `AT0`)
`X3` |  | Normalmente adiciona a detecção do sinal de ocupado
`X4` |  | Normalmente adiciona tanto a detecção do toque de chamada como o de ocupado
`Z0` ou `Z` | Reiniciar | Repõe o modem na configuração gravada. 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 Extendido de Comandos Hayes

Comandos com E-Comercial

## O Conjunto Extendido de Comandos Hayes

Comando | Descrição | Comentários
`&B0` ou `&B` | Parâmetros de Reaprendizagem | Desactiva a função de reaprendizagem automática
`&B1` | Parâmetros de Reaprendizagem | Activa a função de reaprendizagem automática
`&B2` | Parâmetros de Reaprendizagem | Activa a reaprendizagem automática, mas desliga-a se não houver melhoria da linha no período definido pelo registo `S7`
`&C0` ou `&C1` | Detecção da portadora | Sinal sempre activo
`&C1` | Detecção da portadora | Indica a portadora remota (normalmente predefinido)
`&D0` ou `&D` | Data Terminal Ready - Terminal de Dados Pronto (DTR) | Sinal ignorado (Isto é específico do modelo, por isso deverá ver as informações sobre ele!)
`&D1` | Data Terminal Ready - Terminal de Dados Pronto (DTR) | Se o DTR vier de Ligado para Desligado, o modem entra no modo de comandos (Só em alguns modems)
`&D2` | Data Terminal Ready - Terminal de Dados Pronto (DTR) | Alguns modems suspendem-se com a transição de Ligado para Desligado do DTR (Esta é a predefinição normal)
`&D3` | Data Terminal Ready - Terminal de Dados Pronto (DTR) | Suspende e reinicia o modem, voltando ao modo de comandos com o DTR
`&F0` ou `&F` | Predefinições de fábrica | Predefinições genéricas compatíveis com o Hayes. Esta é normalmente uma boa coisa para usar no seu comando de inicialização, dado 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 (Dado que você nem sempre sabe o que é que o `&F2` da marca X realmente altera). Por outro lado, poupa o trabalho de tentar as outras opções em baixo; muitos dos problemas das pessoas podem ser resolvidos se substituir um comando de inicialização complicado com um simples `&F2` ou algo semelhante. Contudo, se você estiver a criar um comando de inicialização, é melhor começar com um `&F` simples e não usar a forma personalizada das predefinições.
`&F1` | Predefinições de Fábrica | Os valores por omissão destinados para um utilizador de um PC compatível com a IBM
`&F2` | Predefinições de Fábrica | Os valores por omissão para um Mac com negociação por 'software'
`&F3` | Predefinições de Fábrica | Os valores por omissão para um Mac com negociação por 'hardware'
`&G0` ou `&G` | Tons de guarda | Desactiva os tons de guarda
`&K0` ou `&K` | Controlo de fluxo local | Desactiva o controlo de fluxo local
`&K1` | Controlo de fluxo local | Activa o controlo de fluxo local por 'hardware' com o RTS/CTS
`&K2` | Controlo de fluxo local | Activa o controlo de fluxo local por 'software' com o XON/XOFF
`&K3` | Controlo de fluxo local | Activa o controlo de fluxo local por 'hardware' com o RTS/CTS
`&K4` | Controlo de fluxo local | Activa o controlo de fluxo local por 'software' com o XON/XOFF
`&L0` ou `&L` | Modo de marcação | Selecciona o modo de marcação
`&M0` ou `&M` | Modo de controlo de erros | Selecciona o modo assíncrono sem EC (correcção de erros) (é o mesmo que o `&Q0`)
`&P0` ou `&P` | Relação da marcação por impulsos | A marcação por impulsos nos E.U.A./Canadá têm uma relação de 39% marcação / 61% quebra
`&P1` | Relação da marcação por impulsos | A marcação por impulsos da G.B./Hong Kong têm uma relação de 33% marcação / 67% quebra
`&Q0` ou `&Q` | Modo de controlo de erros | Modo assíncrono sem EC (correcção de erros). Sem armazenamento temporário de dados. ASB desactivado.
`&Q5` | Modo de controlo de erros | Selecciona a operação com EC (correcção de erros) do V.42 (necessita de controlo de fluxo)
`&Q6` | Modo de controlo de erros | Modo assíncrono com ASB (necessita de controlo de fluxo)
`&Q8` | Modo de controlo de erros | Selecciona o protocolo de EC (correcção de erros) alternativo (MNP)
`&Q9` | Modo de controlo de erros | Compressão de dados condicional: V.42bis = sim, MNP5 = não.
`&S0` ou `&S` | Selecção da acção de DSR | Sempre activa (por omissão)
`&S1` | Selecção da acção de DSR | Segue a especificação da EIA (Activa a seguir ao tom da portadora e até esta ser perdida)
`&T0` ou `&T` | Teste automático | Efectua um teste ao dispositivo na maioria dos modems
`&U0` ou `&U` | Modulação de código Trellis | Activa a TCM do V.32
`&U1` | Modulação de código Trellis | Desactiva a TCM do V.32
`&V0` ou `&V1` | Ver as configuração activas | (e normalmente gravadas) dos perfis (ou `ATI4`
`&W0` ou `&W` | Guardar o perfil | Na NVRAM (`&W0`, `&W1` etc. para os vários perfis) Algumas configurações não podem ser gravadas. Estas normalmente não são apresentadas no `&V` ou no `ATI4`
`&Y0` ou `&Y` | Selecciona a configuração carregada no arranque | Carrega o perfil 0 (por omissão)
`&Y1` | Selecciona a configuração carregada no arranque | Carrega o perfil 1
`&Z`n`=`x`` | Reinicialização rápida com carregamento do perfil gravado número `n` | Tenha em atenção que todos os itens a seguir ao `&Z` na linha de comandos são ignorados

## Comandos da Barra Invertida e do Sinal de Percentagem

Comando | Descrição | Comentários
`\A0` ou `\A` | Tamanho máximo do bloco de MNP em caracteres | máximo de 64 caracteres
`\A1` | Tamanho máximo do bloco de MNP em caracteres | máximo de 128 caracteres
`\A2` | Tamanho máximo do bloco de MNP em caracteres | máximo de 192 caracteres
`\A3` | Tamanho máximo do bloco de MNP em caracteres | máximo de 256 caracteres
`%C0` ou `%C` | Activação/Desactivação da Compressão dos Dados | Desactivado
`%C1` | Activação/Desactivação da Compressão dos Dados | MNP5 activo
`%C2` | Activação/Desactivação da Compressão dos Dados | V.42bis (BTLZ) Activo
`%C3` | Activação/Desactivação da Compressão dos Dados | MNP5 & V.42bis (BTLZ) Activado
`%D0` ou `%D` | Compressão de dados | tamanho do dicionário BLTZ igual a 512
`%D1` | Compressão de dados | tamanho do dicionário BLTZ igual a 1024
`%D2` | Compressão de dados | tamanho do dicionário BLTZ igual a 2048
`%D3` | Compressão de dados | tamanho do dicionário BLTZ igual a 4096
`%E0` ou `%E1` | Método de escapes | ESCAPE DESACTIVADO
`%E1` | Método de escapes | método `+++AT` (por omissão)
`%E2` | Método de escapes | Método `AT` de `Break` (quebra)
`%E3` | Método de escapes | AMBOS os métodos activos
`%E4` | Método de escapes | Desactiva o `OK` para o `+++`
`%E5` | Método de escapes | Activa o `OK` para o `+++`
`\J0` ou `\J` | Ajuste Automático da Taxa do DTE | Desactivado
`\J1` | Ajuste Automático da Taxa do DTE | A taxa do DTE é ajustada para corresponder à taxa da portadora.
`\N0` ou `\N` | Tipo de ligação | Ligação normal (ver abaixo a definição)
`\N1` | Tipo de ligação | Ligação directa
`\N2` | Tipo de ligação | Ligação fiável MNP automática
`\N3` | Tipo de ligação | Ligação fiável automática
`\N4` | Tipo de ligação | Ligação fiável V.42bis com detecção de fase
`\N5` | Tipo de ligação | Ligação fiável V.42bis automática com detecção de fase
`\N6` | Tipo de ligação | Ligação fiável V.42 com detecção de fase
`\N7` | Tipo de ligação | Ligação fiável V.42 automática com detecção de fase

Uma ligação directa é uma ligação simples sem qualquer correcção de erros ou compressão de dados. Neste caso, as velocidades computador-modem e modem-modem deverão ser idênticas.

Uma ligação normal usa o controlo de fluxo (quer por 'software' quer por 'hardware') para colocar em 'buffer' os dados a enviar ou a receber, de modo a que o modem possa transmitir os dados a uma taxa diferente da que o computador efectivamente os envia ou recebe. Por exemplo, um computador poderá enviar os dados actuais a 57kbps, mas usando a compressão, o modem envia de facto apenas 28,8kbps. Este é modo usado pela maioria dos modems.

Uma ligação fiável é um tipo de ligação normal; se, por alguma razão, a compressão de dados ou a correcção de erros não puderem ser estabelecidas ou mantidas, a ligação suspender-se-á (em resumo, um modem desse tipo garante que todas as ligações são fiáveis, na medida em que suspende a ligação se esta não for fiável).

Da mesma forma, uma ligação fiável automática é mais ou menos o mesmo, excepto que o modem tentará negociar de novo a ligação de forma a estabelecer uma ligação fiável. Mais uma vez, este é o modo que a maioria dos modems usa.

## Registos-S

## Registos S

Registo | Intervalo | Predefinição | Função
`S0` | 0-255 toques | 1-2 | Responder no número de toque indicado. Não responder se for igual a 0
`S1` | 0-255 toques | 0 | Se o `S0` for maior que 0, este registo conta os toques recebidos.
`S2` | 0-127 ASCII | 43 + | Carácter de escape para o modo de comandos
`S2` | >127 |  | sem ESC
`S3` | 0-127 ASCII | 13 CR | Carácter de fim-de-linha
`S4` | 0-127 ASCII | 10 LF | Carácter de mudança de linha
`S5` | 0-32, 127 ASCII | 8 BS | Carácter de remoção do carácter anterior
`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 para a portadora remota
`S8` | 0-255 segundos | 2 | Tempo de pausa da vírgula usada na chamada
`S9` | 1-255 1/10 segundos | 6 | Tempo de detecção da portadora necessário para o reconhecimento
`S10` | 1-255 1/10 segundos | 7-14 | Tempo entre a perda da portadora e a suspensão
`S11` | 50-255 milisegundos | 70-95 | Duração e intervalo entre os tons na marcação por tons
`S12` | 0-255 1/50 segundos | 50 | Tempo de guarda para a pausa entre as sequências de comandos do `+++`
`S36` | Opções de substituição quando a ligação com correcção de erros falha: 0 - Desligar 1 - Estabelecer Ligação Directa 3 - Estabelecer Ligação Normal 4 - Estabelecer uma ligação MNP se possível, caso contrário desligar 5 - Estabelecer uma ligação MNP se possível, caso contrário uma Ligação Directa. 7 - Estabelecer uma ligação MNP se possível, caso contrário uma Ligação Normal. | 7 | Tratamento da Falha de 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 da Negociação (Negociação inicial)

Muitos dos modems têm dezenas, até centenas, de registos S, mas só a primeira dúzia ou duas é que são relativamente normalizadas. Elas são alteradas com um comando do tipo `ATS`n`=`N``, e é analisada com o `ATS`n`?` (⪚ o ``AT` `S10``=70` `S1?`` iria dizer ao modem para não suspender durante sete segundos se não ouvir o modem de resposta, e devolve o número de vezes que o telefone tocou da última vez).