Erro: Recebe uma mensagem de erro "Erro lendo o dispositivo de comunicação" quando tenta ler de uma porta COM que estiver em um computador remoto usando o controle MSComm no Visual Basic 6.0

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: 841700
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sintomas
Quando você tenta executar uma operação de leitura em uma porta COM usando o controle MSComm no Microsoft Visual Basic 6.0, você receber a seguinte mensagem de erro:
Erro em tempo de execução '8020':

Erro ao ler o dispositivo de comunicação
Observação Esse problema ocorre apenas se as seguintes condições forem verdadeiras:
  • Você se conectou a um servidor de terminal usando o protocolo RDP (Remote Desktop) 5.2 para redirecionamento de porta.
  • O servidor de terminal está executando o Microsoft Windows Server 2003.
Causa
O controle MSComm usa o recurso "retornar rapidamente" do driver de porta COM do Windows. Se você usar RDP 5.2 para redirecionamento de porta, o status do recurso "retornar rapidamente" é definido como pendente . Essa configuração afeta a funcionalidade do controle MSComm .
Situação
A Microsoft confirmou que este é um bug no Microsoft produtos que estão listados na seção "Aplica-se a".
Mais Informações

Etapas para reproduzir o problema

Observação Certifique-se que a porta COM1 é ativada no computador local e no computador remoto. Além disso, verifique se você tem RDP 5.2 no computador local. Para obter RDP 5.2, visite o seguinte site:
  1. Conecte um modem à porta COM1 do computador local.
  2. Reinicie o computador local.
  3. Instale o driver correto para seu modem.
  4. Se conectar a um computador remoto que está executando o Windows Server 2003 por meio dos serviços de terminal Microsoft usando o protocolo RDP 5.2. Para fazer isso, execute as seguintes etapas:
    1. Clique em Iniciar , clique em Executar , digite mstsc e, em seguida, clique em OK . A caixa de diálogo Conexão de área de trabalho remota é exibida.
    2. Na caixa computador , digite o endereço IP (Internet Protocol) do servidor de terminal que esteja executando Windows Server 2003 e que você deseja se conectar a e, em seguida, clique em Opções .
    3. Clique em Recursos locais guia.
    4. Na seção dispositivos locais , veja se a caixa de seleção portas seriais é selecionada e, em seguida, clique em conectar . A caixa de diálogo Aviso de segurança da conexão da área de trabalho remota é exibida.
    5. Clique em OK . A caixa de diálogo Log On to Windows será exibida.
    6. Na caixa nome de usuário , digite seu nome de usuário.
    7. Na caixa senha , digite sua senha e, em seguida, clique em OK para conectar ao servidor de terminal.
  5. Na unidade C do servidor de terminal, crie um arquivo de texto. Nomeie o arquivo de texto Testfile.txt.
  6. Digite Hello World no Testfile.txt arquivo.
  7. Salve o arquivo Testfile.txt e, em seguida, feche o arquivo.
  8. Inicie o Visual Basic 6.0 no servidor de terminal.
  9. No menu arquivo , clique em New Project . A caixa de diálogo New Project é exibida.
  10. Clique em Standard EXE e, em seguida, clique em OK . Por padrão, um formulário que é denominado Form1 é criado.
  11. No menu Project , clique em referências . A caixa de diálogo referências – Projeto1 será exibida.
  12. Em Referências disponíveis , clique para selecionar a biblioteca Microsoft Scripting Runtime e, em seguida, clique em OK .
  13. No menu Project , clique em componentes . A caixa de diálogo Components será exibida.
  14. Clique na guia controles .
  15. Na guia controles , clique em para selecionar o controle Microsoft Comm Control 6.0 e, em seguida, clique em OK .
  16. Adicione um controle MSComm e um botão de comando para o formulário Form1. Por padrão, o controle MSComm1 MSComm e o botão de comando Command1 são adicionados ao formulário.
  17. No menu Exibir , clique em código para exibir a janela de código.
  18. Na janela de código, adicione o seguinte código.
    Option ExplicitConst HANDSHAKING_NONE = 0Const INPUTMODE_TEXT = 0Private Sub Command1_Click()Dim FilePath As StringDim FileSystem As FileSystemObjectDim oFile As Object'Make sure that you have the Testfile.txt file on drive C of your computer.FilePath = "C:\Testfile.txt"'Create a new FileSystemObject object, and then open the Testfile.txt file for reading.Set FileSystem = New FileSystemObjectSet oFile = FileSystem.OpenTextFile(FilePath, ForReading)'Specify the communication port for the MSComm control.MSComm1.CommPort = 1Call ReadWrite(oFile, MSComm1)End SubSub ReadWrite(File As Object, MyPort As MSComm)'This procedure performs the following tasks:'1.Configures and opens the MyPort port.'2.Reads the contents of the File object, and then stores the data in a buffer that is named OutBuffer.'3.Writes the data from the OutBuffer buffer to the MyPort port.'4.Reads the data from the MyPort port to a buffer that is named InBuffer.    Dim OutBuffer As Variant    Dim InBuffer As Variant        MyPort.Settings = "57600,N,8,1"     ' Configure the port.    MyPort.Handshaking = HANDSHAKING_NONE    MyPort.EOFEnable = False    MyPort.RThreshold = 0    MyPort.SThreshold = 0    MyPort.InputMode = INPUTMODE_TEXT       ' Specify the buffer size.    MyPort.InBufferSize = 1024       ' Open the port.    MyPort.PortOpen = True        ' Read the buffer and transmit each line over the COM port.    Do        'Read each line of data from the file.       OutBuffer = File.ReadLine                ' Configure the port to read the whole buffer.        MyPort.InputLen = 0                ' Write the data, and then read it.        MyPort.Output = OutBuffer        InBuffer = MyPort.Input      Loop While (File.AtEndOfStream = False) ' Close the port.    MyPort.PortOpen = FalseEnd Sub
  19. No menu Executar , clique em Iniciar . O formulário de Form1 aparece.
  20. Clique em Command1 . Você receber a mensagem de erro mencionada na seção "Sintomas".
Referências
Para obter informações adicionais, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
838291Alguns aplicativos não é possível acessar a porta serial no Windows Server 2003
318784MSComm.Input retorna comReadError (8020) com algumas portas seriais
Para obter mais informações, visite os seguintes sites do Microsoft Developer Network (MSDN) da:

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 841700 - Última Revisão: 12/08/2015 07:11:38 - Revisão: 1.4

Microsoft Visual Basic Enterprise Edition for Windows 6.0, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual Basic 6.0 Learning Edition

  • kbnosurvey kbarchive kbmt kbwizard kbserial kbcommport kbbug kberrmsg kbwindowsforms KB841700 KbMtpt
Comentários