Prosba o dokumentacje + inne sprawy

Awatar użytkownika
pzygmunt
Posty: 7971
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontaktowanie:

śr sty 17, 2018 12:51 pm

Tak wygląda zapis:

https://github.com/SUPLA/supla-espressi ... b20.c#L208

Tak odczytujesz
double temp;
memcpy(&temp, value, sizeof(double));
djack2017
Posty: 367
Rejestracja: pn lis 27, 2017 7:36 am

śr sty 17, 2018 1:07 pm

Wiem, to wszystko już przerabiałem. Chcę zmodyfikować nieco procedurę
w samym module supla_esp_devconn.c W poszczególnych komórkach value[8] są niejasne dla mnie wpisy
Chcę to na coś przekodować np na int (value*1000)
Jacek
Awatar użytkownika
pzygmunt
Posty: 7971
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontaktowanie:

śr sty 17, 2018 1:11 pm

Dla temperatury w value[8] siedzi typ double i takim typem musisz operować.
djack2017
Posty: 367
Rejestracja: pn lis 27, 2017 7:36 am

śr sty 17, 2018 1:15 pm

To wiem, ale właśnie nie wiem jak to zrobić w C?
Po prostu nie wiem jak przekonwertować double na np int*1000 (najbardziej mi pasuje).
Awatar użytkownika
pzygmunt
Posty: 7971
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontaktowanie:

śr sty 17, 2018 1:20 pm

Co rozumiesz przez int*1000 ? Po prostu chcesz to pomnożyć ?
djack2017
Posty: 367
Rejestracja: pn lis 27, 2017 7:36 am

śr sty 17, 2018 1:28 pm

Tak - w wyniku zmienna typu int z wartością przemonożoną przez 1000
Awatar użytkownika
pzygmunt
Posty: 7971
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontaktowanie:

śr sty 17, 2018 1:30 pm

double temp;
memcpy(&temp, value, sizeof(double));

(int)temp * 1000
djack2017
Posty: 367
Rejestracja: pn lis 27, 2017 7:36 am

czw sty 18, 2018 6:53 am

Dzięki, człowiek szuka skomplikowanych funkcji, a tymczasem rozwiązanie jest tak proste.
magx2
Posty: 320
Rejestracja: śr maja 17, 2017 1:27 pm
Kontaktowanie:

ndz wrz 16, 2018 8:03 pm

Trochę odświeżę temat.

Mam pytanie odnośnie pingów. Po zarejestrowaniu się urządzenie wysyła do serwera TDCS_SuplaSetActivityTimeout, w którym jest pole activity_timeout określające timeout po jakim serwer ma uznać urządzenie za martwe (sec czy ms?). W odpowiedzi serwer wysyła TSDC_SuplaSetActivityTimeoutResult. W tym proto też jest pole activity_timeout. Mam rozumieć że ono nadpisuje to co wysłało urządzenie? Druga sprawa min i max to są delty od wartości activity_timeout czy osobne wartości, tj. jeżeli mamy activity_timeout = 10 to min=2 i max=3 czy min=12 i max=13?

Druga sprawa to pingi. Co ustalony czas urządzenie wysyła TDCS_SuplaPingServer. O co chodzi w polu timeval? To jest jakiś czas od początku włączenia urządzenia? Po otrzymaniu tego proto serwer powinien odpowiedzieć TSDC_SuplaPingServerResult. I tu pojawia się pytanie czym jest timeval? Czy to jest to samo co serwer dostał w TDCS_SuplaPingServer, czy może jego wewnętrzny czas (czas od startu serwera czy otwarcia socketa do tego urządznia).

Ostatnia sprawa. Swój serwer testuję z ROW-01 od Zamela i w TDCS_SuplaPingServer dostaje same zera:

Kod: Zaznacz cały

SuplaDataPacket{version=5, rrId=3, callType=40, dataSize=8, data=[0, 0, 0, 0, 0, 0, 0, 0]})
Czemu tak się dzieje?
ODPOWIEDZ