Como solucionar problemas de porta de comunicação comum QuickBasic

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 39342
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.
Sumário
Este artigo descreve conselhos de solução de problemas para usar comunicação serial no Microsoft QuickBasic versões 4.0, 4.0b e 4.5, no Microsoft Basic Compiler versões 6.0 e 6.0b para MS-DOS e MS OS/2 e no Microsoft Basic Professional desenvolvimento sistema (PDS) versões 7.0 e 7.1.

Este artigo fornece exemplo de declaração COM OPEN que deve funcionar corretamente. Solucionando problemas de dicas de comunicações adicionais também são fornecidas. Para um artigo relacionado, consulte o seguinte artigo na Base de dados de Conhecimento da Microsoft:
39386Explicações de mensagem de erro ao usar COM1: e COM2:
Mais Informações
Se você tiver problemas ao usar "COM1:"ou"COM2:", tente a instrução a seguir OPEN, que torna Basic como tolerante a falhas como possíveis de problemas relacionados ao hardware:
ABRIR "COM1:300, N, 8, 1, BIN, CD0, CS0, DS0, OP0, RS, TB2048, RB2048" COMO 1
(Este OPEN é acesso FOR RANDOM). A seguir está uma explicação de cada parâmetro recomendado usado nesta instrução OPEN:

  1. Quanto maior a taxa de transmissão taxa, quanto maiores as chances de problemas; portanto, 300 baud é improvável que lhe problemas. 2400 bauds é a velocidade mais alta possível através da maioria das linhas telefônicas, devido à sua capacidade de alta freqüência limitada. 19.200 baud, que requer uma conexão de cabo direto, é mais provável que causar problemas. (Taxas de transmissão possíveis para QuickBasic são 75, 110, 150, 300, 600, 1200, 2400, 1800, 4800, 9600 e 19.200.)
  2. Paridade geralmente não ajuda significativamente; devido a isso, você deve tentar sem paridade (N).

    Para esses dispositivos que necessitam de paridade, você deve usar o PE opção (paridade ativar) na instrução OPEN COM, que é necessário para ativar a verificação de paridade. Quando a opção PE ligar verificação de paridade, um "Erro de E/s de dispositivo" ocorre se os dois programas estão se comunicando tem dois parities diferentes. (Paridade pode ser mesmo, ímpar, nenhum, espaço ou marca). Por exemplo, um "Erro de E/s de dispositivo" ocorre quando dois programas tentam conversar entre si através de uma linha serial usando as duas diferentes COM OPEN instruções a seguir:
          OPEN "COM1:1200,O,7,2,PE" FOR RANDOM AS #1						
    e
          OPEN "COM2:1200,E,7,2,PE" FOR RANDOM AS #2						
    se a opção PE é removida as instruções COM OPEN acima, nenhuma mensagem de erro exibe.
  3. O exemplo acima usa 8 bits de dados e 1 bit de parada. Oito bits de dados requer sem paridade (N), porque o limite de tamanho para Basic quadro de comunicações de dados (10 bits).
  4. BIN (modo binário) é o padrão. Observação: A opção ASC não dá suporte ao protocolo XON/XOFF e os caracteres XON e XOFF são passados sem tratamento especial.
  5. Ignorar o handshaking de hardware geralmente corrige muitos problemas. Portanto, se seu aplicativo não exigir handshaking, você deve tentar desativar ao seguinte hardware linha-verificação:
    CD0 = fica off tempo limite de linha Data Carrier Detect (DCD)
    CS0 = fica off tempo limite de linha para enviar (CTS)
    DS0 = fica off tempo limite de linha de conjunto de dados pronto (DSR)
    OP0 = fica desativar tempo limite para abrir um bem-sucedida
  6. RS suprime a detecção de solicitação para enviar (RTS).
  7. Para problemas relacionados ao buffer, tente aumentar a transmitir e receber tamanhos de buffer acima o padrão de 512 bytes:
    TB2048 = aumenta de tamanho de buffer de transmissão a 2048 bytes
    RB2048 = aumenta o buffer de recebimento dimensionar a 2048 bytes
    Um buffer de recebimento maior pode ajudar a solucionar básicos atrasos causados por instruções como PINTAR, que usam o processador intensively.
A seguir estão dicas importantes adicionais para solucionar problemas de comunicação:

  1. Você deve usar a função INPUT$(x) em conjunto com a função LOC(n) para receber todas as entradas do dispositivo de comunicações (onde "x" é o número de caracteres retornados pelo LOC(n), que é o número de caracteres na fila de entrada aguardando para ser lido. "n"é o número arquivo que você abriu para"COM1:"ou"COM2:").

    Evite usar a instrução de n INPUT # para entrada de porta de comunicações porque INPUT # n aguarda um caractere de retorno (ASCII 13) de carro.

    Evite o uso a instrução de n # GET para comunicação porque GET # n espera preencher o buffer (e saturação de buffer, em seguida, pode ocorrer).

    Além disso, evite usar a instrução de n PUT # para comunicações e use a instrução de n PRINT # em vez disso. Por exemplo, no QuickBasic 4.0b e 4.5, no Basic 6.0 de compilador e 6.0b e no Basic PDS 7.0 e 7.1, usando n PUT,, x $ sintaxe para envio de uma variável de seqüência de caracteres de comprimento variável como o terceiro argumento da instrução PUT # n envia um extra 2 bytes que contém o comprimento da seqüência de caracteres antes da seqüência real. Esses bytes de 2 comprimento enviadas para a porta de comunicações podem confundir o seu programa de recebimento se ele não for projetado para lidar com eles. Nenhum byte de comprimento é enviada com PUT # n, x $ no QuickBasic 4.0. (QuickBasic versões anteriores à 4.0 não oferecem o recurso de usar uma variável como o terceiro argumento da instrução PUT # n.)
  2. Para obter um exemplo de comunicações de dados, consulte o programa de exemplo TERMINAL.BAS que vem no disco para QuickBasic versões 4.0, 4.0b e 4.5, para versões de Microsoft Basic Compiler versão 6.0 e 6.0b e para Microsoft Basic Professional desenvolvimento sistema (PDS) versões 7.0 e 7.1. Muitos problemas de comunicações, na verdade, podem ser devido ao design de código de origem inadequado e fluxo de controle.
  3. Muitos problemas de comunicação só podem ser mostrados em determinadas configurações de hardware e são difíceis de resolver ou duplicados em outros computadores. É recomendável fazer experiências com uma conexão direta (com um cabo de modem nulo curto) em vez de com um link telefone/modem entre remetente e receptor para isolar problemas em uma determinada configuração.
  4. Os esquemas de cabeamento para cabos variam muito. Verifique o cabeamento de pino no seu cabo. Para conexões de cabo direto, um cabo longo ou alta resistência é mais provável dar problemas que um cabo curto, resistência baixa.
  5. Se ambos os "COM1:"e"COM2:"são aberto,"COM2:" serão atendidos pela primeira vez. Taxas de transmissão de alta, "COM1:"pode perder caracteres quando competindo para tempo de processador com"COM2:".
  6. Usando o ON COM GOSUB instrução em vez disso, pesquisa o LOC(n) funciona para detectar comunicações de entrada pode às vezes, contornar o tempo ou armazenamento em buffer problemas causados por atrasos na Basic. Atrasos na Basic podem ser causados pela coleta de lixo espaço de seqüência, PINTAR instruções ou outras operações que usam muito o processador.
  7. Verifique determinadas as linhas de handshaking de hardware apropriado (ou seja CS, DS, CD, etc.) são sendo verificados pelo Basic. Embora desabilitar esses tempos limite (definindo o valor correspondente na instrução OPEN básica para zero) é útil para determinar quais linhas o hardware usa, ele não deve ser considerado um método de finalidade geral para estabelecer comunicações seriais, desde que ignorar handshaking de hardware pode aumentar a possibilidade de um problema de cronometragem que poderia levar a um travar.
Uso de programas comunicações comerciais muitos sofisticados técnicas não encontradas no Microsoft Basic e pode fornecer um melhor desempenho.

Se você precisar melhor desempenho de comunicação que você está obtendo a Basic, você pode desejar tentar Microsoft C. (você pode chamar Microsoft C rotinas de Microsoft QuickBasic 4.0, 4.0b e 4.5, from Microsoft Basic 6.0 de compilador e 6.0b e do Microsoft Basic Professional desenvolvimento sistema (PDS) versões 7.0 e 7.1.) Este é uma excelente referência:
"Do programador de C Guide to Serial Communications" por Joe Campbell, publicado pela SAMS & empresa do Howard w..
QuickBasic 3.0, 4.0, 4.0b e 4.5 implementar comunicações diretas interrupções para as linhas entradas IRQ3 e IRQ4 no chip do controlador 8259 (em vez de chamar interrupções de ROM BIOS).

O seguinte livro fornece uma descrição excelente técnica, nível de hardware de comunicações seriais para o IBM PC:
"Programação de linguagem assembler 8088: O IBM PC" Second Edition por Willen & Krantz, publicado pela SAMS & co. do Howard w. (1983, 1984). Páginas 92-93 e Capítulo 7 (páginas 166 para 188).
QuickBas BasicCom 4.00 4.00b 4.50 6.00 6.00b 7.00 7.10

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 39342 - Última Revisão: 08/16/2005 21:23:02 - Revisão: 2.1

Microsoft QuickBasic 4.0, Microsoft QuickBASIC 4.0b, Microsoft QuickBasic 4.5 for MS-DOS, Microsoft BASIC Compiler 6.0, Microsoft BASIC Compiler 6.0b, Microsoft BASIC Professional Development System 7.0, Microsoft BASIC Professional Development System 7.1

  • kbmt KB39342 KbMtpt
Comentários