Einige Hinweise zur MSCOMM-Steuerung
Die MSComm-Kommunikationssteuerung von VB5.0/6 bietet eine Reihe von Standard-Kommunikationsbefehlsschnittstellen, die den Aufbau serieller Portverbindungen ermöglichen und mit anderen Kommunikationsgeräten (z. B. Modem) verbunden werden können.
Sie können außerdem Befehle senden, Daten austauschen sowie verschiedene Fehler und Ereignisse überwachen und darauf reagieren, die während des Kommunikationsprozesses auftreten können, sodass Sie ereignisgesteuert Vollduplex erstellen können
Dynamisches, effizientes und praktisches Kommunikationsprogramm. Im tatsächlichen Entwurfsprozess der Kommunikationssoftware ist die MSComm-Steuerung jedoch nicht so perfekt und einfach zu steuern, wie man es sich vorgestellt hat. Besonders im chinesischen Wln
Bei der Kommunikation unter 95/98 wird es mehr Probleme geben. Im Folgenden wird mit der grundlegenden Einführung begonnen und anschließend schrittweise auf die Probleme eingegangen, die bei der Programmierung der MSComm-Steuerung und den Programmiertechniken auftreten.
1. Kommunizieren Sie mit der MSComm-Steuerung
1. Grundkenntnisse der seriellen Kommunikation
Im Allgemeinen verfügen Computer über einen oder mehrere serielle Anschlüsse, nämlich com1, com2, .... Diese seriellen Anschlüsse stellen auch externe Geräte und PCs für die Datenübertragung bereit
Die Passage des Briefes. Diese seriellen Schnittstellen fungieren als Dolmetscher zwischen der CPU und den Peripheriegeräten. Wenn Zeichendaten von der CPU an das Peripheriegerät gesendet werden, werden diese Zeichendaten in serielle Bits umgewandelt
Stream-Daten; beim Empfang von Daten werden die Bitstream-Daten in Zeichendaten umgewandelt und an die CPU übergeben. Darüber hinaus verwendet Windows einen Kommunikationstreiber
(COMM.DRV) ruft API-Funktionen zum Senden und Empfangen von Daten auf. Wenn API-Funktionen mit Kommunikationssteuerungen oder -deklarationen aufgerufen werden, werden sie von COMM.DRV interpretiert und an den Gerätetreiber übergeben.
Als vB-Programmierer müssen Sie Kommunikationsprogramme schreiben. Sie müssen lediglich die Schnittstelle kennen, die die Kommunikationssteuerung zur Windows-Kommunikations-AP1-Funktion bereitstellt. Mit anderen Worten: Richten Sie einfach das ein und überwachen Sie es
Vertrauen Sie einfach den Eigenschaften und Ereignissen des Steuerelements.
2. Verwenden der Mscomm-Steuerung
Bevor Sie mit der Verwendung des MSComm-Steuerelements beginnen. Zuerst müssen Sie die Eigenschaften, Ereignisse oder Fehler verstehen
Objektbeschreibung
CommPort legt die Kommunikationsportnummer fest oder gibt sie zurück
Mit den Einstellungen werden Baudrate, Parität, Datenbits und Stoppbits als Zeichenfolgen festgelegt oder zurückgegeben
PortOpen legt den Status des Kommunikationsports fest oder gibt ihn zurück. Ports können auch geöffnet und geschlossen werden
Die Eingabe gibt Zeichen im Empfangspuffer zurück und löscht sie
Output schreibt den String in den Sendepuffer
Die CommEvent-Eigenschaft gibt einen der folgenden Werte für ein Kommunikationsereignis oder einen Kommunikationsfehler zurück. Diese Konstanten sind auch in der Objektbibliothek des Steuerelements zu finden.
Beschreibung des konstanten Werts
ComEventBreak1001 hat ein Unterbrechungssignal empfangen
ComEventCTSTO1002ClearToSendTimeout. Beim Senden von Zeichen innerhalb des vom System festgelegten Ereignisses ist die CTS-Leitung (ClearToSend) auf niedrigem Pegel
ComEventDSRTO1003DataSetReadyTimeout. Beim Senden von Zeichen innerhalb des vom System angegebenen Ereignisses ist die DSR-Leitung (DataSetReady) auf niedrigem Pegel
ComEventFrame1004 Datenrahmenfehler. Die Hardware hat einen Datenrahmenfehler erkannt
ComEventOverrun1006 Portüberlauf. Das Zeichen in der Hardware wurde noch nicht gelesen, das nächste Zeichen kommt und geht verloren
ComEventCDTO1007CarrierDetectTime. Beim Senden von Zeichen befindet sich die CD-Leitung (CarrierDetect) innerhalb des vom System festgelegten Ereignisses auf niedrigem Pegel. CD
Auch RLSD (ReceiveLineSingalDetect, Empfangsleitungssignalerkennung) genannt.
ComEventRxOver1008 Empfangspufferüberlauf. Kein Platz im Empfangspuffer
ComEventRxParity1009 Paritätsfehler. Hardware hat Paritätsfehler 7 erkannt
ComEventTxFull1010 Der Sendepuffer ist voll. Während Sendezeichen in die Warteschlange gestellt werden, ist der Sendepuffer voll.
ComEventDCB1011 Beim Abrufen des Port-DCB (DeviceControlBlick) ist ein unerwarteter Fehler aufgetreten.
Kommunikationsereignisse umfassen die folgenden Einstellungen:
Beschreibung des konstanten Werts
Die Anzahl der Zeichen im ComEvSend1-Sendepuffer ist niedriger als der Sthreshold-Wert
ComEvReceive2 hat Rthreshold-Zeichen empfangen. Dieses Ereignis wird so lange generiert, bis die Daten im Empfangspuffer mithilfe der Input-Eigenschaft gelöscht werden.
ComEvCTS3CTS(ClearToSend)-Zeile geändert
ComEvDSR4DSR(DataSetReady)-Zeile geändert. Dieses Ereignis tritt auf, wenn DSR von 1 auf 0 wechselt
Die ComEvCD5CD-Leitung (CarrierDetect) ändert sich, wenn ComEvRing6 ein Rufsignal erkennt. Einige URAT(UniversalAsynchronousReciver-
-Transmitter, Universal Asynchronous Receiver-Transmitter) unterstützt dieses Ereignis nicht
ComEvEOF7 hat ein EOF-Zeichen empfangen (ASCII-Zeichen 26)
Fehlermeldungen (MSComm-Steuerelement) In der folgenden Tabelle sind die Fehlermeldungen aufgeführt, die das MSComm-Steuerelement erfassen kann:
Beschreibung des konstanten Werts
ComInvalidPropertyValue380 Ungültiger Eigenschaftswert
ComSetNotSupported383-Eigenschaft schreibgeschützt
ComGetNotSupported394-Eigenschaft schreibgeschützt
Diese Präsenz ist ungültig, wenn der ComPortOpen8000-Port geöffnet ist.
8001-Timeout-Einstellung muss größer als 0 sein
ComPortInvalid8002 Ungültige Portnummer
8003-Attribute sind nur zur Laufzeit gültig
8004 Eigenschaften sind zur Laufzeit schreibgeschützt
Der ComPortAleadyOpen8005-Port wurde geöffnet
8006 Gerätekennung ist ungültig oder wird nicht unterstützt
8007 Die Baudrate des Geräts wird nicht unterstützt
8008 Die angegebene Bytegröße ist ungültig
8009 Standardparameterfehler
8010 Hardware nicht verfügbar (durch andere Geräte gesperrt)
8011 Funktion kann Warteschlange nicht zuordnen
ComNoOpen8012-Gerät ist nicht geöffnet
8013 Das Gerät ist bereits geöffnet
8014 Kommunikationsbenachrichtigung kann nicht verwendet werden
ComSetCommStateFailed8015 kann den Kommunikationsstatus nicht festlegen
8016 Die Abschirmung von Kommunikationsereignissen konnte nicht eingestellt werden
ComPortNotOpen8018 Diese Präsenz ist nur gültig, wenn der Port geöffnet ist
8019 Gerät beschäftigt
ComReadError8020 Lesefehler des Kommunikationsgeräts
ComDCBError8021 Beim Abrufen des Portgeräte-Steuerblocks ist ein interner Fehler aufgetreten
Nachdem Sie die oben genannten Grundeigenschaften verstanden haben, können Sie mit dem Schreiben von Kommunikationsberechtigungsprogrammen beginnen. Erstellen Sie eine neue Projektdatei in VB5.0/6.0. Fügen Sie die MicrosoftCommControl5.0-Gruppe hinzu
Datei, fügen Sie die Befehlsschaltfläche zu Simplified Form1 hinzu, nennen Sie sie CmdTest, benennen Sie das MSComm-Steuerelement MSComm1 und fügen Sie den folgenden Programmcode hinzu.
PrivateSubcmdTestClick()'Öffnen Sie die serielle Schnittstelle
MSComml.CommPort=2'Com2 festlegen
IfMSComml.PortOpen=FalseThen
MSComm1.Settings="9600,n,8,1"'9600 Baudrate, keine Parität, 8 Datenbits, 1 Stoppbit
MSComm1.PortOpen=True'Öffnen Sie die serielle Schnittstelle
Endif
MSComm1.OutBufferCount=0'Löschen Sie den Sendepuffer
MSComm1.InBufferCount=0'Empfangspuffer verschieben
„Achten Sie beim Senden von Zeichendaten darauf, diese mit einem Wagenrücklauf (vbcr) zu beenden.
MSComm1.Output="Thisisaqoodbook!"&vbCr
„Telefonnummer eingeben oder AT-Befehl senden.“
MSComm1.Output="ATDT05778191898,&vbCr
'Beachten Sie beim Senden von Zeichenarray-Daten, dass ByteArray im Voraus ein Wert zugewiesen werden muss
DimByteArrayasbyte()
'Dynamisches Array definieren
ReDimByteArray(1)
'Definieren Sie die Array-Größe neu
ByteArray(0)=0
ByteArray(1)=1
MSComm1.Output=ByteArray
EndSub
privateSubMScommEvent()
Wählen SieCaseMSComm1.CommEvent aus
CasecomEvReceive
DimBufferAsVariant
MSComm1.InputLen=0
'Binärdaten empfangen
MSComm1.InputMode=ComInputModeBinary
Puffer=MSComm1.Input
'Charakterdaten empfangen
MSComm1.InputMode=comInputModeText
Puffer=MSComml.Input
Caseelse
EndSelect
Endsub
(Verfahren 1)
1 2Lesen Sie den vollständigen Text auf der nächsten Seite