Advertisement
Guest User

gosia4

a guest
May 25th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.74 KB | None | 0 0
  1. #include <windows.h>
  2. #include "stdafx.h"
  3. //#include <tchar.h>
  4. #include <windows.h>
  5. #include <fstream>
  6. #include <iostream>
  7. #include <string>
  8. #include <cmath>
  9. using namespace std;
  10.  
  11. LPSTR NazwaKlasy = "Klasa Okienka";
  12. MSG Komunikat;
  13. ifstream plik;
  14.  
  15. LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
  16.  
  17. HWND g,ax,ay,az, wszystkie;
  18. HWND Text2, Text3, Text4, Text5;
  19. HDC wykres;
  20.  
  21.  
  22. const WORD ID_TIMER = 1;
  23.  
  24. int zegar = 0;
  25. float p1, p2, p3;
  26. float pomiary[20][4];
  27. float DaneWyj[4];
  28. float temp[3];
  29. float starypunktax;
  30. float starypunktay;
  31. float starypunktaz;
  32. float starypunktg;
  33.  
  34. int stala = 50;
  35. int polx = 50;
  36.  
  37. void PrzesuwanieWynikow(float pomiary[20][4]);
  38. void wczytajtrzy(ifstream &plik, float temp[3]);
  39. void odrzucanie_probek(ifstream &plik);
  40. void OlbiczanieDanychWyjsciowych(float pomiary[20][4], float DaneWyj[3]);
  41.  
  42. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
  43. {
  44.  
  45.  
  46. // WYPEŁNIANIE STRUKTURY
  47. WNDCLASSEX wc;
  48.  
  49. wc.cbSize = sizeof(WNDCLASSEX);
  50. wc.style = 0;
  51. wc.lpfnWndProc = WndProc;
  52. wc.cbClsExtra = 0;
  53. wc.cbWndExtra = 0;
  54. wc.hInstance = hInstance;
  55. wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  56. wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  57. wc.hbrBackground = (HBRUSH)(3);
  58. wc.lpszMenuName = NULL;
  59. wc.lpszClassName = NazwaKlasy;
  60. wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
  61.  
  62. // REJESTROWANIE KLASY OKNA
  63. if (!RegisterClassEx(&wc))
  64. {
  65. MessageBox(NULL, "Wysoka Komisja odmawia rejestracji tego okna!", "Niestety...",
  66. MB_ICONEXCLAMATION | MB_OK);
  67. return 1;
  68. }
  69.  
  70. // TWORZENIE OKNA
  71. HWND hwnd;
  72.  
  73. hwnd = CreateWindowEx(WS_EX_CLIENTEDGE, NazwaKlasy, "Oto okienko", WS_OVERLAPPEDWINDOW,
  74. CW_USEDEFAULT, CW_USEDEFAULT, 800, 600, NULL, NULL, hInstance, NULL);
  75.  
  76. if (hwnd == NULL)
  77. {
  78. MessageBox(NULL, "Okno odmówiło przyjścia na świat!", "Ale kicha...", MB_ICONEXCLAMATION);
  79. return 1;
  80. }
  81.  
  82. if (SetTimer(hwnd, ID_TIMER, 300, NULL) == 0)
  83. MessageBox(hwnd, "Nie można utworzyć timera!", "Kurde", MB_ICONSTOP);
  84.  
  85. plik.open("outputRobotForwardB02.log");
  86. if (!plik.good())
  87. MessageBox(hwnd, "Nie udalo sie otworzyc pliku!", "Ha!", MB_ICONINFORMATION);
  88.  
  89. //POLE TEKSTOWE DO USUWANIA N PROBEK
  90.  
  91. HWND napis = CreateWindowEx(0, "STATIC", NULL, WS_CHILD | WS_VISIBLE |
  92. SS_LEFT, 280, 10, 150, 32, hwnd, NULL, hInstance, NULL);
  93.  
  94. SetWindowText(napis, "Ile początkowych próbek usunąć?");
  95.  
  96. HWND wpisz= CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
  97. 400, 10, 30, 30, hwnd, NULL, hInstance, NULL);
  98.  
  99. //pobieranie ilości próbek (w stringu)
  100. DWORD dlugosc = GetWindowTextLength(wpisz);
  101. LPSTR Bufor = (LPSTR)GlobalAlloc(GPTR, dlugosc + 1);
  102. GetWindowText(wpisz, Bufor, dlugosc + 1);
  103.  
  104. //PRZYCISKI
  105. g = CreateWindowEx(0, "BUTTON", "g", WS_CHILD | WS_VISIBLE,
  106. 170, 60, 50, 50, hwnd, NULL, hInstance, NULL);
  107.  
  108. ax = CreateWindowEx(0, "BUTTON", "ax", WS_CHILD | WS_VISIBLE,
  109. 270, 60, 50, 50, hwnd, NULL, hInstance, NULL);
  110.  
  111. ay = CreateWindowEx(0, "BUTTON", "ay", WS_CHILD | WS_VISIBLE,
  112. 370, 60, 50, 50, hwnd, NULL, hInstance, NULL);
  113.  
  114. az = CreateWindowEx(0, "BUTTON", "az", WS_CHILD | WS_VISIBLE,
  115. 470, 60, 50, 50, hwnd, NULL, hInstance, NULL);
  116.  
  117. wszystkie = CreateWindowEx(0, "BUTTON", "wszystkie", WS_CHILD | WS_VISIBLE,
  118. 570, 60, 75, 50, hwnd, NULL, hInstance, NULL);
  119.  
  120. /*-----------------------------------------------------------*/
  121.  
  122.  
  123.  
  124.  
  125. Text2 = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("EDIT"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
  126. 715, 350, 70, 30, hwnd, (HMENU)3, hInstance, NULL);
  127.  
  128. Text3 = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("EDIT"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
  129. 715, 375, 70, 30, hwnd, (HMENU)4, hInstance, NULL);
  130.  
  131. Text4 = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("EDIT"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
  132. 715, 400, 70, 30, hwnd, (HMENU)5, hInstance, NULL);
  133.  
  134. Text5 = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("EDIT"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
  135. 715, 425, 70, 30, hwnd, (HMENU)6, hInstance, NULL);
  136.  
  137.  
  138. /*-----------------------------------------------------------------*/
  139.  
  140.  
  141.  
  142.  
  143. //czas
  144.  
  145. HWND suwakczas = NULL;
  146. suwakczas = CreateWindowEx(0, "SCROLLBAR", NULL, WS_CHILD | WS_VISIBLE, 300, 150, 220, 21, hwnd, NULL, hInstance, NULL);
  147.  
  148. HWND napis2 = CreateWindowEx(0, "STATIC", NULL, WS_CHILD | WS_VISIBLE |
  149. SS_LEFT, 200, 150, 80, 32, hwnd, NULL, hInstance, NULL);
  150.  
  151. SetWindowText(napis2, "Podziałka czasowa");
  152.  
  153. ShowWindow(hwnd, nCmdShow); // Pokaż okienko...
  154. UpdateWindow(hwnd);
  155.  
  156. // wykres-osie
  157. HDC hdcOkno = GetDC(hwnd);
  158. HPEN CzarnePioro, Pudelko;
  159. POINT stary;
  160. CzarnePioro = CreatePen(PS_SOLID, 1, 000000);
  161. Pudelko = (HPEN)SelectObject(hdcOkno, CzarnePioro);
  162. //oś t
  163. MoveToEx(hdcOkno, 50, 500, &stary);
  164. LineTo(hdcOkno, 750, 500);
  165. LineTo(hdcOkno, 740, 490);
  166. LineTo(hdcOkno, 740, 510);
  167. LineTo(hdcOkno, 750, 500);
  168. //oś G
  169. MoveToEx(hdcOkno, 50, 500, &stary);
  170. LineTo(hdcOkno, 50, 300);
  171. LineTo(hdcOkno, 60, 310);
  172. LineTo(hdcOkno, 40, 310);
  173. LineTo(hdcOkno, 50, 300);
  174.  
  175. SelectObject(hdcOkno, Pudelko);
  176. DeleteObject(CzarnePioro);
  177. ReleaseDC(hwnd, hdcOkno);
  178.  
  179. // Pętla komunikatów
  180. while (GetMessage(&Komunikat, NULL, 0, 0))
  181. {
  182. TranslateMessage(&Komunikat);
  183. DispatchMessage(&Komunikat);
  184. }
  185. return Komunikat.wParam;
  186. }
  187.  
  188. // OBSŁUGA ZDARZEŃ
  189. LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  190. {
  191. switch (msg)
  192. {
  193. case WM_CLOSE:
  194. DestroyWindow(hwnd);
  195. break;
  196.  
  197. case WM_DESTROY:
  198. PostQuitMessage(0);
  199. break;
  200.  
  201. case WM_COMMAND:
  202. if ((HWND)lParam == g)
  203. {
  204. MessageBox(hwnd, "Nacisnąłeś przycisk g!", "Ha!", MB_ICONINFORMATION);
  205.  
  206. }
  207. if ((HWND)lParam == ax)
  208. {
  209. MessageBox(hwnd, "Nacisnąłeś przycisk ax!", "Ha!", MB_ICONINFORMATION);
  210.  
  211. }
  212. if ((HWND)lParam ==ay)
  213. {
  214. MessageBox(hwnd, "Nacisnąłeś przycisk ay!", "Ha!", MB_ICONINFORMATION);
  215.  
  216. }
  217. if ((HWND)lParam == az)
  218. {
  219. MessageBox(hwnd, "Nacisnąłeś przycisk az!", "Ha!", MB_ICONINFORMATION);
  220.  
  221. }
  222. if ((HWND)lParam == wszystkie)
  223. MessageBox(hwnd, "Nacisnąłeś przycisk wszystkie!", "Ha!", MB_ICONINFORMATION);
  224. break;
  225.  
  226. case WM_TIMER:
  227. SetDlgItemInt(hwnd, 3, zegar, 1);
  228. SetDlgItemInt(hwnd, 4, DaneWyj[0]*1000, 1);
  229. SetDlgItemInt(hwnd, 5, DaneWyj[1]*1000, 1);
  230. SetDlgItemInt(hwnd, 6, DaneWyj[2]*1000, 1);
  231. if (zegar == 0)
  232. {
  233. for (int i = 0; i<20; i++) { //poczatkowe uzupelnianie danych
  234. wczytajtrzy(plik, temp);
  235. pomiary[i][0] = temp[0];
  236. pomiary[i][1] = temp[1];
  237. pomiary[i][2] = temp[2];
  238. pomiary[i][3] = sqrt(temp[0] * temp[0] + temp[1] * temp[1] + temp[2] * temp[2]);
  239. }
  240.  
  241. OlbiczanieDanychWyjsciowych(pomiary, DaneWyj);
  242.  
  243. HDC wykres = GetDC(hwnd);
  244. HPEN CzerwonePioro, Pudelko;
  245. POINT stary;
  246. CzerwonePioro = CreatePen(PS_SOLID, 1, RGB(255,0,0));
  247. Pudelko = (HPEN)SelectObject(wykres, CzerwonePioro);
  248. MoveToEx(wykres, polx, 500 + stala*DaneWyj[0], &stary);
  249. }
  250.  
  251. PrzesuwanieWynikow(pomiary);
  252. wczytajtrzy(plik, temp);
  253. pomiary[19][0] = temp[0];
  254. pomiary[19][1] = temp[1];
  255. pomiary[19][2] = temp[2];
  256. pomiary[19][3] = sqrt(temp[0] * temp[0] + temp[1] * temp[1] + temp[2] * temp[2]);
  257. OlbiczanieDanychWyjsciowych(pomiary, DaneWyj); //DaneWyj to tablica z danymi do rysowania
  258. polx += 3;
  259. LineTo(wykres, polx, 500 - stala*DaneWyj[0]);
  260. zegar++;
  261. break;
  262.  
  263. default:
  264. return DefWindowProc(hwnd, msg, wParam, lParam);
  265. }
  266.  
  267. return 0;
  268. }
  269.  
  270. void OlbiczanieDanychWyjsciowych(float pomiary[20][4], float DaneWyj[3])
  271. {
  272. float sumax = 0;
  273. float sumay = 0;
  274. float sumaz = 0;
  275. float sumag = 0;
  276. float srednia = 0;
  277.  
  278. for (int i = 0; i<20; i++) {
  279. sumax = sumax + pomiary[i][0];
  280. sumay = sumay + pomiary[i][1];
  281. sumaz = sumaz + pomiary[i][2];
  282. sumag = sumag + pomiary[i][3];
  283. }
  284. DaneWyj[0] = sumax / 20;
  285. DaneWyj[1] = sumay / 20;
  286. DaneWyj[2] = sumaz / 20;
  287. DaneWyj[3] = sumag / 20;
  288. }
  289.  
  290. void odrzucanie_probek(ifstream &plik)
  291. {
  292. int licznik = 0;
  293. int pomin;
  294. float n;
  295.  
  296. cout << "Ile probek odrzucic?" << endl;
  297. cin >> pomin;
  298.  
  299. for (int i = 0; i<pomin; i++)
  300. for (int j = 0; j< 12; j++)
  301. plik >> n;
  302. }
  303. void wczytajtrzy(ifstream &plik, float temp[3])
  304. {
  305. for (int i = 0; i<3; i++)
  306. temp[i] = 0;
  307.  
  308. int licznik = 0;
  309. int pomin;
  310. float n;
  311.  
  312. int zapis_licz = 0;
  313. int x = 0;
  314. for (int i = 0; i<4; i++)
  315. {
  316. x++;
  317. float a;
  318. float b;
  319. float c;
  320. plik >> a >> b >> c;
  321. if (i == 1)
  322. {
  323. licznik++;
  324. if (plik.good())
  325. {
  326. temp[0] = a;
  327. temp[1] = b;
  328. temp[2] = c;
  329. }
  330. else break; //zakoÄcz wczytywanie danych - wyst^pi¸ jakia b¸^d (np. nie ma wi«cej danych w pliku)
  331. }
  332. } //while
  333. }
  334.  
  335. void PrzesuwanieWynikow(float pomiary[20][4])
  336. {
  337. for (int i = 1; i<20; i++)
  338. for (int j = 0; j<4; j++)
  339. pomiary[i - 1][j] = pomiary[i][j];
  340. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement