Promotic

onDataReceive - zdarzenie obiektu PmaCommGroup

Opis:
Zdarzenie zostanie wywołane po odbiorze danych z komunikacji.
Zdarzenie zostanie wywołane nawet jeżeli komunikacja nie powiodła się lub niektóre (lub wszystkie) dane nie zostały pobrane.
 
Sposób wywołania tego zdarzenia jest zależny od ustawienia konfiguratora "Zdarzenie "onDataReceive"". Zalecane jest ustawienie "A = wołać dla wszystkich zarejestrowanych zmiennych (w tym obiekcie oraz w innych obiektach PmaData)".
Parametry:
pMe(Object) Odniesienie do PmaCommGroup obiektu, w którym dane zdarzenie powstaje.
pEvent(Object) Odniesienie do obiektu zawierającego ściślejsze informacje o danym zdarzeniu.
pEvent.Items - (Array) [do odczytu] Właściwość jest ustawiona na różnych obiektów według tego, w jaki sposób jest ustawiony konfigurator "Zdarzenie "onDataReceive"":
- "A = wołać dla wszystkich zarejestrowanych zmiennych (w tym obiekcie oraz w innych obiektach PmaData)".
Wtedy każda pozycja tej tablicy przedstawia obiekt "rozszerzenie danych ExtComm" zmiennej, która jest zdefiniowana w obiekcie PmaCommGroup lub w obiekcie PmaData.
- "B = wołać tylko dla zmiennych zdefioniowanych w tym obiekcie (przestarzałe)".
Wtedy każda pozycja tej tablicy przedstawia obiekt PmVar, która jest zdefiniowana w obiekcie PmaCommGroup. Zmienne w innych obiektach PmaData (które posiadają rozszerzenie danych ExtComm) nie są przechwytywane.

W obu przypadkach jeżeli z komunikacji zostanie równocześnie odczytane 10 pozycji danych, wtedy zdarzenie zostanie wywołane tylko raz a w tablicy znajduje się tych 10 pozycji.
pEvent.ErrorCount - (Long) [do odczytu] Ilość pozycji danych w tablicy pEvent.Items, które nie mają właściwość Quality ustawionej na Good.
pEvent.Attr - (Long) [do odczytu] Atrybut bitowy.
Wartość 3 (3=1+2) oznacza, że wszystkie zmienne zostały przeniesione w jednej wiadomości.
1 - Została przeniesiona pierwsza wiadomość.
2 - Została przeniesiona ostatnia wiadomość. Jest to znacznik, że zostały przeniesione wszystkie komunikowane zmienne.
Notatka:
Zdarzenie to nie musi zostać wywołane (i zazwyczaj nie zostaje wywołane) równocześnie dla wszystkich komunikowanych zmiennych.
Zdarzenie zostanie wywołane tak, jak przebiega komunikacja - na przykład jeżeli zostanie odebrana wiadomość zawierająca tylko 5 zmiennych, wtedy zdarzenie zostanie wywołane oraz we właściwości pEvent.Items będzie się znajdować tych 5 zmiennych, a jeżeli następnie zostanie odebrana następna wiadomość z kolejnymi zmiennymi, wtedy zdarzenie zostanie wywołane ponownie, itd.

Zdarzenie zostanie wywołane zawsze po uzyskaniu komunikacyjnej wiadomości z wartościami zmiennych.
Jest wywołane nawet jeżeli cała komunikacja nie powiodła się i nie zostały odczytane żadne wartości - wtedy wartość pEvent.ErrorCount będzie taka sama jak ilość pozycji we właściwości pEvent.Items.

Przy pomocy wartości pEvent.Attr można stwierdzić, czy wiadomość była pierwsza czy ostatnia.
Przykład:
0 = Wiadomość ta nie jest prierwsza oni ostatnia.
3 = Wiadomość ta przeniosła za jednym razem wszystkie zmienne i wtedy jest jednocześnie pierwszą oraz ostatnią.


Wywołanie tego zdarzenia można także emulować w INFO systemie, kiedy podczas przeglądania tego obiektu zostanie naciśnięty przycisk "Akcje". Patrz uprawnienie "PmaRoot > Uprawnienia > InfoEdit".
Patrz również:
Przykład:
Konfigurator "Zdarzenie "onDataReceive"" jest ustawiony na "A = wołać dla wszystkich zarejestrowanych zmiennych (w tym obiekcie oraz w innych obiektach PmaData)".
Zostaną wypisane informacje o wszystkich odebranych danych do pozycji Debug INFO systemu:
JavaScriptVBScriptWybierz oraz skopiuj do schowka

var aItems = pEvent.Items;
var nItems = aItems.GetSize(1);
Pm.Debug("PmaCommGroup.onDataReceive: Size=" + nItems + ", ErrorCount=" + pEvent.ErrorCount);
var iRow;
for (iRow = 0; iRow < nItems; iRow++)
{
Pm.Debug(" Name=" + aItems.GetItem(iRow).Var.Name);
Pm.Debug(" Value=" + aItems.GetItem(iRow).Var.Value);
Pm.Debug(" Quality=" + aItems.GetItem(iRow).Var.Quality);
Pm.Debug(" ItemId=" + aItems.GetItem(iRow).ItemId);
}

Historia:
Pm9.00.02: Nowa właściwość pEvent.Attr, z której można stwierdzić czy wiadomość, która wywołała to zdarzenie była pierwszą lub ostatnią.
© MICROSYS, spol. s r.o.