Algumas notas sobre o controle MSCOMM
O controle de comunicação MSComm do VB5.0/6 fornece uma série de interfaces de comando de comunicação padrão, que permitem o estabelecimento de conexões de porta serial e podem ser conectadas a outros dispositivos de comunicação (como Modem).
Você também pode enviar comandos, trocar dados e monitorar e responder a vários erros e eventos que podem ocorrer durante o processo de comunicação, permitindo criar
Programa de comunicação dinâmico, eficiente e prático. No entanto, no processo real de design de software de comunicação, o controle MSComm não é tão perfeito e fácil de controlar como se imagina. Especialmente em chinês Wln
Haverá mais problemas ao comunicar sob 95/98. A seguir começaremos com a introdução básica e, em seguida, discutiremos gradualmente os problemas que surgem na programação do controle MSComm e nas técnicas de programação.
1. Comunique-se com o controle MSComm
1. Conhecimento básico de comunicação serial
Geralmente os computadores possuem uma ou mais portas seriais, que são com1, com2,..., essas portas seriais também fornecem dispositivos externos e PC para transmissão de dados e
A passagem da carta. Essas portas seriais atuam como intérpretes entre a CPU e os periféricos. Quando dados de caracteres são enviados da CPU para o periférico, esses dados de caracteres são convertidos em bits seriais
Dados de fluxo; ao receber dados, os dados de fluxo de bits são convertidos em dados de caracteres e passados para a CPU. Além disso, em termos de sistema operacional, o Windows usa um driver de comunicação.
(COMM.DRV) chama funções de API para enviar e receber dados. Quando funções de API são chamadas com controles ou declarações de comunicação, elas são interpretadas por COMM.DRV e passadas para o driver de dispositivo.
Como programador vB, você precisa escrever programas de comunicação. Basta conhecer a interface fornecida pelo controle de comunicação para a função AP1 de comunicação do Windows. Em outras palavras, basta configurar e monitorar o
Apenas confie nas propriedades e eventos do controle.
2. Usando o controle Mscomm
Antes de começar a usar o controle MSComm. Precisa primeiro entender suas propriedades, eventos ou erros
Descrição da propriedade
CommPort define ou retorna o número da porta de comunicação
Configurações define ou retorna a taxa de transmissão, paridade, bits de dados e bits de parada como strings
PortOpen define ou retorna o status da porta de comunicação. As portas também podem ser abertas e fechadas
A entrada retorna e exclui caracteres no buffer de recebimento
A saída grava a string no buffer de envio
A propriedade CommEvent retorna um dos seguintes valores para um evento ou erro de comunicação. Essas constantes também podem ser encontradas na biblioteca de objetos do controle.
Descrição do valor constante
ComEventBreak1001 recebeu um sinal de interrupção
ComEventCTSTO1002ClearToSendTimeout. Ao enviar caracteres, dentro do evento especificado pelo sistema, a linha CTS (ClearToSend) é de baixo nível
ComEventDSRTO1003DataSetReadyTimeout. Ao enviar caracteres, dentro do evento especificado pelo sistema, a linha DSR (DataSetReady) é de baixo nível
Erro de quadro de dados ComEventFrame1004. O hardware detectou um erro no quadro de dados
Estouro de porta ComEventOverrun1006. O caractere no hardware ainda não foi lido, o próximo caractere chega e se perde
ComEventCDTO1007CarrierDetectTime. Ao enviar caracteres, a linha CD (CarrierDetect) fica em nível baixo dentro do evento especificado pelo sistema. CD
Também chamado de RLSD (ReceiveLineSingalDetect, detecção de sinal de linha de recepção)
ComEventRxOver1008 recebe estouro de buffer. Não há espaço no buffer de recebimento
ComEventRxParity1009 Erro de paridade. Erro de paridade detectado por hardware 7
ComEventTxFull1010 O buffer de envio está cheio. Ao enfileirar caracteres de envio, o buffer de envio fica cheio.
ComEventDCB1011 Ocorreu um erro inesperado ao recuperar a porta DCB (DeviceControlBlick).
Os eventos de comunicação incluem as seguintes configurações:
Descrição do valor constante
O número de caracteres no buffer de envio ComEvSend1 é menor que o valor do Limite
ComEvReceive2 recebeu caracteres Rthreshold. Este evento continua a ser gerado até que os dados no buffer de recebimento sejam excluídos usando a propriedade Input.
Linha ComEvCTS3CTS(ClearToSend) alterada
Linha ComEvDSR4DSR(DataSetReady) alterada. Este evento ocorre quando o DSR muda de 1 para 0
A linha ComEvCD5CD (CarrierDetect) muda quando ComEvRing6 detecta um sinal de toque. Alguns URAT(UniversalAsynchronousReciver-
-Transmissores, receptor-transmissor assíncrono universal) não suporta este evento
ComEvEOF7 recebeu um caractere EOF (caractere ASCII 26)
Mensagens de erro (controle MSComm) A tabela a seguir lista as mensagens de erro que o controle MSComm pode capturar:
Descrição do valor constante
ComInvalidPropertyValue380 Valor de propriedade inválido
Propriedade ComSetNotSupported383 somente leitura
Propriedade ComGetNotSupported394 somente leitura
Esta presença é inválida quando a porta ComPortOpen8000 é aberta.
A configuração de tempo limite 8001 deve ser maior que 0
ComPortInvalid8002 Número de porta inválido
Atributos 8003 são válidos apenas em tempo de execução
8004 As propriedades são somente leitura em tempo de execução
A porta ComPortAleadyOpen8005 foi aberta
8006 O identificador do dispositivo é inválido ou não é compatível
8007 A taxa de transmissão do dispositivo não é suportada
8008 O tamanho de byte especificado é inválido
8009 Erro de parâmetro padrão
8010 Hardware indisponível (bloqueado por outros dispositivos)
A função 8011 não pode alocar fila
O dispositivo ComNoOpen8012 não está aberto
8013 O dispositivo já está aberto
8014 A notificação de comunicação não pode ser usada
ComSetCommStateFailed8015 não pode definir o status de comunicação
8016 Não é possível definir a blindagem de eventos de comunicação
ComPortNotOpen8018 Esta presença só é válida quando a porta está aberta
8019 Dispositivo ocupado
ComReadError8020 Erro de leitura do dispositivo de comunicação
ComDCBError8021 Ocorreu um erro interno ao recuperar o bloco de controle do dispositivo de porta
Depois de compreender as propriedades básicas acima, você pode começar a escrever programas de permissão de comunicação. Crie um novo arquivo de projeto em VB5.0/6.0. Adicionar grupo MicrosoftCommControl5.0
Arquivo, adicione o botão Comando ao Formulário Simplificado1 e nomeie-o como CmdTest, nomeie o controle MSComm como MSComm1 e adicione o seguinte código de programa.
PrivateSubcmdTestClick()'Abre a porta serial
MSComml.CommPort=2'Definir Com2
IfMSComml.PortOpen=FalseThen
MSComm1.Settings="9600,n,8,1"'9600 taxa de transmissão, sem paridade, 8 bits de dados, 1 bit de parada
MSComm1.PortOpen=True'Abra a porta serial
Endif
MSComm1.OutBufferCount=0'Limpe o buffer de envio
MSComm1.InBufferCount=0'Deslizar o buffer de recebimento
'Ao enviar dados de caracteres, certifique-se de finalizá-los com um retorno de carro (vbcr)
MSComm1.Output="Thisisaqoodbook!"&vbCr
'Insira o número de telefone ou envie o comando AT
MSComm1.Output="ATDT05778191898,&vbCr
'Ao enviar dados de array de caracteres, observe que ByteArray deve receber um valor antecipadamente
DimByteArrayasbyte()
'Definir array dinâmico
ReDimByteArray(1)
'Redefine o tamanho do array
ByteArray(0)=0
ByteArray(1)=1
MSComm1.Output=ByteArray
Fim Sub
privateSubMScommEvent()
SelectCaseMSComm1.CommEvent
CasecomEvReceive
DimBufferAsVariante
MSComm1.InputLen=0
'Recebe dados binários
MSComm1.InputMode=ComInputModeBinary
Buffer=MSComm1.Input
'Recebe dados do personagem
MSComm1.InputMode=comInputModeText
Buffer=MSComml.Input
Caseelse
Finalizar seleção
Fimsub
(Procedimento 1)
1 2Leia o texto completo na próxima página