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>
- 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;
- HWND Text2, Text3, Text4, Text5;
- HDC wykres;
- 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;
- int stala = 50;
- int polx = 50;
- void PrzesuwanieWynikow(float pomiary[20][4]);
- void wczytajtrzy(ifstream &plik, float temp[3]);
- void odrzucanie_probek(ifstream &plik);
- 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;
- }
- if (SetTimer(hwnd, ID_TIMER, 300, NULL) == 0)
- MessageBox(hwnd, "Nie można utworzyć timera!", "Kurde", MB_ICONSTOP);
- 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, 30, 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);
- //PRZYCISKI
- g = CreateWindowEx(0, "BUTTON", "g", WS_CHILD | WS_VISIBLE,
- 170, 60, 50, 50, hwnd, NULL, hInstance, NULL);
- ax = CreateWindowEx(0, "BUTTON", "ax", WS_CHILD | WS_VISIBLE,
- 270, 60, 50, 50, hwnd, NULL, hInstance, NULL);
- ay = CreateWindowEx(0, "BUTTON", "ay", WS_CHILD | WS_VISIBLE,
- 370, 60, 50, 50, hwnd, NULL, hInstance, NULL);
- az = CreateWindowEx(0, "BUTTON", "az", WS_CHILD | WS_VISIBLE,
- 470, 60, 50, 50, hwnd, NULL, hInstance, NULL);
- wszystkie = CreateWindowEx(0, "BUTTON", "wszystkie", WS_CHILD | WS_VISIBLE,
- 570, 60, 75, 50, hwnd, NULL, hInstance, NULL);
- /*-----------------------------------------------------------*/
- Text2 = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("EDIT"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
- 715, 350, 70, 30, hwnd, (HMENU)3, hInstance, NULL);
- Text3 = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("EDIT"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
- 715, 375, 70, 30, hwnd, (HMENU)4, hInstance, NULL);
- Text4 = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("EDIT"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
- 715, 400, 70, 30, hwnd, (HMENU)5, hInstance, NULL);
- Text5 = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("EDIT"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
- 715, 425, 70, 30, hwnd, (HMENU)6, 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, 300);
- LineTo(hdcOkno, 60, 310);
- LineTo(hdcOkno, 40, 310);
- LineTo(hdcOkno, 50, 300);
- SelectObject(hdcOkno, Pudelko);
- DeleteObject(CzarnePioro);
- ReleaseDC(hwnd, hdcOkno);
- // 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 == g)
- {
- MessageBox(hwnd, "Nacisnąłeś przycisk g!", "Ha!", MB_ICONINFORMATION);
- }
- if ((HWND)lParam == ax)
- {
- MessageBox(hwnd, "Nacisnąłeś przycisk ax!", "Ha!", MB_ICONINFORMATION);
- }
- if ((HWND)lParam ==ay)
- {
- MessageBox(hwnd, "Nacisnąłeś przycisk ay!", "Ha!", MB_ICONINFORMATION);
- }
- if ((HWND)lParam == az)
- {
- MessageBox(hwnd, "Nacisnąłeś przycisk az!", "Ha!", MB_ICONINFORMATION);
- }
- if ((HWND)lParam == wszystkie)
- MessageBox(hwnd, "Nacisnąłeś przycisk wszystkie!", "Ha!", MB_ICONINFORMATION);
- break;
- case WM_TIMER:
- SetDlgItemInt(hwnd, 3, zegar, 1);
- SetDlgItemInt(hwnd, 4, DaneWyj[0]*1000, 1);
- SetDlgItemInt(hwnd, 5, DaneWyj[1]*1000, 1);
- SetDlgItemInt(hwnd, 6, DaneWyj[2]*1000, 1);
- 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);
- HDC wykres = GetDC(hwnd);
- HPEN CzerwonePioro, Pudelko;
- POINT stary;
- CzerwonePioro = CreatePen(PS_SOLID, 1, RGB(255,0,0));
- Pudelko = (HPEN)SelectObject(wykres, CzerwonePioro);
- MoveToEx(wykres, polx, 500 + stala*DaneWyj[0], &stary);
- }
- 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 += 3;
- LineTo(wykres, polx, 500 - stala*DaneWyj[0]);
- 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 licznik = 0;
- int pomin;
- float n;
- cout << "Ile probek odrzucic?" << endl;
- cin >> pomin;
- 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