Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include "stdafx.h"
- //#include <tchar.h>
- #include <windows.h>
- #include <fstream>
- #include <iostream>
- #include <string>
- #include <cmath>
- #include <cstdlib>
- using namespace std;
- LPSTR NazwaKlasy = "Klasa Okienka";
- MSG Komunikat;
- ifstream plik;
- LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
- HWND g, ax, ay, az, wszystkie, lewo, prawo, gora, dol, play, pause;
- HDC wykres;
- HPEN CzerwonePioro, ZielonePioro, NiebieskiePioro, ZoltePioro, Pudelko2;
- POINT stary2;
- const WORD ID_TIMER = 1;
- int zegar = 0;
- float p1, p2, p3;
- float pomiary[20][4];
- float DaneWyj[4];
- float temp[3];
- float starypunktax;
- float starypunktay;
- float starypunktaz;
- float starypunktg;
- bool zolty = false;
- bool zielony = false;
- bool czerwony = false;
- bool drawall = false;
- bool niebieski = false;
- float stala = 250;
- float polx = 50;
- float przesuniecie = 0.3;
- int shortness = 1;
- int probki;
- void PrzesuwanieWynikow(float pomiary[20][4]);
- void wczytajtrzy(ifstream &plik, float temp[3]);
- void odrzucanie_probek(ifstream &plik, int pomin);
- void OlbiczanieDanychWyjsciowych(float pomiary[20][4], float DaneWyj[3]);
- int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
- {
- // WYPEŁNIANIE STRUKTURY
- WNDCLASSEX wc;
- wc.cbSize = sizeof(WNDCLASSEX);
- wc.style = 0;
- wc.lpfnWndProc = WndProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = hInstance;
- wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
- wc.hCursor = LoadCursor(NULL, IDC_ARROW);
- wc.hbrBackground = (HBRUSH)(3);
- wc.lpszMenuName = NULL;
- wc.lpszClassName = NazwaKlasy;
- wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
- // REJESTROWANIE KLASY OKNA
- if (!RegisterClassEx(&wc))
- {
- MessageBox(NULL, "Wysoka Komisja odmawia rejestracji tego okna!", "Niestety...",
- MB_ICONEXCLAMATION | MB_OK);
- return 1;
- }
- // TWORZENIE OKNA
- HWND hwnd;
- hwnd = CreateWindowEx(WS_EX_CLIENTEDGE, NazwaKlasy, "Oto okienko", WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT, CW_USEDEFAULT, 800, 600, NULL, NULL, hInstance, NULL);
- if (hwnd == NULL)
- {
- MessageBox(NULL, "Okno odmówiło przyjścia na świat!", "Ale kicha...", MB_ICONEXCLAMATION);
- return 1;
- }
- plik.open("outputRobotForwardB02.log");
- if (!plik.good())
- MessageBox(hwnd, "Nie udalo sie otworzyc pliku!", "Ha!", MB_ICONINFORMATION);
- //POLE TEKSTOWE DO USUWANIA N PROBEK
- HWND napis = CreateWindowEx(0, "STATIC", NULL, WS_CHILD | WS_VISIBLE |
- SS_LEFT, 280, 10, 150, 32, hwnd, NULL, hInstance, NULL);
- SetWindowText(napis, "Ile początkowych próbek usunąć?");
- HWND wpisz = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
- 400, 10, 41, 30, hwnd, NULL, hInstance, NULL);
- //pobieranie ilości próbek (w stringu)
- DWORD dlugosc = GetWindowTextLength(wpisz);
- LPSTR Bufor = (LPSTR)GlobalAlloc(GPTR, dlugosc + 1);
- GetWindowText(wpisz, Bufor, dlugosc + 1);
- probki = atoi(Bufor);
- //PRZYCISKI
- g = CreateWindowEx(0, "BUTTON", "g(żółty)", WS_CHILD | WS_VISIBLE,
- 170, 60, 60, 50, hwnd, NULL, hInstance, NULL);
- ax = CreateWindowEx(0, "BUTTON", "ax(zielony)", WS_CHILD | WS_VISIBLE,
- 250, 60, 80, 50, hwnd, NULL, hInstance, NULL);
- ay = CreateWindowEx(0, "BUTTON", "ay(czerwony)", WS_CHILD | WS_VISIBLE,
- 350, 60, 90, 50, hwnd, NULL, hInstance, NULL);
- az = CreateWindowEx(0, "BUTTON", "az(niebieski)", WS_CHILD | WS_VISIBLE,
- 460, 60, 90, 50, hwnd, NULL, hInstance, NULL);
- wszystkie = CreateWindowEx(0, "BUTTON", "wszystkie", WS_CHILD | WS_VISIBLE,
- 570, 60, 75, 50, hwnd, NULL, hInstance, NULL);
- // rozszerzanie wykresu
- lewo = CreateWindowEx(0, "BUTTON", "<<<", WS_CHILD | WS_VISIBLE,
- 40, 70, 35, 35, hwnd, NULL, hInstance, NULL);
- prawo = CreateWindowEx(0, "BUTTON", ">>>", WS_CHILD | WS_VISIBLE,
- 90, 70, 35, 35, hwnd, NULL, hInstance, NULL);
- HWND napis3 = CreateWindowEx(0, "STATIC", NULL, WS_CHILD | WS_VISIBLE |
- SS_LEFT, 30, 30, 120, 32, hwnd, NULL, hInstance, NULL);
- SetWindowText(napis3, "Regulacja rozszerzalności");
- // wydłużanie wykresu
- gora = CreateWindowEx(0, "BUTTON", "UP", WS_CHILD | WS_VISIBLE,
- 40, 160, 35, 35, hwnd, NULL, hInstance, NULL);
- dol = CreateWindowEx(0, "BUTTON", "DOWN", WS_CHILD | WS_VISIBLE,
- 90, 160, 60, 35, hwnd, NULL, hInstance, NULL);
- HWND napis4 = CreateWindowEx(0, "STATIC", NULL, WS_CHILD | WS_VISIBLE |
- SS_LEFT, 45, 115, 80, 32, hwnd, NULL, hInstance, NULL);
- SetWindowText(napis4, "Regulacja Amplitudy");
- //timer
- play = CreateWindowEx(0, "BUTTON", "PLAY", WS_CHILD | WS_VISIBLE,
- 600, 150, 50, 50, hwnd, NULL, hInstance, NULL);
- pause = CreateWindowEx(0, "BUTTON", "PAUSE", WS_CHILD | WS_VISIBLE,
- 700, 150, 50, 50, hwnd, NULL, hInstance, NULL);
- //czas
- HWND suwakczas = NULL;
- suwakczas = CreateWindowEx(0, "SCROLLBAR", NULL, WS_CHILD | WS_VISIBLE, 300, 150, 220, 21, hwnd, NULL, hInstance, NULL);
- HWND napis2 = CreateWindowEx(0, "STATIC", NULL, WS_CHILD | WS_VISIBLE |
- SS_LEFT, 200, 150, 80, 32, hwnd, NULL, hInstance, NULL);
- SetWindowText(napis2, "Podziałka czasowa");
- ShowWindow(hwnd, nCmdShow); // Pokaż okienko...
- UpdateWindow(hwnd);
- // wykres-osie
- HDC hdcOkno = GetDC(hwnd);
- HPEN CzarnePioro, Pudelko;
- POINT stary;
- CzarnePioro = CreatePen(PS_SOLID, 1, 000000);
- Pudelko = (HPEN)SelectObject(hdcOkno, CzarnePioro);
- //oś t
- MoveToEx(hdcOkno, 50, 500, &stary);
- LineTo(hdcOkno, 750, 500);
- LineTo(hdcOkno, 740, 490);
- LineTo(hdcOkno, 740, 510);
- LineTo(hdcOkno, 750, 500);
- //oś G
- MoveToEx(hdcOkno, 50, 500, &stary);
- LineTo(hdcOkno, 50, 200);
- LineTo(hdcOkno, 60, 210);
- LineTo(hdcOkno, 40, 210);
- LineTo(hdcOkno, 50, 200);
- SelectObject(hdcOkno, Pudelko);
- DeleteObject(CzarnePioro);
- ReleaseDC(hwnd, hdcOkno);
- MessageBox(NULL, "Najpierw wpisz ilość próbek do usunięcia, wybiesz zmienną/zmienne, które chcesz zobaczyć na wykresiea, a potem kliknij PLAY. :)", "Hej!", MB_ICONEXCLAMATION);
- // Pętla komunikatów
- while (GetMessage(&Komunikat, NULL, 0, 0))
- {
- TranslateMessage(&Komunikat);
- DispatchMessage(&Komunikat);
- }
- return Komunikat.wParam;
- }
- // OBSŁUGA ZDARZEŃ
- LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
- {
- switch (msg)
- {
- case WM_CLOSE:
- DestroyWindow(hwnd);
- break;
- case WM_DESTROY:
- PostQuitMessage(0);
- break;
- case WM_COMMAND:
- if ((HWND)lParam == lewo)
- {
- if (przesuniecie>1)
- przesuniecie--;
- }
- if ((HWND)lParam == prawo)
- {
- if (przesuniecie<20)
- przesuniecie++;
- }
- if ((HWND)lParam == gora)
- {
- if (stala<270)
- stala = stala + 10;
- }
- if ((HWND)lParam == dol)
- {
- if (stala>100)
- stala = stala - 10;
- }
- if ((HWND)lParam == play)
- {
- odrzucanie_probek(plik, probki);
- if (SetTimer(hwnd, ID_TIMER, 5, NULL) == 0);
- }
- if ((HWND)lParam == pause)
- {
- KillTimer(hwnd, ID_TIMER);
- }
- if ((HWND)lParam == g)
- {
- if (zolty == true)
- zolty = false;
- else if (zolty == false)
- zolty = true;
- }
- if ((HWND)lParam == ax)
- {
- if (zielony == true)
- zielony = false;
- else if (zielony == false)
- zielony = true;
- }
- if ((HWND)lParam == ay)
- {
- if (czerwony == true)
- czerwony = false;
- else if (czerwony == false)
- czerwony = true;
- }
- if ((HWND)lParam == az)
- {
- if (niebieski == true)
- niebieski = false;
- else if (niebieski == false)
- niebieski = true;
- }
- if ((HWND)lParam == wszystkie)
- {
- if (drawall == true)
- {
- drawall = false;
- czerwony = false;
- zielony = false;
- zolty = false;
- niebieski = false;
- }
- else if (drawall == false)
- {
- drawall = true;
- czerwony = true;
- zielony = true;
- zolty = true;
- niebieski = true;
- }
- }
- break;
- case WM_TIMER:
- if (zegar == 0)
- {
- for (int i = 0; i<20; i++) { //poczatkowe uzupelnianie danych
- wczytajtrzy(plik, temp);
- pomiary[i][0] = temp[0];
- pomiary[i][1] = temp[1];
- pomiary[i][2] = temp[2];
- pomiary[i][3] = sqrt(temp[0] * temp[0] + temp[1] * temp[1] + temp[2] * temp[2]);
- }
- OlbiczanieDanychWyjsciowych(pomiary, DaneWyj);
- //punkt startowy (wartość y)
- starypunktax = 500 + stala*DaneWyj[0];
- starypunktay = 500 + stala*DaneWyj[1];
- starypunktaz = 500 + stala*DaneWyj[2];
- starypunktg = 500 - stala*DaneWyj[3];
- }
- PrzesuwanieWynikow(pomiary);
- wczytajtrzy(plik, temp);
- pomiary[19][0] = temp[0];
- pomiary[19][1] = temp[1];
- pomiary[19][2] = temp[2];
- pomiary[19][3] = sqrt(temp[0] * temp[0] + temp[1] * temp[1] + temp[2] * temp[2]);
- OlbiczanieDanychWyjsciowych(pomiary, DaneWyj); //DaneWyj to tablica z danymi do rysowania
- polx += przesuniecie;
- {
- HDC wykres = GetDC(hwnd);
- CzerwonePioro = CreatePen(PS_SOLID, 1, RGB(255, 0, 0));
- NiebieskiePioro = CreatePen(PS_SOLID, 1, RGB(0, 0, 255));
- ZielonePioro = CreatePen(PS_SOLID, 1, RGB(0, 255, 0));
- ZoltePioro = CreatePen(PS_SOLID, 1, RGB(255, 255, 0));
- if (zielony == true)
- {
- Pudelko2 = (HPEN)SelectObject(wykres, ZielonePioro);
- MoveToEx(wykres, polx - przesuniecie, starypunktax, &stary2);
- LineTo(wykres, polx, 500 + stala*DaneWyj[0]);
- starypunktax = 500 + stala*DaneWyj[0];
- }
- if (czerwony == true)
- {
- SelectObject(wykres, CzerwonePioro);
- MoveToEx(wykres, polx - przesuniecie, starypunktay, &stary2);
- LineTo(wykres, polx, 500 + stala*DaneWyj[1]);
- starypunktay = 500 + stala*DaneWyj[1];
- }
- if (niebieski == true)
- {
- SelectObject(wykres, NiebieskiePioro);
- MoveToEx(wykres, polx - przesuniecie, starypunktaz, &stary2);
- LineTo(wykres, polx, 500 + stala * DaneWyj[2]);
- starypunktaz = 500 + stala * DaneWyj[2];
- }
- if (zolty == true)
- {
- SelectObject(wykres, ZoltePioro);
- MoveToEx(wykres, polx - przesuniecie, starypunktg, &stary2);
- LineTo(wykres, polx, 500 - stala * DaneWyj[3]);
- starypunktg = 500 - stala * DaneWyj[3];
- }
- zegar++; }
- break;
- default:
- return DefWindowProc(hwnd, msg, wParam, lParam);
- }
- return 0;
- }
- void OlbiczanieDanychWyjsciowych(float pomiary[20][4], float DaneWyj[3])
- {
- float sumax = 0;
- float sumay = 0;
- float sumaz = 0;
- float sumag = 0;
- float srednia = 0;
- for (int i = 0; i<20; i++) {
- sumax = sumax + pomiary[i][0];
- sumay = sumay + pomiary[i][1];
- sumaz = sumaz + pomiary[i][2];
- sumag = sumag + pomiary[i][3];
- }
- DaneWyj[0] = sumax / 20;
- DaneWyj[1] = sumay / 20;
- DaneWyj[2] = sumaz / 20;
- DaneWyj[3] = sumag / 20;
- }
- void odrzucanie_probek(ifstream &plik, int pomin)
- {
- int licznik = 0;
- float n;
- for (int i = 0; i<pomin; i++)
- for (int j = 0; j< 12; j++)
- plik >> n;
- }
- void wczytajtrzy(ifstream &plik, float temp[3])
- {
- for (int i = 0; i<3; i++)
- temp[i] = 0;
- int licznik = 0;
- int pomin;
- float n;
- int zapis_licz = 0;
- int x = 0;
- for (int i = 0; i<4; i++)
- {
- x++;
- float a;
- float b;
- float c;
- plik >> a >> b >> c;
- if (i == 1)
- {
- licznik++;
- if (plik.good())
- {
- temp[0] = a;
- temp[1] = b;
- temp[2] = c;
- }
- else break; //zakoÄcz wczytywanie danych - wyst^pi¸ jakia b¸^d (np. nie ma wi«cej danych w pliku)
- }
- } //while
- }
- void PrzesuwanieWynikow(float pomiary[20][4])
- {
- for (int i = 1; i<20; i++)
- for (int j = 0; j<4; j++)
- pomiary[i - 1][j] = pomiary[i][j];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement