5.2. Zapis danych do sterownika

W celu zapisu dodatkowych danych do sterownika należy wysłać do sterownika następujący ciąg znaków (w przypadku platformy 3000 lub nowszej można pominąć początkowy znak [0x11]):

[0x11][0x02]S<?>{-PARAMETRY-}[0x03]
gdzie:

Protokół ten jest protokołem typu <-ASCII_D-> (zobacz Rozdział 16).

Znak S w zapytaniu wysyłanym do sterownika może zostać zastąpiony znakiem P, jeśli oczekujemy od sterownika odpowiedzi w postaci raportu Sekcja 5.1).

Uwaga: w przypadku platform starszych niż 2313 nie jest poprawnie obsługiwane przesyłanie wartości ujemnych - próba przesłania takiej wartości powoduje, że ona oraz wszelkie wartości po niej następujące zostaną zignorowane przez sterownik, w związku z czym należy przesyłania wartości ujemnych na tych platformach unikać.

Przykładowy ciąg znaków wygląda następująco:

[0x11][0x02]P10,100[0x03]

5.2.1. Zapis danych do sterownika z platformą 2313 lub nowszą

W przypadku komunikacji ze sterownikami zawierającymi platformę (nE) 2313 lub nowszą na końcu listy parametrów {-PARAMETRY-} należy dołączyć parametr specjalny o numerze 299, którego wartością będzie suma kontrolna liczona jako suma wartości wszystkich poprzedzających go wartości parametrów oraz ich numerów obliczana na 16 bitach bez znaku:

unsigned chksum(unsigned char param_numbers[], int param_vals[], unsigned size)
{
    int i;
    unsigned sum = 0;

    for (i = 0; i < size; i++) {
    	sum += param_numbers[i] + param_vals[i];
    }

    return sum & 0xFFFF;
}	    

Przykładowy ciąg znaków wygląda następująco:

[0x11][0x02]P10,100,1,-100,299,1[0x03]

Wysłanie tego polecenia do sterownika z platformą starszą niż 2313 nie powoduje żadnych negatywnych konsekwencji (parametr o numerze 299 zostanie zignorowany).