Forum » Programiranje » MFC, GLUT (OpenGL) in komunikacija s serijskim portom
MFC, GLUT (OpenGL) in komunikacija s serijskim portom
aljoose ::
Pozdravljeni,
imam MFC aplikacijo, ki ima na serijski port priklopljen pospeskometer. V svoji niti bere podatke iz pospeskometra, vsakic, ko prispe znak na serijski port, se izvede event onCommunication; ko je teh znakov dovolj, aplikacija interperitra podatke (preslika pospeske v premik).
Poleg tega imam implementiran razred za igro, z uporabo glut knjiznjice, in zdaj bi rad v momentu, ko pride do eventa za komunikacijo, dostopal do objekta igre in mu spremenil pozicijo. Npr. imam razred Game, notri objekt Object in handle do objekta (Object* getObj()). V MFC dialogu, kjer berem z pospeskometra, ko zracunam novo pozicijo, osvezim pozicijo objekta, torej(pseudo, mocno poenostavljeno):
Sama igra, torej OpenGL izris, se odpre v novem z GLUT ustvarjenim oknom. Problem je pa v reakciji na pospeskometer, reakcija je, ampak ima nenormalen lag, tudi po vec kot 20 sekund!
V primeru, da MFC dialog premaknem z misko, se OpenGL okno in s tem pozicija objekta, premakne takoj na ustrezno mesto (glede na premik, dobljen iz pospeskometra).
Problem ni v OpenGL delu, ker ce v doticnem dialogu, kjer imam OnComm event, dodam gumb, in noter dam kodo, ki premakne objekt za fiksno stevilo pikslov, takoj odreagira. Ostali objekti v OpenGL oknu reagirajo normalno, izris je tekoc. Vse skupaj deluje, kot da MFC dialog "zaspi", ampak, hecno, kot kaze vseeno ne izgubljam paketov iz serijskega porta.
Meni ne uspe resiti problema, resnici na ljubo, se ne spoznam najbolj na MFC oz. WinAPI programiranje sploh. Se komu svita, kje bi lahko bila tezava?
Vnaprej hvala za vsako pomoc.
Mimogrede, uporaba MFC ni moja ideja, ampak pac mora bit.
imam MFC aplikacijo, ki ima na serijski port priklopljen pospeskometer. V svoji niti bere podatke iz pospeskometra, vsakic, ko prispe znak na serijski port, se izvede event onCommunication; ko je teh znakov dovolj, aplikacija interperitra podatke (preslika pospeske v premik).
Poleg tega imam implementiran razred za igro, z uporabo glut knjiznjice, in zdaj bi rad v momentu, ko pride do eventa za komunikacijo, dostopal do objekta igre in mu spremenil pozicijo. Npr. imam razred Game, notri objekt Object in handle do objekta (Object* getObj()). V MFC dialogu, kjer berem z pospeskometra, ko zracunam novo pozicijo, osvezim pozicijo objekta, torej(pseudo, mocno poenostavljeno):
void OnCommunication() { // sestavlja paket, 15 zlogov if ( imamo cel paket ) { Vector novaPozicija = vrniNoveKoordinate(pospesekX, pospesekY, pospesekZ); game.getObj().setPosition(novaPozicija); } }
Sama igra, torej OpenGL izris, se odpre v novem z GLUT ustvarjenim oknom. Problem je pa v reakciji na pospeskometer, reakcija je, ampak ima nenormalen lag, tudi po vec kot 20 sekund!
V primeru, da MFC dialog premaknem z misko, se OpenGL okno in s tem pozicija objekta, premakne takoj na ustrezno mesto (glede na premik, dobljen iz pospeskometra).
Problem ni v OpenGL delu, ker ce v doticnem dialogu, kjer imam OnComm event, dodam gumb, in noter dam kodo, ki premakne objekt za fiksno stevilo pikslov, takoj odreagira. Ostali objekti v OpenGL oknu reagirajo normalno, izris je tekoc. Vse skupaj deluje, kot da MFC dialog "zaspi", ampak, hecno, kot kaze vseeno ne izgubljam paketov iz serijskega porta.
Meni ne uspe resiti problema, resnici na ljubo, se ne spoznam najbolj na MFC oz. WinAPI programiranje sploh. Se komu svita, kje bi lahko bila tezava?
Vnaprej hvala za vsako pomoc.
Mimogrede, uporaba MFC ni moja ideja, ampak pac mora bit.
aljoose ::
V primeru, da koga zanima, visja privzeta prioriteta komunikacijske (serijski port) niti je povsem resila problem :)
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C++] izris v [x,y]Oddelek: Programiranje | 1161 (863) | DuleKrtola |
» | OpenGL problemOddelek: Programiranje | 2483 (2049) | Gundolf |
» | win api (c++)Oddelek: Programiranje | 2539 (1819) | Gundolf |
» | [c++] & Win32 API?Oddelek: Programiranje | 1797 (1602) | 64202 |
» | openGL v visual c++ 6.0Oddelek: Programiranje | 1940 (1667) | Lord_Rand |