O controle de comunicação em VisualBasic e o método de design de software de comunicação na plataforma Windows são combinados com exemplos específicos para fornecer o programa básico de comunicação.
Em 1992, a Crescent Software Inc. projetou o controle de comunicação do usuário mscomm.vbx especificamente para VB. Ele fornece recursos de comunicação serial para enviar e receber dados através da porta serial. Ele não inclui apenas as funções completadas por todas as 16 funções de comunicação serial no Windows. API e desenvolveu mais atributos de objeto que facilitam o design do usuário para atender às necessidades de diferentes usuários e diferentes negócios. Atualmente, muitos materiais VB domésticos raramente envolvem a introdução deste controle de comunicação. Este artigo apresentará detalhadamente os métodos de controle e programação de comunicação mscomm.vbx e fornecerá um programa de comunicação básico baseado em um exemplo de trabalho.
Descrição do controle de comunicação 1mscomm.vbx
O controle de comunicação mscomm.vbx pode ser adicionado diretamente ao formulário da caixa de ferramentas VB e pode ser usado para comunicação. Se não houver tal controle na caixa de ferramentas, use os controles personalizados de ferramentas para adicionar mscomm.vbx do subdiretório do sistema do Windows à caixa de ferramentas do vb.
1.1 Métodos de comunicação
mscomm.vbx tem 2 maneiras diferentes de lidar e resolver problemas de desenvolvimento e design de vários softwares de comunicação
1. Orientado por eventos. É semelhante à função de retorno de chamada da janela ao escrever software Windows em C/C e é uma maneira poderosa de lidar com problemas. No trabalho real, muitas vezes temos que lidar com muitos eventos relacionados na comunicação. Por exemplo: quando os dados da linha chegam ao final local ou o status da linha CD e da linha do sinal rts muda, somos obrigados a usar os eventos correspondentes para. rastrear e processar. Este controle é usado O evento oncomm é implementado, o que também inclui a detecção e tratamento de erros de comunicação e outros problemas. O valor commevent retorna o evento de comunicação ou código numérico de erro mais recente. Exemplos detalhados de erros e eventos de controles de comunicação incluem:
mscomm-er-break recebeu 1 sinal de interrupção
Tempo limite do sinal mscomm-er-cdtocd
…
mudanças de sinal mscomm-ev-cdcd
…
2. Método de investigação. É responsabilidade do programador ler o valor de commevent e tratar os erros ou eventos que ocorrem. Normalmente, o design de aplicativo simples pode adotar essa abordagem.
1.2 Propriedades dos controles de comunicação
A chave para usar controles de comunicação para compilar programas de comunicação é compreender e definir com precisão as propriedades dos controles de comunicação. mscomm.vbx fornece 27 propriedades sobre controles de comunicação, como:
commport: Define ou retorna o número da porta de comunicação.
configurações: Define ou retorna o formato de comunicação de dados na forma de uma string: taxa de transmissão, paridade, bits de dados e bits de parada.
portopen: Define ou retorna o status da porta de comunicação (incluindo abertura e fechamento de uma porta de comunicação)
…
3. Exemplos
O pano de fundo da aplicação deste programa é o software do sistema de monitoramento automático do precipitador eletrostático dcc95, que resolve o problema de comunicação entre 1 computador industrial (estação mestre) e 32 microcontroladores (subestações). A estrutura da rede de ônibus entre a estação mestra e a subestação adota o padrão de comunicação RS-485 e realiza a comunicação de dados no formato de perguntas e respostas. Como as 32 subestações enviam comandos de comunicação (comandos downlink) para a estação mestra, a estação mestra continua a enviar comandos downlink após receber os comandos de resposta correspondentes (comandos uplink) enviados de volta pelas subestações. De acordo com os requisitos das funções do sistema, a estação mestre precisa enviar dois tipos de comandos: (1) Comando síncrono, que é acionado por um temporizador e enviado uma vez a cada ciclo ls; operador Causado pelo movimento do botão de comando correspondente, ele é enviado aperiodicamente. O software do sistema de monitoramento automático é instalado na estação principal, e o programa de comunicação também é instalado na estação principal como parte do software do sistema de monitoramento automático.
Este artigo lista apenas uma lista básica de programas de demonstração para teste ao depurar programas de comunicação. Durante o teste, um PC foi utilizado como estação principal e outro PC simulou o trabalho de 32 subestações. Os dois PCs utilizaram comunicação por porta serial rs232c. Adicione 1 controle de comunicação, 2 controles de temporizador e 1 controle de botão de comando ao formulário (formulário) do programa de demonstração de comunicação da estação principal. O controle de comunicação (mscomm1) é usado para acessar a porta serial, enviar e receber dados periódicos (); periódico) é usado para controlar a estação mestre para enviar comandos periódicos para cada subestação a cada segundo; o controle do botão de comando (comando não periódico) e o controle do temporizador não periódico (não periódico) são usados para enviar comandos não periódicos; A transmissão de dados usa comunicação orientada a eventos. O atributo rtreshlod é definido de acordo com diferentes comandos de envio, fazendo com que o evento oncomm receba dados.
2.1 Procedimentos de inicialização para cada controle do formulário
Defina os parâmetros de trabalho da porta serial de comunicação, defina o intervalo de interrupção do temporizador periódico para ls e o intervalo de interrupção do temporizador não periódico para 0,5s.
carregamento de subformulário()
mscomm1.commport=2'Selecione a porta serial com2
mscomm1.settings="9600,n8,1"'Taxa de transmissão 9600, sem bit de paridade, 8 bits de dados e 1 bit de parada
mscomm1.inputlen=0'input lerá todo o conteúdo do buffer de recebimento
mscomm1.inbuffersize=1024'Defina o comprimento em bytes do buffer de recebimento
mscomm1.portopen=true'Abra a porta de comunicação
mscomm1.inbuffercount=0'Limpar dados do buffer de envio
mscomm1.outbuffercount=0'Limpa os dados do buffer de recebimento
periodic.inteval=100'Defina o intervalo de tempo ls para que o comando de telemetria seja enviado uma vez a cada ls
nonperiodic.inteval=500'Defina o intervalo de tempo de 0,5s e consulte se o botão de comando está ativado para determinar se deseja enviar comandos periódicos
command-PRessed=false'O botão de comando está inativo
durante-periodic=false'A transmissão de dados do comando periódico ainda não foi iniciada
durante-nonperiodic=false'a transmissão de dados do comando não periódico ainda não foi iniciada
final
2.2 Programa de envio de comando aperiódico
De acordo com o status do botão de comando e o status da transmissão de dados do comando periódico, comandos aperiódicos são enviados no programa de interrupção do temporizador não periódico.
clique de comando subnão periódico()
command-pressed=true'ativação do botão de comando
final
temporizador subnão periódico()
ifduring-periodic=trueoucommand-pressed=false
thenexitsub' Se a transmissão de dados do comando periódico não tiver terminado ou o botão de comando estiver ativado, saia do programa que envia comandos aperiódicos.
command-pressed=false'Botão de comando retorna ao estado inativo
callsenddata(nonperiodic-command)'Envia comandos não periódicos
mscomm1.rthreshold=r-nonperiodic-byte'Após enviar o comando aperiódico, defina o atributo rthreshold para que a estação mestre acione o evento oncomm após receber o número definido de bytes.
final
2.3programa de temporizador periódico
Envie comandos periódicos no programa de interrupção do temporizador periódico:
temporizador subperiódico()
ifduring-nonperiodic=truethenexitsub'Se a transmissão de dados do comando não periódico ainda não terminou, saia do programa para envio de comandos aperiódicos.
durante-periodic=true' define o status da transmissão de dados do comando periódico como em andamento
callsenddata(comando periódico)'enviar comandos periódicos
mscomm1.rthreshold = r-periodic-byte'Após enviar o comando periódico, a estação mestre recebe bytes r-remot-edata-byte, que podem acionar o evento oncomm
final
2.4programa de eventos oncomm
De acordo com o valor de configuração do atributo rthreshold, quando o caractere de byte correspondente é recebido no buffer de recebimento, o evento oncomm é acionado e os dados são recebidos no programa de interrupção.
submscomm1-oncomm()
selectcasemscomm1.commevent'Aqui você pode inserir código para lidar com vários erros ou eventos.
casemscomm-ev-receber
receberstring$=mscomm1.input
selecionecasemscomm1.rthreshold
caser-periodic-byte'dados de resposta do comando periódico
calldisposedata(comando periódico)'processa os dados recebidos
duranteperiódico=falso' define o status de transmissão de dados do comando periódico para terminar
caser-nonperiodic-byte'dados de resposta de comando não periódicos
calldisposedata(nonperiodic-command)'processar dados recebidos
durante-nonperiodic=false' define o status de transmissão de dados do comando não periódico para terminar
seleção final
seleção final
final
Com a atualização contínua da versão vb, o vb se tornará a ferramenta de desenvolvimento de aplicativos mais rápida, fácil de usar e poderosa, e uma das ferramentas de primeira escolha para o desenvolvimento de software de aplicativos cliente/servidor de nível empresarial. ->