Quelques notes sur le contrôle MSCOMM
Le contrôle de communication MSComm de VB5.0/6 fournit une série d'interfaces de commande de communication standard, qui permettent l'établissement de connexions de port série et peuvent être connectées à d'autres appareils de communication (tels qu'un modem).
Vous pouvez également envoyer des commandes, échanger des données, surveiller et répondre à diverses erreurs et événements pouvant survenir au cours du processus de communication, ce qui vous permet de créer du duplex intégral et des événements.
Programme de communication dynamique, efficace et pratique. Cependant, dans le processus de conception actuel du logiciel de communication, le contrôle MSComm n'est pas aussi parfait et facile à contrôler qu'on l'imagine. Surtout en chinois Wln
Il y aura plus de problèmes lors de la communication sous 95/98. Ce qui suit commencera par l'introduction de base, puis discutera progressivement des problèmes qui se posent lors de la programmation du contrôle MSComm et des techniques de programmation.
1. Communiquer avec le contrôle MSComm
1. Connaissance de base de la communication série
Généralement, les ordinateurs disposent d'un ou plusieurs ports série, qui sont com1, com2,..., ces ports série fournissent également des périphériques externes et un PC pour la transmission de données et
Le passage de la lettre. Ces ports série servent d'interprètes entre le processeur et les périphériques. Lorsque les données de caractères sont envoyées du CPU au périphérique, ces données de caractères sont converties en bits série.
Données de flux ; lors de la réception de données, les données de flux binaire sont converties en données de caractères et transmises au processeur. De plus, en termes de système d'exploitation, Windows utilise un pilote de communication.
(COMM.DRV) appelle des fonctions API pour envoyer et recevoir des données. Lorsque les fonctions API sont appelées avec des contrôles de communication ou des déclarations, elles sont interprétées par COMM.DRV et transmises au pilote de périphérique.
En tant que programmeur vB, vous devez écrire des programmes de communication. Il vous suffit de connaître l'interface fournie par le contrôle de communication avec la fonction de communication Windows AP1. En d'autres termes, il suffit de configurer et de surveiller le
Faites simplement confiance aux propriétés et aux événements du contrôle.
2. Utilisation du contrôle Mscomm
Avant de commencer à utiliser le contrôle MSComm. Besoin de d'abord comprendre ses propriétés, événements ou erreurs
Description du bien
CommPort définit ou renvoie le numéro du port de communication
Paramètres définit ou renvoie le débit en bauds, la parité, les bits de données et les bits d'arrêt sous forme de chaînes
PortOpen définit ou renvoie l'état du port de communication. Les ports peuvent également être ouverts et fermés
L'entrée renvoie et supprime des caractères dans le tampon de réception
La sortie écrit la chaîne dans le tampon d'envoi
La propriété CommEvent renvoie l'une des valeurs suivantes pour un événement ou une erreur de communication. Ces constantes se trouvent également dans la bibliothèque d'objets du contrôle.
Description de la valeur constante
ComEventBreak1001 a reçu un signal d'arrêt
ComEventCTSTO1002ClearToSendTimeout. Lors de l'envoi de caractères, dans le cadre de l'événement spécifié par le système, la ligne CTS (ClearToSend) est de niveau bas
ComEventDSRTO1003DataSetReadyTimeout. Lors de l'envoi de caractères, dans le cadre de l'événement spécifié par le système, la ligne DSR (DataSetReady) est de niveau bas
Erreur de trame de données ComEventFrame1004. Le matériel a détecté une erreur de trame de données
Débordement de port ComEventOverrun1006. Le caractère dans le matériel n'a pas encore été lu, le caractère suivant arrive et est perdu
ComEventCDTO1007CarrierDetectTime. Lors de l'envoi de caractères, la ligne CD (CarrierDetect) est de niveau bas dans l'événement spécifié par le système. CD
Également appelé RLSD (ReceiveLineSingalDetect, détection du signal de ligne de réception)
ComEventRxOver1008 reçoit un débordement de tampon. Pas d'espace dans le tampon de réception
ComEventRxParity1009 Erreur de parité. Erreur de parité détectée par le matériel 7
ComEventTxFull1010 Le tampon d'envoi est plein. Lors de la mise en file d'attente des caractères d'envoi, le tampon d'envoi est plein.
ComEventDCB1011 Une erreur inattendue s'est produite lors de la récupération du port DCB (DeviceControlBlick).
Les événements de communication incluent les paramètres suivants :
Description de la valeur constante
Le nombre de caractères dans le tampon d'envoi ComEvSend1 est inférieur à la valeur Seuil
ComEvReceive2 a reçu des caractères Rthreshold. Cet événement continue d'être généré jusqu'à ce que les données du tampon de réception soient supprimées à l'aide de la propriété Input.
La ligne ComEvCTS3CTS (ClearToSend) a été modifiée
La ligne ComEvDSR4DSR(DataSetReady) a été modifiée. Cet événement se produit lorsque le DSR passe de 1 à 0
La ligne ComEvCD5CD (CarrierDetect) change lorsque ComEvRing6 détecte une sonnerie. Certains URAT(UniversalAsynchronousReciver-
-Transmetteurs, récepteur-émetteur asynchrone universel) ne prend pas en charge cet événement
ComEvEOF7 a reçu un caractère EOF (caractère ASCII 26)
Messages d'erreur (contrôle MSComm) Le tableau suivant répertorie les messages d'erreur que le contrôle MSComm peut capturer :
Description de la valeur constante
ComInvalidPropertyValue380 Valeur de propriété invalide
Propriété ComSetNotSupported383 en lecture seule
Propriété ComGetNotSupported394 en lecture seule
Cette présence n'est pas valide lorsque le port ComPortOpen8000 est ouvert.
Le paramètre de délai d'attente 8001 doit être supérieur à 0
ComPortInvalid8002 Numéro de port invalide
Les attributs 8003 ne sont valides qu'au moment de l'exécution
8004 Les propriétés sont en lecture seule au moment de l'exécution
Le port ComPortAleadyOpen8005 a été ouvert
8006 L'identifiant de l'appareil n'est pas valide ou n'est pas pris en charge
8007 Le débit en bauds de l'appareil n'est pas pris en charge
8008 La taille d'octet spécifiée n'est pas valide
8009 Erreur de paramètre par défaut
8010 Matériel indisponible (verrouillé par d'autres appareils)
La fonction 8011 ne peut pas allouer la file d'attente
Le périphérique ComNoOpen8012 n'est pas ouvert
8013 L'appareil est déjà ouvert
8014 La notification de communication ne peut pas être utilisée
ComSetCommStateFailed8015 ne peut pas définir l'état de la communication
8016 Impossible de définir la protection contre les événements de communication
ComPortNotOpen8018 Cette présence n'est valable que lorsque le port est ouvert
8019 Appareil occupé
ComReadError8020 Erreur de lecture du périphérique de communication
ComDCBError8021 Une erreur interne s'est produite lors de la récupération du bloc de contrôle du périphérique portuaire
Après avoir compris les propriétés de base ci-dessus, vous pouvez commencer à écrire des programmes d'autorisation de communication. Créez un nouveau fichier de projet dans VB5.0/6.0. Ajouter un groupe MicrosoftCommControl5.0
Fichier, ajoutez le bouton de commande à Simplified Form1 et nommez-le CmdTest, nommez le contrôle MSComm MSComm1 et ajoutez le code de programme suivant.
PrivateSubcmdTestClick()'Ouvrez le port série
MSComml.CommPort=2'Set Com2
IfMSComml.PortOpen=FalseThen
MSComm1.Settings="9600,n,8,1"'Débit en bauds de 9600, pas de parité, 8 bits de données, 1 bit d'arrêt
MSComm1.PortOpen=True'Ouvre le port série
Fin
MSComm1.OutBufferCount=0'Effacer le tampon d'envoi
MSComm1.InBufferCount=0'glissez le tampon de réception
'Lors de l'envoi de données de caractères, assurez-vous de les terminer par un retour chariot (vbcr)
MSComm1.Output="Ceciest un bon livre !"&vbCr
'Éclatez le numéro de téléphone ou envoyez la commande AT
MSComm1.Output="ATDT05778191898,&vbCr
'Lors de l'envoi de données de tableau de caractères, notez que ByteArray doit se voir attribuer une valeur à l'avance
DimByteArrayasbyte()
'Définir un tableau dynamique
ReDimByteArray(1)
'Redéfinir la taille du tableau
OctetArray(0)=0
OctetArray(1)=1
MSComm1.Output=ByteArray
EndSub
privateSubMScommEvent()
SelectCaseMSComm1.CommEvent
CasecomEvReceive
DimBufferAsVariant
MSComm1.InputLen=0
'Recevoir des données binaires
MSComm1.InputMode=ComInputModeBinary
Tampon=MSComm1.Input
'Recevoir les données du personnage
MSComm1.InputMode=comInputModeText
Tampon=MSComml.Input
Caseelse
FinSélectionner
Sous-titre
(Procédure 1)
1 2Lire le texte intégral à la page suivante