vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

ActiveX-Programmierung
Problem mit ActiveX-Exe 
Autor: ronnie
Datum: 04.11.10 15:20

Hallo zusammen,
mein heutiges Anliegen ist etwas schwierig zu erklären deshalb hab ich mein Projekt einfach mal hochgeladen.
Hier die Adresse:
HSP.zip
Ich hoffe der Link ist kein Problem...

Ich hab dort eine ActiveX-Exe "SPSServer" die mir eine Verbindung zu einer SPS halten soll. Es gibt eine Form frmSPS mit einem Timer der Zyklisch die Auftragsliste abarbeiten soll. Wie ein Auftrag aussieht, wird mit der Klasse CSPSAuftrag beschrieben. In dieser KLasse ist auch eine Property "Done" enthalten, die signalisieren soll das der Auftrag abgeschlossen ist.
Jetzt zu meinem Problem:
Ich hab mir ein neues Standard-Exe Projekt gemacht mit 2 Buttons drauf um das mal zu testen.
Dort dann den Verweis auf SPSServer..., alles soweit OK.
Jetzt drücke ich den Button1 und füge eine Auftrag hinzu. Danach drücke ich Button2 und füge einen weiteren Auftrag hinzu. Im jeweiligen Button-Klick-Ereignis warte ich bis der Auftrag abgeschlossen ist. Die Aufträge sollten dann im Abstand von 10sekunden zurückkehren da im SPSServer der Timerintervall auf 10s steht und immer nur 1 Auftrag abgearbeitet wird. Egal wie Zeitlich versetzt ich die Aufträge abschicke, es kehren die beiden Button-Klick Prozeduren immer zeitgleich zurück. Irgendwie hab ich da momentan ein Brett vorm Kopf....

Hier noch der Beispielcode:
Option Explicit
 
Private sps As New CSPSInterface
 
Private Sub Command1_Click()
Dim a1 As New CSPSAuftrag
Call a1.BitReadRequest(sps, 100, 1, 0)
Call sps.AddAuftrag(a1)
While Not a1.Done
    DoEvents
Wend
Debug.Print Now & " CMD1"
'Diese Debugausgabe wird Zeitgleich mit Command2 ausgeführt ???
End Sub
 
Private Sub Command2_Click()
Dim a2 As New CSPSAuftrag
Call a2.BitReadRequest(sps, 100, 1, 5)
Call sps.AddAuftrag(a2)
While Not a2.Done
    DoEvents
Wend
Debug.Print Now & " CMD2"
'Diese Debugausgabe wird Zeitgleich mit Command1 ausgeführt ???
End Sub
Vielleicht kann mir ja jemand weiterhelfen und evtl. auch noch Tipps geben wie ich meinen SPS-Server besser gestalten kann.

Gruß
Ronnie
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Problem mit ActiveX-Exe 
Autor: Dirk
Datum: 04.11.10 21:31

Wenn du Command2 drückst, läuft bei Command1 nichts mehr. Erst wieder, wenn Command2 verlassen wird.

Wenn du in deinem Server in frmWorker_OnTimer mal ein paar Printings reinsetzen würdest, dann würdest du sehen, dass die Aufträge tatsächlich 10s versetzt beendet werden.

In deinem Code sind viel zu wenig Printings, um da etwas nachvollziehen zu können.

Gruß
Dirk

--
?Get it right the first time

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Problem mit ActiveX-Exe 
Autor: ronnie
Datum: 05.11.10 07:41

Hallo Dirk,
erstmal danke für die Antwort.
Jetzt leuchtet es mir auch ein
DoEvents ist in dem Falle auch nicht mein Freund. Ich hab das ganze jetzt umgebaut und löse von CSPSInterface ein Event aus wenn der Auftrag abgeschlossen ist. Ist ja auch irgendwie logisch dass es mit 2 Buttons nicht funktioniert...
Naja, manchmal ist man irgendwie halt beschränk in seiner Sichtweise aber dafür gibts ja Foren wie dieses hier

Also, nochmal danke.

Gruß
Ronnie
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel