int LegsDetector::getFarthest() { int personID = -1; double maxDist = -INFINITY; int maxId = getHowMany(); for (int id = 0; id < maxId; id++) if (getDistance(id) > maxDist) maxDist = getDistance(personID = id); return personID; }
int LegsDetector::getClosest() { int personID = -1; double minDist = INFINITY; int maxId = getHowMany(); for (int id = 0; id < maxId; id++) if (getDistance(id) < minDist) minDist = getDistance(personID = id); return personID; }
/* * dekodowanie make code klawisza -> HEX ASCII */ char decodeASCII (int code) { if (ignoreNext == 1 && code != KEYBD_SHIFT) { ignoreNext = 0; return '0'; } else if (ignoreNext == 1 && code == KEYBD_SHIFT) { uppercaseNext = 0; ignoreNext = 0; return '0'; } /* * Obsluga klawisza LCTRL - * powoduje skasowanie zawartosci pamieci EEPROM */ if (code == KEYBD_LCTRL) { resetEEPROM(); getHowMany(); return '0'; } if (code == KEYBD_BREAK_CODE) { ignoreNext = 1; return '0'; } setBufferReady(); switch (code) { case KEYBD_SHIFT: uppercaseNext = 1; break; case KEYBD_CAPSLOCK: uppercaseNext = (uppercaseNext == 1 ? 0 : 1); break; case KEYBD_A: if (uppercaseNext == 1) { return 'A';} return 'a'; // mozna tez skorzystac z tego, ze A = (int)a + 32 case KEYBD_B: if (uppercaseNext == 1) { return 'B';} return 'b'; case KEYBD_C: if (uppercaseNext == 1) { return 'C';} return 'c'; case KEYBD_D: if (uppercaseNext == 1) { return 'D';} return 'd'; case KEYBD_E: if (uppercaseNext == 1) { return 'E';} return 'e'; case KEYBD_F: if (uppercaseNext == 1) { return 'F';} return 'f'; case KEYBD_G: if (uppercaseNext == 1) { return 'G';} return 'g'; case KEYBD_H: if (uppercaseNext == 1) { return 'H';} return 'h'; case KEYBD_I: if (uppercaseNext == 1) { return 'I';} return 'i'; case KEYBD_J: if (uppercaseNext == 1) { return 'J';} return 'j'; case KEYBD_K: if (uppercaseNext == 1) { return 'K';} return 'k'; case KEYBD_L: if (uppercaseNext == 1) { return 'L';} return 'l'; case KEYBD_M: if (uppercaseNext == 1) { return 'M';} return 'm'; case KEYBD_N: if (uppercaseNext == 1) { return 'N';} return 'n'; case KEYBD_O: if (uppercaseNext == 1) { return 'O';} return 'o'; case KEYBD_P: if (uppercaseNext == 1) { return 'P';} return 'p'; case KEYBD_Q: if (uppercaseNext == 1) { return 'Q';} return 'q'; case KEYBD_R: if (uppercaseNext == 1) { return 'R';} return 'r'; case KEYBD_S: if (uppercaseNext == 1) { return 'S';} return 's'; case KEYBD_T: if (uppercaseNext == 1) { return 'T';} return 't'; case KEYBD_U: if (uppercaseNext == 1) { return 'U';} return 'u'; case KEYBD_V: if (uppercaseNext == 1) { return 'V';} return 'v'; case KEYBD_W: if (uppercaseNext == 1) { return 'W';} return 'w'; case KEYBD_X: if (uppercaseNext == 1) { return 'X';} return 'x'; case KEYBD_Y: if (uppercaseNext == 1) { return 'Y';} return 'y'; case KEYBD_Z: if (uppercaseNext == 1) { return 'Z';} return 'z'; case KEYBD_SPACE: return ' '; default: return '0'; } }
int main(void) { SystemInit(); GPIOInit(); FLASH_Unlock(); EE_Init(); USBD_Init(&USB_OTG_dev, #ifdef USE_USB_OTG_HS USB_OTG_HS_CORE_ID, #else USB_OTG_FS_CORE_ID, #endif &USR_desc, &USBD_HID_cb, &USR_cb); bitCount = 0; currentValue = 0; set = 0; ignoreNext = 0; uppercaseNext = 0; shiftPressed = 0; buttonPressed = 0; getHowMany(); int i = 0; resetBuffer(); for(;;) { /* * Po wcisnieciu przycisku nastepuje wyslanie raportu USB * zawierajacego rejestr przycisnietych klaiwszy */ if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)) { if (!buttonPressed) { buttonPressed = 1; for (i = 0; i < 64; i++) { EE_ReadVariable(VirtAddVarTab[i], &InBuffer[i]); } USBD_HID_SendReport (&USB_OTG_dev, InBuffer, 64); } } else if (buttonPressed) { buttonPressed = 0; } if (checkBufferReady()) { /* * Jezeli zapisano 64 wcisniecia klawiszy, * nalezy oproznic EEPROM przed kontynuacja zapisu * */ if(EEPROMFull()) { GPIO_ToggleBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15); continue; } unsetBufferReady(); startTimer(); EE_WriteVariable(VirtAddVarTab[howMany=howMany+0x01], currentChar); EE_WriteVariable(VirtAddVarTab[63], howMany); } } }