Prosba o dokumentacje + inne sprawy

User avatar
pzygmunt
Posts: 6410
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Contact:

Wed Jan 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
Posts: 248
Joined: Mon Nov 27, 2017 7:36 am

Wed Jan 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
User avatar
pzygmunt
Posts: 6410
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Contact:

Wed Jan 17, 2018 1:11 pm

Dla temperatury w value[8] siedzi typ double i takim typem musisz operować.
djack2017
Posts: 248
Joined: Mon Nov 27, 2017 7:36 am

Wed Jan 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).
User avatar
pzygmunt
Posts: 6410
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Contact:

Wed Jan 17, 2018 1:20 pm

Co rozumiesz przez int*1000 ? Po prostu chcesz to pomnożyć ?
djack2017
Posts: 248
Joined: Mon Nov 27, 2017 7:36 am

Wed Jan 17, 2018 1:28 pm

Tak - w wyniku zmienna typu int z wartością przemonożoną przez 1000
User avatar
pzygmunt
Posts: 6410
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Contact:

Wed Jan 17, 2018 1:30 pm

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

(int)temp * 1000
djack2017
Posts: 248
Joined: Mon Nov 27, 2017 7:36 am

Thu Jan 18, 2018 6:53 am

Dzięki, człowiek szuka skomplikowanych funkcji, a tymczasem rozwiązanie jest tak proste.
magx2
Posts: 309
Joined: Wed May 17, 2017 1:27 pm
Contact:

Sun Sep 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:

Code: Select all

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