Project

General

Profile

Actions

Support Request #1605

closed

Retrieve Signal Value from ISignalRegistryExtended

Added by hidden over 6 years ago. Updated almost 4 years ago.

Status:
Closed
Priority:
Normal
Customer:
BOSCH
Department:
CC-DA/EPC
Requester's Priority:
Normal
Support Level:
2nd Level
Resolution:
Solved Issue
Product Issue Numbers:
Affected Products:
Platform:
Windows 7 64bit
Topic:
ADTF::Common
FAQ Links:

Description

Supportanfrage

Hi Flo,

Ich habe eine Frage zur Signal Registry, denn ich bin aus der SDK Doku nicht schlau geworden. Umgebung: Win7 x64/ ADTF 2.13.3

Und zwar möchte ich aus einem Filter auf einen bestimmten Wert in der Registry, dass auch im Signal View angezeigt wird. Was wäre das Gegenpart von einem ISignalProvider? Hier ist ein Pseudocode für cFilter::Init() aus?

RETURN_IF_FAILED(_runtime->GetObject(OID_ADTF_SIGNAL_REGISTRY,
                                     IID_ADTF_SIGNAL_REGISTRY_EXTENDED,
                                     (tVoid**) &m_pSignalRegistry));

RETURN_IF_FAILED(m_pSignalRegistry->GetSignalList(&m_pSignalDescription, &m_nSignalCount));
RETURN_IF_POINTER_NULL(m_pSignalDescription);

cString signalName;
tSignalHandle hSignalHandle;

for (size_t i = 0; i < m_nSignalCount; ++i)
{
    signalName = m_pSignalDescription[i].strName;
    if (signalName.Find("Gesuchtes_Signal") != -1)
    {
        RETURN_IF_FAILED(m_pSignalRegistry->RegisterSignalListener(signalName,
                                                                   dynamic_cast<adtf::IRunnable*>(this), 
                                                                   &hSignalHandle));
        break;
    }
}

Wie und wo soll ich mir den Wert zurückholen? In cFilter::Run, GetSignalValue aufrufen oder eher RequestSignal(const tChar* strSignalName, ISignal** ppSignal)?

Lösung

siehe How can I retrieve the signal value from ISignalRegistryExtended ?

Actions #1

Updated by hidden over 6 years ago

  • Project changed from Public Support to 5
  • Status changed from New to In Progress
  • Topic set to ADTF::Common
  • Customer set to BOSCH
  • Affected Products ADTF 2.13.3 added
  • Platform Windows 7 64bit added
Actions #2

Updated by hidden over 6 years ago

  • Description updated (diff)
Actions #3

Updated by hidden over 6 years ago

Hallo,

ein kleines Update nach dem ich das hier in der SDK Dokumentation gefunden habe (BITTE BITTE hervorheben oder ein Beispiel anbieten):

The listeners adtf::IRunnable::Run method will be called with RUN_SIGNAL_REGISTRY_EVENT as 
activation type and an array of tSignalRegistryEvent structs as user data. You can find out 
the size of the array by dividing nUserDataSize by sizeof(tSignalRegistryEvent).

Meine MyFilter::Run() Implementierung sieht somit folgendermaßen aus und ich kriege den "richtigen" Wert raus:

tResult MyFilter::Run(tInt nActivationCode, const tVoid *pvUserData, tInt szUserDataSize, __exception)
{
    if (nActivationCode == RUN_SIGNAL_REGISTRY_EVENT && pvUserData != nullptr) {
        tSignalRegistryEvent const* pEvent = static_cast<tSignalRegistryEvent const*>(pvUserData);
        tInt nEventCount = szUserDataSize / sizeof(tSignalRegistryEvent);

        __synchronized_obj(m_oSignalInUse);
        LOG_INFO(cString::Format("Something clever should be displayed %f", pEvent->pValue->f64Value));
    }
    return cBaseQtFilter::Run(nActivationCode, pvUserData, szUserDataSize, __exception_ptr);
}

Allerdings hätte ich noch eine Frage. Falls, andere Filter das Event RUN_SIGNAL_REGISTRY_EVENT senden,
wie stelle ich sicher, dass ich den Wert des registrierten Signals bekomme?

Besten Dank und viele Grüße,
Yann

Actions #4

Updated by hidden over 6 years ago

  • Status changed from In Progress to Customer Feedback Required

Hi Yann,

sorry, ich hatte gestern KuFo aber wie ich sehe hast du dir schon selbst geholfen.

Allerdings hätte ich noch eine Frage. Falls, andere Filter das Event RUN_SIGNAL_REGISTRY_EVENT senden,
wie stelle ich sicher, dass ich den Wert des registrierten Signals bekomme?

Du hast deinen Listener ja an die Signal Registry gehängt, dadurch ist das gewährleistet, ansonsten erreicht dich das Event ja gar nicht.

BITTE BITTE hervorheben oder ein Beispiel anbieten

Wie du sicher weißt, wird ADTF 2.x nicht weiterentwickelt, deshalb werden wir da nichts mehr machen.
Ich habe das Thema mal in die FAQ's aufgenommen... passt das so ?
Actions #5

Updated by hidden over 6 years ago

Florian Roth wrote:

Wie du sicher weißt, wird ADTF 2.x nicht weiterentwickelt, deshalb werden wir da nichts mehr machen.
Ich habe das Thema mal in die FAQ's aufgenommen... passt das so ?

Perfekt! :)

Actions #6

Updated by hidden over 6 years ago

  • Project changed from 5 to Public Support
  • Description updated (diff)
  • Status changed from Customer Feedback Required to To Be Closed
  • Private changed from Yes to No
  • Resolution set to Solved Issue
  • Department set to CC-DA/EPC

Ticket kann damit geschlossen werden

Actions #7

Updated by hidden over 6 years ago

  • Status changed from To Be Closed to Closed
Actions #8

Updated by hidden almost 4 years ago

  • Description updated (diff)
Actions

Also available in: Atom PDF