Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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???

  • Autor

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?

  • Autor

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.

  • Autor

Hab das Problem jetzt gefunden.

Der OPC-Server basiert ja auf COM-Technologie.

Und beim Initialisieren mittels CoInitialize hab ich vergessen "Multithreaded" als Parameter anzugeben.

Jetzt funktionierts

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.