Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Pokaż wątki - Kyroaku

Strony: [1]
1
Inne / Tani dron z otwartą dokumentacją techniczną
« dnia: Luty 03, 2019, 16:54:34 »
Cześć,

Poszukuję drona, do którego w miarę prosto można napisać apke do sterowania. Coś takiego jak Ar Drone 2, tylko możliwie jak najtańszego.

W Ar Drone 2 komunikacja odbywa się za pomocą WiFi. W dokumentacji opisany jest protokół komunikacji, metoda kompresji obrazu itd. Wie ktoś, czy tanie drony też coś takiego oferują?

Pozdrawiam.

2
C++ / Error: Attempting to reference a deleted function
« dnia: Marzec 25, 2018, 21:52:20 »
Cześć wszystkim ;)

Mam problem o tyle trudny dla mnie do wykrycia, że nie pojawił się on po dodaniu fragmentu kodu, a po przesiadce z VS2013 na VS2015. Dostaję takie oto errory:

Error C2280 'std::pair<const _Kty,_Ty>::pair(const std::pair<const _Kty,_Ty> &)': attempting to reference a deleted function

W output'cie, oprócz wielu odniesień do plików z STL'a, jedno dotyczy mojego pliku:
1>  [...]: note: see reference to class template instantiation 'std::map<int,AnimationKey,std::less<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' being compiled
1>          with
1>          [
1>              _Kty=int,
1>              _Ty=AnimationKey
1>          ]

I wskazuje linię:
std::map<int, AnimationKey>animations;

Klasa AnimationKey:
class AnimationKey
{
public:
unsigned int startFrame, endFrame;

AnimationKey();
AnimationKey(unsigned int start, unsigned int end);
void set(unsigned int start, unsigned int end);
};

W nowszym standardzie C++, kiedy pojawiały się operatory przeniesienia wprowadzono, że zadeklarowanie jakiegokolwiek konstruktora, lub operatora przypisania automatycznie ustawia pozostałe konstruktory i operatory przypisania na "delete". Myślałem, że chodzi o to, próbowałem desperacko zadeklarować każdy z konstruktorów, ale nic to nie pomogło :P Nie potrafię nawet tego błędu wywołać tak "na sucho" w nowym projekcie. Możliwe, że to przez update plików z VS2013 do VS2015?

Od dłuższego czasu nie kodziłem w C++ i mam spore braki, jeśli chodzi o nowsze standardy. Będę wdzięczny za każdą wskazówkę.

3
Szkółka / Procesory arm (stm32)
« dnia: Październik 26, 2016, 19:20:40 »
Cześć wam ;)
Zaczynam programować arm'y i poszukuje narzędzi/poradników/przykładów.

Posiadam płytkę stm32f0-discovery z procesorem stm32f051R8T6.

Spotkałem już w internecie kilkanaście propozycji IDE, ale to mi się nie podoba, to strona nie działa, to wymagają pierdyliarda danych osobowych... No nie mam już sił :P

Na razie bardzo nie chcę ściągać Eclipse, ponieważ wolałbym znaleźć jednak coś w moim guście.
Może ktoś programuje takie rzeczy na co dzień, lub programował kiedyś i poleci mi coś miłego ?

Jeśli chodzi o poradniki/tutoriale, to może wpadł ktoś kiedyś na jakiś, w którym nie używa się żadnych bibliotek "wspomagających" ? Chodzi mi o bezpośrednie wykorzystywanie rejestrów. Bardzo topornie mi idzie szukanie informacji na ten temat, a datasheet'y arm'ów są jakieś tajemnicze... W avr'ach to dużo lepiej wygląda ;)

Może komuś udało się zaprogramować stm'a w Atmel Studio ? Niby jest support dla arm'ów, ale o stm'ach ani widu, ani słychu.

4
Projektowanie kodu / C++ manager
« dnia: Marzec 29, 2016, 00:34:57 »
Witam,
Ogólnie pisze sobie bibliotekę GUI.
Każdy element, każda kontrolka dziedziczy po klasie Layout.
Klasa Manager między innymi przechowuje teksturki.

Teraz przykładowo, aby zrealizować zapis kontrolki do pliku, klasa Layout posiada metodę save().
Tworząc nową kontrolkę, robię sobie tylko overload tej metody i jest git.
Problem pojawia się, kiedy muszę zapisać ścieżkę do tekstury. Manager trzyma tekstury, więc to u niego muszę jej szukać. Niestety, jeśli w pliku z kontrolką (którą dziedziczy po Layout), zaincluduje Managera, to kompilator mi powie, że klasa bazowa jest niezdefiniowana.

Jak Wy byście do tego podeszli ?
Jakieś rady ?

Postanowiłem pisać kod w miarę czytelny, a mój każdy kolejny pomysł, to wiadro błota :P

5
Szkółka / scanf_s crashuje program
« dnia: Wrzesień 15, 2015, 15:42:15 »
Witam,
Pisze w Visual Studio 2013.

Kiedy próbuje pobrać ciąg znaków za pomocą funkcji scanf_s, program sie crashuje.

#include <stdio.h>

int main()
{
char asd[32];
scanf_s("%s", &asd[0]);
printf("%s", asd);
while (1) {}
return 1;
}

Co dziwniejsze, kiedy po crashu sprawdzam debuggerem, co trzyma zmienna 'asd', pokazuje się dokładnie to, co wpisałem ;)

Próbowałem przydzielać też miejsce na stringa przez 'new', deklarować 'asd' poza funkcją 'main', ale zawsze bez zmian.

Bardzo dawno nie używałem tej funkcji, więc nie jestem w stanie powiedzieć, od kiedy coś takiego ma miejsce.

Logi:
First-chance exception at 0x59043FD4 (msvcr120d.dll) in ZadanieHuberta2.exe: 0xC0000005: Access violation writing location 0x00960000.
Unhandled exception at 0xFEFEFEFE in ZadanieHuberta2.exe: 0xC00001A5: Wykryto nieprawidłową procedurę programu obsługi wyjątków (parameters: 0x00000003).

Spotkał się może ktoś z czymś podobnym ?

6
Visual Studio / Sortowanie plików w okienku po wciśnięciu CTRL+TAB
« dnia: Sierpień 01, 2015, 23:13:53 »
Witam,
mam dość nietypowe pytanie ;)
Po wciśnięciu CTRL+TAB, nazwy plików sortowane są według ostatnio używanych.

Jest możliwość, aby zmienić to sortowanie tak, aby wyświetlało pliki w takiej samej kolejności, w jakiej są pokazane zakładki tych plików nad edytorem tekstu ?

7
Szkółka / Android UDP Broadcasting
« dnia: Maj 04, 2015, 22:31:59 »
Witam,
Próbuje zaimplementować Broadcasting na androidzie i chciałbym was zapytać o parę rzeczy.
Aplikacja jest jednocześnie klientem i serwerem.
1) Najpierw wlaczam wątek serwera, a po opóźnieniu 500ms wątek klienta. Wysłany pakiet na broadcast address "wraca do mnie", tzn ze pakiet został wysłany i odebrany (ponieważ nie zablokowałem odbierania pakietow od samego siebie). Niestety jeśli wlacze aplikacje na innym urządzeniu, pakiet nie dociera.
Router blokuje Broadcasting ? Nawet na LAN ?

2) Jest sens w wysłaniu requesta na każdy adres 192.168.x.x

Na wszelki wypadek dolaczam klasy serwera i klienta, które odpalam na 2 oddzielnych wątkach.

        /* ==================================== Server */
private class Server implements Runnable
{
String name;
DatagramSocket socket;
DatagramPacket sendPacket, receivePacket;

public Server()
{
name = getRandomName();
}

public void run()
{
try {
socket = new DatagramSocket(SERVER_PORT, InetAddress.getByName("0.0.0.0"));
socket.setBroadcast(true);
sendPacket = null;
receivePacket = null;
while(true)
{
receivePacket = new DatagramPacket(new byte[1024], 1024);
socket.receive(receivePacket);
sendPacket = new DatagramPacket(name.getBytes(), name.length(),
receivePacket.getAddress(), receivePacket.getPort());
socket.send(sendPacket);
}
}
catch (SocketException e) {}
catch(IOException e) {}
}
};

/* ==================================== Client */
private class Client implements Runnable
{
DatagramSocket socket;
DatagramPacket sendPacket, receivePacket;

public Client()
{

}

public void run()
{
try
{
socket = new DatagramSocket();
socket.setBroadcast(true);
sendPacket = new DatagramPacket("abc".getBytes(), 3,
getBroadcastAddress(), SERVER_PORT);
receivePacket = new DatagramPacket(new byte[1024], 1024);
socket.send(sendPacket);
socket.receive(receivePacket);
}
catch (SocketException e) { }
catch(IOException e) { }

servers.add(new String(receivePacket.getData(), 0, receivePacket.getLength()));
}
};

[...]

/* skopiowane z Neta */
InetAddress getBroadcastAddress() throws IOException {
WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
DhcpInfo dhcp = wifi.getDhcpInfo();
// handle null somehow

int broadcast = (dhcp.ipAddress & dhcp.netmask) | ~dhcp.netmask;
byte[] quads = new byte[4];
for (int k = 0; k < 4; k++)
quads[k] = (byte) ((broadcast >> k * 8) & 0xFF);
return InetAddress.getByAddress(quads);
}

8
Szkółka / "Nie znaleziono punktu wejscia procedury"
« dnia: Grudzień 07, 2014, 21:16:12 »
Witam,
natrafilem na niezorumialy dla mnie problem. Pisze w Visual Studio 2013.
Mam sobie niewielki silniczek do grafiki 3D, ktory rozwijam rownoczesnie tworzac na nim projekt. W pewnym momencie, nie wiedziec czemu, kiedy dodalem do metody w silniku (caly silnik jest zawarty w glownej klasie silnika) 1 dodatkowy argument, aplikajca (ktora wykorzystuje ten silnik) sie crashuje, wyrzucajac message box'a z informacjami:
"Nie znaleziono punktu wejscie procedury [...] w bibliotece [...]/NazwaProjektu.exe"
Najbardziej mnie zastanawia, dlaczego chodzi o plik .exe, a nie plik .dll silnika.
W logach visuala pokazuja sie tez 3 linijki, ktore moga cos znaczyc:
First-chance exception at 0x77A99D03 (ntdll.dll) in FBXToSpam3DConverter.exe: 0xC0000139: Entry Point Not Found.
First-chance exception at 0x77A88F05 (ntdll.dll) in FBXToSpam3DConverter.exe: 0xC0000139: Entry Point Not Found.
Unhandled exception at 0x77A88F05 (ntdll.dll) in FBXToSpam3DConverter.exe: 0xC0000139: Entry Point Not Found.
Zaznaczam rowniez, ze od samego poczatku rozwijam oba projekty jednoczesnie i pierwszy raz cos takiego sie stalo.
Dodatkowo, jesli usune argument z metody w silniku, ktory spowodowal crash, wszystko dziala normalnie.
W opcjach projektu ustawilem, zeby kompilator dolaczal pliki naglowkowe i .lib z folderu silnika, a plik .dll za kazdym razem kopiuje recznie, wiec raczej nie ma mowy, ze mam stare pliki silnika.
Pozdrawiam.

/EDIT:
Po zamknieciu message box'a po crashu, pojawia sie drugi z informacja:
"Unhandled exception at 0x77A88F05 (ntdll.dll) in FBXToSpam3DConverter.exe: 0xC0000139: Entry Point Not Found."

9
Szkółka / Zaplatane include'owanie plikow
« dnia: Październik 26, 2014, 16:55:16 »
Witam,
Mam 2 osobne  pliki, ktore reprezentuja dwie osobne klasy, ktore korzystaja z siebie nawzajem. Tzn jedna klasa posiada metody, ktore przyjmuja jako argument/zwracaja obiekt klasy drugiej. Ponizej maly przyklad.
Klasa 1:
#ifndef _HEADER1_INCLUDED
#define _HEADER1_INCLUDED

#include "Header2.h"

class pou
{
public:
foo getFoo()
{
return foo();
}
};

#endif
klasa 2:
#ifndef _HEADER2_INCLUDED
#define _HEADER2_INCLUDED

#include "Header1.h"

class foo
{
public:
pou getPou()
{
return pou();
}
};

#endif
Main:
#include <stdio.h>
#include <conio.h>

#include "Header1.h"
#include "Header2.h"

int main()
{
_getch();
return 1;
}
Bledy kompilacji:
error C2146: syntax error : missing ';' before identifier 'getPou'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
warning C4183: 'getPou': missing return type; assumed to be a member function returning 'int'
error C3861: 'pou': identifier not found
IDE, to MS Visual Studio.
Ktos ma jakis pomysl, jak doprowadzic kod do wersji kompilowalnej ?

10
Szkółka / OpenGL shader uniforms
« dnia: Październik 08, 2014, 12:08:04 »
Witam,
mam szybkie pytanie na temat danych wysylanych do shaderow za pomoca funkcji glUniform*.
Mianowicie,czy przed kazdym renderowanym obiektem musze wysylac dane (np dotyczace swiatel), czy wystarczy raz na poczatku klatki ?
W zwyklym codzie C++ jesli stworze zmienna,to ma ona swoje miejsce w pamieci i nie musze sie obawiac, ze jakims sposobem zmieni ona swoja wartosc. Tak samo jest w przypadku shaderow ?

11
Szkółka / OpenGL ES 2.0 window pos to 3D pos
« dnia: Lipiec 14, 2014, 01:20:12 »
Witam,
Pisze pod androida w OpenGL ES 2.0. Chcialbym rzutowac pozycje touch pointa do pozycji w przestrzeni 3D, a konkretniej szukam punktu kliknietego na plaszczyznie XZ. Jakies sugestie, jak powinienem to zrobic ?

12
Szkółka / OpenGL shaders
« dnia: Kwiecień 08, 2014, 18:58:46 »
Witam,
Wciaz mam problem z shaderami. U mnie na PC'cie (Windows XP) shadery niby dzialaja, ale strasznie zamlulaja. Wystarczy niewiele obliczen, aby mozna bylo liczyc FPS na palcach...
Drugi problem polega na tym, ze kiedy probuje odpalic aplikacje na innym kompie (Windows 7 x64), wszystko jest ok, oprocz tego, ze shadery sie nie chca nawet skompilowac. W przypadku vertex, jak i fragment shadera wywala mi blad kompilacji (odpalam .exe, ale GL_COMPILE_STATUS wyrzuca blad). Nie jestem pewien, ale ten problem moze byc spowodowany roznym systemem (32 vs 64), ale z drugiej strony aplikacja sie uruchamia, wiec jestem zdezorientowany :)
A tutaj shadery:
Vertex Shader
varying vec4 v_Color;

void main()
{
v_Color = gl_Color;
gl_TexCoord[0] = gl_MultiTexCoord0 * gl_TextureMatrix[0];
gl_Position = ftransform();
}
Fragment Shader
#version 110

varying vec4 v_Color;
uniform sampler2D texture;

void main()
{
vec4 color = texture2D(texture, gl_TexCoord[0].st);
for(int i=0; i<5; i++)
{
color *= texture2D(texture, gl_TexCoord[0].st);
color += texture2D(texture, gl_TexCoord[0].st);
}
gl_FragColor = color;
}
Gdyby ktos mi podsunal chociaz jakas wskazowke, co moze byc przyczyna tego, ze przy takim shaderze mam <30 FPS, bylbym niezmiernie wdzieczny.
Scena jest oczywiscie bardzo prosta. W zasadzie, to sa tylko 2 otekstrurowane szesciany.

13
Szkółka / C++ new i delete
« dnia: Marzec 12, 2014, 20:55:11 »
Witam,
Pytam, poniewaz chcialbym sie dowiedziec, aby wiedziec :)
Mam kod:
float *v;
float d[] = { 1.0f, 2.0f, 3.0f };
v = new float[3];
v = d;
Chcialbym wiedziec, co sie wlasciwie dzieje ;) Dlaczego nie moge za pomoca "delete", zwolnic pamieci przypisanej przez "new" ? Myslalem, ze polecenie "v = d" tylko przypisze wartosci do juz zaalokowanej pamieci. W takim zapisie pamiec jest rezerwowana 2 razy ? Raz przez "new", a drugi raz, niezaleznie, przez zwykle przypisanie "v = d" ?

14
Szkółka / C++ wskaznik na funkcje
« dnia: Marzec 11, 2014, 15:09:06 »
Witam,
glowie sie nad pewnym problemem.
funckja f() przyjmuje wskaznik na funkcje.
typedef void(*funcT)(int a, int b);
void f(funcT func);
Jest mozliwosc, aby przekazac do funkcji f() funkcje g() ?
void g(int a);
Chodzi mi o to, aby jeden z argumentow funkcji f() byl staly. W zasadzie tylko po to, aby funkcja g() przyjmowala 1 parametr, zamiast 2 :) Pytam glownie z ciekawosci.

15
Szkółka / Android OpenGL 2.0
« dnia: Luty 24, 2014, 16:12:11 »
Witam,
Pisze pod androida w OpenGL 2.0 i mam pewien problem.
Mam 2 macierze, które sa odpowiedzialne za przekształcenia wierzchołków:
matModel[16] oraz matProjection[16]
Do ustawiania tych macierzy uzywam klasy Matrix.
Przekazuje je do shadera z każdym wywołaniem metody "rysujacej" model.
Generalnie wszystko wydaje się być dobrze, dopóki nie obracam scena. Mam wrażenie, ze źle jest ustawiona macierz projekcji, ale jeszcze nie rozumiem dlaczego.
public void onSurfaceChanged(GL10 p1, int w, int h)
{
GLES20.glViewport(0, 0, w, h);
float ratio = (float)w/(float)h;
ss.setFrustum(-1.0f*ratio, 1.0f*ratio, -1.0f, 1.0f, 1.0f, 1000.0f);
//ss.setPerspective(45.0f, ratio, 1.0f, 1000.0f);
}
public void onDrawFrame(GL10 p1)
{
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);

objQuad.identity();
//objQuad.translate(0.0f, 0.0f, -2.0f);
objQuad.rotate(rot.y, 0.0f, 1.0f, 0.0f);
objQuad.rotate(rot.x, 1.0f, 0.0f, 0.0f);

objQuad.rotate(0.0f, 0.0f, 0.0f, 1.0f);
objQuad.draw(shader);

objQuad.rotate(90.0f, 0.0f, 0.0f, 1.0f);
objQuad.draw(shader);

objQuad.rotate(90.0f, 0.0f, 0.0f, 1.0f);
objQuad.draw(shader);

objQuad.rotate(90.0f, 0.0f, 0.0f, 1.0f);
objQuad.draw(shader);
}
Metoda rotate () tak, jak inne metody operujące na macierzach, wygląda tak:
public void rotate(float a, float x, float y, float z) {
float Matt[] = new float[16];
Matrix.setIdentityM(matT, 0);
Matrix.rotateM(matT, 0, a, x, y, z);
Matrix.multiplyMM(matModel, 0, matT, 0, matModel, 0);
}
uniform mat4 u_ModelMatrix;
uniform mat4 u_ViewMatrix;
uniform mat4 u_ProjectionMatrix;
uniform mat4 u_mvpMatrix;

attribute vec4 a_Vertex;
attribute vec3 a_Normal;
attribute vec2 a_Texcoord;
attribute vec4 a_Color;

varying vec4 v_Vertex;

void main()
{
v_Vertex = a_Vertex;
gl_Position = a_Vertex * u_mvpMatrix;
}
Najbardziej dziwi mnie to, ze jest różnica miedzy zapisem:
gl_Position = u_mvpMatrix * a_Vertex;A
gl_Position = a_Vertex * u_mvpMatrix;W pierwszym przypadku wszystko wygląda w ogóle inaczej, niż powinno. W drugim zas wygląda dobrze, ale tylko przy nieruchomej scenie.
ObjQuad to zwykły prostokąt na płaszczyźnie XZ.
Z gory dziękuje za każda odpowiedz,

Strony: [1]