1mscomm.vbx Kommunikationssteuerungsbeschreibung
Das Kommunikationssteuerelement mscomm.vbx kann aus der VB-Toolbox direkt zum Formularformular hinzugefügt und für die Kommunikation verwendet werden. Wenn in der Toolbox kein solches Steuerelement vorhanden ist, verwenden Sie die benutzerdefinierten Steuerelemente von Tools, um mscomm.vbx aus dem Systemunterverzeichnis von Windows zur Toolbox von vb hinzuzufügen.
1.1 Kommunikationsmethoden
mscomm.vbx bietet zwei verschiedene Möglichkeiten, die Entwicklungs- und Designprobleme verschiedener Kommunikationssoftware zu handhaben und zu lösen
1. Ereignisgesteuert. Sie ähnelt der Fensterrückruffunktion beim Schreiben von Windows-Software in C/C und ist eine leistungsstarke Möglichkeit, Probleme zu lösen. Bei der tatsächlichen Arbeit müssen wir uns häufig mit vielen verwandten Ereignissen in der Kommunikation befassen. Wenn beispielsweise die Leitungsdaten am lokalen Ende ankommen oder sich der Status der CD-Leitung und der RTS-Signalleitung ändert, müssen wir die entsprechenden Ereignisse verwenden Mit diesem Steuerelement wird das Oncomm-Ereignis implementiert, das auch das Erkennen und Behandeln von Kommunikationsfehlern und anderen Problemen umfasst. Der Commevent-Wert gibt den aktuellsten Kommunikationsereignis- oder Fehler-Nummerncode zurück. Detaillierte Fehler- und Ereignisbeispiele für Kommunikationskontrollen umfassen:
mscomm-er-break hat 1 Breaksignal empfangen
mscomm-er-cdtocd-Signalzeitüberschreitung
…
mscomm-ev-cdcd-Signal geändert
…
2. Anfragemethode. Es liegt in der Verantwortung des Programmierers, den Wert von Commevent zu lesen und auftretende Fehler oder Ereignisse zu behandeln. Normalerweise kann dieser Ansatz beim einfachen Anwendungsdesign übernommen werden.
1.2 Eigenschaften von Kommunikationssteuerungen
Der Schlüssel zur Verwendung von Kommunikationssteuerelementen zum Kompilieren von Kommunikationsprogrammen liegt darin, die Eigenschaften von Kommunikationssteuerelementen genau zu verstehen und festzulegen. mscomm.vbx bietet 27 Eigenschaften zu Kommunikationssteuerungen, wie zum Beispiel:
Commport: Legen Sie die Kommunikationsportnummer fest oder geben Sie sie zurück.
Einstellungen: Legen Sie das Datenkommunikationsformat in Form einer Zeichenfolge fest oder geben Sie es zurück: Baudrate, Parität, Datenbits und Stoppbits.
portopen: Setzt den Status des Kommunikationsports oder gibt ihn zurück (einschließlich Öffnen und Schließen eines Kommunikationsports).
…
3. Beispiele
Der Anwendungshintergrund dieses Programms ist die Software für das automatische Überwachungssystem für Elektrofilter dcc95, die das Kommunikationsproblem zwischen einem PC-Industriecomputer (Hauptstation) und 32 Mikrocontrollern (Unterstationen) löst. Die Busnetzwerkstruktur zwischen der Hauptstation und der Unterstation übernimmt den RS-485-Kommunikationsstandard und führt die Datenkommunikation im Frage-und-Antwort-Verfahren durch. Da die 32 Unterstationen Kommunikationsbefehle (Downlink-Befehle) an die Master-Station senden, sendet die Master-Station weiterhin Downlink-Befehle, nachdem sie die entsprechenden von den Unterstationen zurückgesendeten Antwortbefehle (Uplink-Befehle) erhalten hat. Entsprechend den Anforderungen der Systemfunktionen muss die Master-Station zwei Arten von Befehlen senden: (1) Synchroner Befehl, der durch einen Timer ausgelöst wird und einmal in jedem ls-Zyklus gesendet wird; (2) Aperiodischer Befehl, der durch ausgelöst wird Operator Wird durch Bewegen der entsprechenden Befehlsschaltfläche ausgelöst und aperiodisch gesendet. Die Software des automatischen Überwachungssystems ist auf der Hauptstation installiert, und das Kommunikationsprogramm ist auch als Teil der Software des automatischen Überwachungssystems auf der Hauptstation installiert.
In diesem Artikel wird nur eine grundlegende Demoprogrammliste zum Testen beim Debuggen von Kommunikationsprogrammen aufgeführt. Während des Tests wurde ein PC als Hauptstation verwendet und ein anderer PC simulierte die Arbeit von 32 Unterstationen. Die beiden PCs verwendeten die Kommunikation über die serielle Schnittstelle RS232c. Fügen Sie 1 Kommunikationssteuerung, 2 Timer-Steuerung und 1 Befehlstastensteuerung zum Kommunikationsdemonstrationsformular (Formular) der Hauptstation hinzu. Die Kommunikationssteuerung (mscomm1) wird verwendet, um auf die serielle Schnittstelle zuzugreifen und Daten periodisch zu senden und zu empfangen. periodisch) wird verwendet, um die Hauptstation so zu steuern, dass sie jede Sekunde periodische Befehle an jede Unterstation sendet; die Befehlstastensteuerung (nichtperiodischer Befehl) und die nichtperiodische Timersteuerung (nichtperiodischer Befehl) werden zum Senden aperiodischer Befehle verwendet. Die Datenübertragung erfolgt über ereignisgesteuerte Kommunikation. Das rtreshlod-Attribut wird entsprechend verschiedenen Sendebefehlen festgelegt, wodurch das oncomm-Ereignis Daten empfängt.
2.1 Initialisierungsverfahren für jedes Steuerelement im Formular
Stellen Sie die Arbeitsparameter der seriellen Kommunikationsschnittstelle ein, stellen Sie das Interrupt-Intervall des periodischen Timers auf ls und das Interrupt-Intervall des nichtperiodischen Timers auf 0,5 s ein.
subform-load()
mscomm1.commport=2'Wählen Sie den seriellen COM2-Port aus
mscomm1.settings="9600,n8,1"'Baudrate 9600, kein Paritätsbit, 8 Datenbits und 1 Stoppbit
mscomm1.inputlen=0'input liest den gesamten Inhalt des Empfangspuffers
mscomm1.inbuffersize=1024'Legen Sie die Bytelänge des Empfangspuffers fest
mscomm1.portopen=true'Öffnen Sie den Kommunikationsport
mscomm1.inbuffercount=0'Sendepufferdaten löschen
mscomm1.outbuffercount=0'Löschen Sie die Empfangspufferdaten
periodic.inteval=100'Stellen Sie das LS-Zeitintervall so ein, dass der Telemetriebefehl einmal alle LS gesendet wird
nonperiodic.inteval=500' Legen Sie das Zeitintervall von 0,5 Sekunden fest und fragen Sie ab, ob die Befehlsschaltfläche aktiviert ist, um zu bestimmen, ob periodische Befehle gesendet werden sollen
command-PRessed=false'Die Befehlsschaltfläche ist inaktiv
while-periodic=false'Die periodische Befehlsdatenübertragung hat noch nicht begonnen
while-nonperiodic=false'Die nichtperiodische Befehlsdatenübertragung hat noch nicht begonnen
Endsub
2.2 Aperiodisches Befehlssendeprogramm
Entsprechend dem Status der Befehlstaste und dem Status der periodischen Befehlsdatenübertragung werden aperiodische Befehle im Interrupt-Programm des nichtperiodischen Timers gesendet.
subnonperiodic-command-click()
command-pressed=true'Befehlsschaltflächenaktivierung
Endsub
subnonperiodic-timer()
ifduring-periodic=trueorcommand-pressed=false
thenexitsub' Wenn die periodische Befehlsdatenübertragung nicht beendet ist oder die Befehlsschaltfläche aktiviert ist, beenden Sie das Programm, das aperiodische Befehle sendet.
command-pressed=false'Befehlsschaltfläche kehrt in den inaktiven Zustand zurück
Callsenddata(nonperiodic-command)'Sende nichtperiodische Befehle
mscomm1.rthreshold=r-nonperiodic-byte'Setzen Sie nach dem Senden des aperiodischen Befehls das rthreshold-Attribut so ein, dass die Masterstation das oncomm-Ereignis auslöst, nachdem sie die festgelegte Anzahl von Bytes empfangen hat.
Endsub
2.3periodisches Timerprogramm
Senden Sie periodische Befehle im Interrupt-Programm des periodischen Timers:
subperiodischer-timer()
ifduring-nonperiodic=truethenexitsub'Wenn die aperiodische Befehlsdatenübertragung noch nicht beendet ist, beenden Sie das Programm zum Senden aperiodischer Befehle.
while-periodic=true' setzt den Status der periodischen Befehlsdatenübertragung auf „In Bearbeitung“.
ruftenddata(periodic-command) auf, um periodische Befehle zu senden
mscomm1.rthreshold=r-periodic-byte'Nach dem Senden des periodischen Befehls empfängt die Masterstation r-remot-edata-byte Bytes, die das oncomm-Ereignis auslösen können
Endsub
2.4oncomm-Veranstaltungsprogramm
Gemäß dem Einstellungswert des rthreshold-Attributs wird beim Empfang des entsprechenden Bytezeichens im Empfangspuffer das Oncomm-Ereignis ausgelöst und die Daten werden im Interrupt-Programm empfangen.
submscomm1-oncomm()
selectcasemscomm1.commevent'Hier können Sie Code zur Behandlung verschiedener Fehler oder Ereignisse einfügen.
casemscomm-ev-receive
Empfangszeichenfolge$=mscomm1.input
selectcasemscomm1.rthreshold
caser-periodic-byte'response Daten des periodischen Befehls
calldisposedata(periodic-command)'verarbeitet die empfangenen Daten
whileperiodic=false' setzt den Status der periodischen Befehlsdatenübertragung auf „Ende“.
caser-nonperiodic-byte'nichtperiodische Befehlsantwortdaten
calldisposedata(nonperiodic-command)‘verarbeiten empfangene Daten
while-nonperiodic=false' setzt den Status der nichtperiodischen Befehlsdatenübertragung auf Ende
endselect
endselect
Endsub
Durch die kontinuierliche Aktualisierung der vb-Version wird vb zum schnellsten, benutzerfreundlichsten und leistungsstärksten Anwendungsentwicklungstool und zu einem der bevorzugten Tools für die Entwicklung von Client/Server-Anwendungssoftware auf Unternehmensebene. ->