Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - vrit

Stran: [1]
1
Hardware / Re:ESP32 spadne při poslání HTTP požadavku
« kdy: 09. 07. 2024, 17:21:15 »
A nebijou se ti trochu datové typy ?
Nahoře definuješ toto:

bool polarity[] = { false, false, false, false, false, false };

ale pak máš funkci:

void controlSegmentPower(int segmentPin, CRGB segmentColor, int startIndex, int endIndex, bool polarity) {

Však tu funkci volá v loopu dobře:
Kód: [Vybrat]
controlSegmentPower(segmentPins[i], segmentColors[i], segmentRanges[i][0], segmentRanges[i][1], polarity[i])


To ano, ale vnitřek funkce používá proměnnou polarity definovanou jako bool,  zatímco globálně má definovanou ještě proměnnou polarity jako pole boolů.

Ten jejich překladač se občas v podobných situacích chová velice nevyzpytatelně. Oficiálně to ani není Cčko, ale jazyk Wiring.

Nesmysl, to je naprosto v poradku.

2
Software / Re:Tcdump neukazuje detaily na nestandardním portu
« kdy: 21. 02. 2024, 08:07:46 »
dalsi moznost by byla vytvorit si relaying pomoci ncat a presmerovat komunikaci na standardni port kde uz tcpdump dekoduje protokol

3
Software / Re:Tcdump neukazuje detaily na nestandardním portu
« kdy: 21. 02. 2024, 08:06:19 »
tcpdump toto neumi.

pokud ma vystup zustat na konzoli, lze pouzit:
tshark -f "port 12345" -Y http

4
Vývoj / Re:FLTK: klávesová zkratka pro taby
« kdy: 09. 08. 2023, 17:37:12 »
Tak nakonec jsem vytvoril "virtualni" tlacitka s nulovou vyskou, sirkou a prazdnym popiskem umistene na souradnicich 0,0 a definoval jim callback a shortcut klavesy a do callbacku jsem dal kod ktery prepne taby na prislusnou zalozku.

Problem tedy vyresen a vlakno lze uzavrit.

Dekuji vsem kteri aspon nakoukli za jejich cas.

5
Vývoj / FLTK: klávesová zkratka pro taby
« kdy: 09. 08. 2023, 11:42:40 »
Ahoj, chci se zeptat jestli by nekdo nahodou nevedel jak definovat klavesovou zkratku pro prepnuti se na nejaky konkretni tab za pouziti MoonFLTK knihovny...

 S tlacitkem je to jednoduche, ma metodu shortcut() ale "group" ani "tabs" ji nemaji.
Ma nekdo nejaky napad jak toho docilit?

Kód: [Vybrat]
window = fl.window(400,400, arg[0])

tabs = fl.tabs(10,10,500-20,200-20)

aaa = fl.group(10,35,500-20,200-60,"Aaa")
b1 = fl.button(50, 60,90,25,"Button A1") b1:color(88+1)
b2 = fl.button(50, 90,90,25,"Button A2") b2:color(88+2)
b3 = fl.button(50,120,90,25,"Button A3") b3:color(88+3)
aaa:done()

bbb = fl.group(10,35,500-10,200-35,"Bbb")
b1 = fl.button( 50,60,90,25,"Button B1") b1:color(88+1)
b2 = fl.button(150,60,90,25,"Button B2") b2:color(88+3)
b3 = fl.button(250,60,90,25,"Button B3") b3:color(88+5)
b4 = fl.button( 50,90,90,25,"Button B4") b4:color(88+2)
b5 = fl.button(150,90,90,25,"Button B5") b5:color(88+4)
b6 = fl.button(250,90,90,25,"Button B6") b6:color(88+6)
bbb:done()

tabs:done()
window:show()

6
Vývoj / Re:Načtení 2D pole v C
« kdy: 25. 11. 2022, 09:03:23 »
@mr.rubik: Moje znalosti C jsou dost neaktuální, takže k tvýmu kódu mám hloupej dotaz - proč funkce freeMatrix a freeMatrixRow žerou const pointery? Myslel jsem, že const značí, že se s parametrem pracuje v podstatě "read-only", což dealokace jeho části úplně není? Díky za osvětlení

Bezna implementace free() nic s daty na ktera pointer ukazuje nedela, obycejne existuje nekde v pameti seznam vsech alokovanych chunku pameti, a v tomto seznamu se odstrani zaznam o alokovane pameti na niz posilame pointer jako parametr funkce free(). Timpadem si alokator tento chunk pameti "oznaci jako znovu pouzitelny" a to je cele. Z tohoto pohledu spada dealokace do kategorie read-only.

Muze existovat nejaka bezpecnostni verze, ktera napriklad pri dealokaci vsechno prepise nulami, ale neni to bezne. Data tam zustanou dokud je nekdo jiny neprepise. Dealokaci se vsak programator zavazuje, ze s nimi jiz nebude nakladat.

Nikdo rozumný ale už nemůže předpokládat, že tam ten uvolněný objekt pořád je a o to jde. Z pohledu programové logiky a ne nějaké technické nahodilosti.

Souhlas... Jak jsem jiz zminil
Citace
Dealokaci se vsak programator zavazuje, ze s nimi jiz nebude nakladat.

7
Vývoj / Re:Načtení 2D pole v C
« kdy: 25. 11. 2022, 07:59:55 »
@mr.rubik: Moje znalosti C jsou dost neaktuální, takže k tvýmu kódu mám hloupej dotaz - proč funkce freeMatrix a freeMatrixRow žerou const pointery? Myslel jsem, že const značí, že se s parametrem pracuje v podstatě "read-only", což dealokace jeho části úplně není? Díky za osvětlení

Bezna implementace free() nic s daty na ktera pointer ukazuje nedela, obycejne existuje nekde v pameti seznam vsech alokovanych chunku pameti, a v tomto seznamu se odstrani zaznam o alokovane pameti na niz posilame pointer jako parametr funkce free(). Timpadem si alokator tento chunk pameti "oznaci jako znovu pouzitelny" a to je cele. Z tohoto pohledu spada dealokace do kategorie read-only.

Muze existovat nejaka bezpecnostni verze, ktera napriklad pri dealokaci vsechno prepise nulami, ale neni to bezne. Data tam zustanou dokud je nekdo jiny neprepise. Dealokaci se vsak programator zavazuje, ze s nimi jiz nebude nakladat.

8
Vývoj / Re:Načtení 2D pole v C
« kdy: 25. 11. 2022, 07:50:50 »
@mr.rubik: Moje znalosti C jsou dost neaktuální, takže k tvýmu kódu mám hloupej dotaz - proč funkce freeMatrix a freeMatrixRow žerou const pointery? Myslel jsem, že const značí, že se s parametrem pracuje v podstatě "read-only", což dealokace jeho části úplně není? Díky za osvětlení
Vec se ma tak, ze to, co je const je pointer na strukturu typu Matrix, tj. nemuzete zmenit rowCount, colCount, ale hlavne, nemuzete priradit jiny pointer do ukazatele data. A to je vlastne to, co jsem tim "v tu chvili" chtel rict: az tahle funkce skonci, vsechny membery budou v puvodnim stavu, i ten pointer bude porad ukazovat tam, kam puvodne, ale ta pamet uz bude uvolnena.
@mr.rubik: Nesouhlasim, konkretne s tvrzenim "to, co je const je pointer na strukturu typu Matrix". Neni to pravda. Pointer neni const ale ukazuje na const data, cili pres nej nelze zapisovat.

Kód: [Vybrat]
MatrixRow *const row; // konstantni ukazatel na typ MatrixRow (nelze primo zmenit kam ukazuje)
const MatrixRow *row; // ukazatel na typ const MatrixRow (nelze pres nej zapisovat)
const MatrixRow *const row; // konstantni ukazatel na typ const MatrixRow (nelze pres nej zapisovat, ani primo zmenit kam ukazuje)


9
Vývoj / Re:Načtení 2D pole v C
« kdy: 24. 11. 2022, 12:22:50 »
Dobry den. Chtel bych ze souboru nacist ctvercovou matici o neznamem poctu radku/sloupcu a nasledne ji opet printnout. Nemuzu prijit na to proc to nenacita zadny cisla. Kod i input je v priloze. Predem dekuji za jakykoli feedback <3

1. Radek 16: pouzivas i < COL_MAX, ale mas pouzit j
2. Radek 24: Tato podminka je nesmysl, scanf pri formatu %d neco ulozi pouze pokud se jedna o cislo v textove forme
3. Radek 36: pouzivas i<countRow ale mas pouzit j a taky mas pouzit countCols (pokud matice neni garantovane ctvercova)

Misto i,j doporucuju pouzit row,col, mozna te to rychleji trkne kdyz udelas chybu.

Jinak jsem tvuj kod vzal, opravil a udelal minimalni upravy, aby to bylo ve tvem stylu. Pridal jsem zpracovani po radcich, ale zachoval jsem formatovany vstup pomoci sscanf (obdoba scanf, ktera ale jako vstup pouziva retezec, namisto standardniho vstupu). Muzes si je porovnat.

Kód: [Vybrat]
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define ROW_MAX 100
#define COL_MAX 100
#define LINE_MAX 256

int main()
{
char line[LINE_MAX];
char *p;

int array[ROW_MAX][COL_MAX] = { 0 };
int countRows = 0;
int countCols = 0;
int matrixScan = 0;

printf("Matice:\n");

for (int i = 0; i < ROW_MAX; i++) // loads matrix numbers into array
{
if (fgets(line, LINE_MAX, stdin) == NULL)
break;

if ((p = strtok(line, " ")) == NULL)
break;

for (int j = 0; j < COL_MAX; j++)
{

matrixScan = sscanf(p, "%d", &array[i][j]);

if (matrixScan != 1)
return 1;

countCols = i > countCols ? i : countCols;

if ((p = strtok(NULL, " ")) == NULL)
break;
}

countRows++;

if (matrixScan == EOF)
break;
}

printf("Pocet radku: %d\n", countRows);

for (int i = 0; i < countRows; i++) //prints matrix
{
printf("\n");

for (int j = 0; j < countCols; j++)
{
printf("%d ", array[i][j]);
}
}

return 0;
}

Stran: [1]