Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo, ich habe von nem Kollegen gesagt bekommen, ich soll in mein Projekt folgende Zeilen einbauen:

while(::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))

{

::TranslateMessage(&msg);

::DispatchMessage(&msg);

}

Allerdings ist die Software auf MFC-Basis und da hab ich zwei Zeilen:

BEGIN_MESSAGE_MAP(Crc_opcApp, CWinApp)

END_MESSAGE_MAP()

Ist damit denn nicht obiges schon erfüllt???

Geschrieben

Ja eben.

Also ich greife mit meiner DLL auf einen OPC-Server zu (zur Abfrage von Maschinendaten): byte read(); und void write(byte daten);

Beim Schreiben erfolgt das ganze asynchron, d. h.

mit write() wird der Schreibvorgang auf dem Server angestoßen und wenn er fertig ist, kommt einer Callbackfunktion vom Server zurück, mit dem Resultat des Schreibvorgangs.

In meinem Projekt, von dem aus ich auf die DLL zugreife befinden sich drei buttons (lesen; schreiben; mehrere Daten schreiben).

Wenn ich auf schreiben klicke, wird korrekt der Schreibvorgang angestoßen und die Callbackfunktion kommt zurück.

Beim Schreiben meherer Daten allerdings, kommt die Callbackfunktion erst zurück, wenn die aufrufende Funktion (Funktion des Buttons _onclick) verlassen wird.

Demzufolge tritt die Callbackfunktion nie ein wenn in dem Clientprojekt ständig geschrieben wird.

Woran liegt das?

Geschrieben

Also der direkte Aufruf des Servers sieht so aus:

//

// OnWriteComplete called by OPC server when an async write request has been carried out

//

STDMETHODIMP  COPCDataCallback::OnWriteComplete( 

        /* [in] */ DWORD dwTransid,

        /* [in] */ OPCHANDLE hGroup,

        /* [in] */ HRESULT hrMastererr,

        /* [in] */ DWORD dwCount,

        /* [size_is][in] */ OPCHANDLE __RPC_FAR *pClienthandles,

        /* [size_is][in] */ HRESULT __RPC_FAR *pErrors)

	{

		m_pParent->CallbackWriteComplete(dwTransid, hrMastererr);

		return S_OK;

	};

und CallbackWriteComplete(...) ist meine Funktion.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...