示例#1
0
//
//  ‘”Ќ ÷»я: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  Ќј«Ќј„≈Ќ»≈:  обрабатывает сообщени¤ в главном окне.
//
//  WM_COMMAND Ч обработать меню приложени¤
//  WM_PAINT Ч отрисовать главное окно
//  WM_DESTROY Ч отправить сообщение о выходе и вернутьс¤
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	HWND edit;
    switch (message)
    {
    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // –азобрать выбор в меню:
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
			case ID_BUTTON_MOVE:
				if (HIWORD(wParam) == BN_CLICKED)
				{
					edit = GetDlgItem(hWnd,ID_EDIT_MOVEX);
					TCHAR X[5];
					TCHAR Y[5];
					GetWindowText(edit, X, 5);
					edit = GetDlgItem(hWnd, ID_EDIT_MOVEY);
					GetWindowText(edit, Y, 5);
					if (wcslen(X) != 0 && wcslen(Y) != 0)
					{
						moveClock(_wtof(X),_wtof(Y));
						InvalidateRect(hWnd, 0, true);
					}
				}
				break;
			case ID_BUTTON_SCALE:
				if (HIWORD(wParam) == BN_CLICKED)
				{
					TCHAR prop[5];
					TCHAR X[5];
					TCHAR Y[5];
					edit = GetDlgItem(hWnd, ID_EDIT_SCALEPROPORTIONS);
					GetWindowText(edit, prop, 5);
					edit = GetDlgItem(hWnd, ID_EDIT_SCALEX);
					GetWindowText(edit, X, 5);
					edit = GetDlgItem(hWnd, ID_EDIT_SCALEY);
					GetWindowText(edit, Y, 5);
					if (wcslen(prop) != 0 && wcslen(X) != 0 && wcslen(Y) != 0)
					{
						scaleClock(_wtof(prop), _wtof(X), _wtof(Y));
						InvalidateRect(hWnd, 0, true);
					}
				}
				break;
			case ID_BUTTON_ROTATE:
				if (HIWORD(wParam) == BN_CLICKED)
				{
					TCHAR X[5];
					TCHAR Y[5];
					TCHAR A[5];
					edit = GetDlgItem(hWnd, ID_EDIT_ROTATEX);
					GetWindowText(edit, X, 5);
					edit = GetDlgItem(hWnd, ID_EDIT_ROTATEY);
					GetWindowText(edit, Y, 5);
					edit = GetDlgItem(hWnd, ID_EDIT_ROTATEANGLE);
					GetWindowText(edit, A, 5);
					if (wcslen(X) != 0 && wcslen(Y) != 0 && wcslen(A) != 0)
					{
						rotateClock(_wtof(X), _wtof(Y), (_wtof(A) / 180.0)*3.14);
						InvalidateRect(hWnd, 0, true);
					}
				}
				break;
			case ID_BUTTON_RESET:
				if (HIWORD(wParam) == BN_CLICKED)
				{
					reset();
					InvalidateRect(hWnd, 0, true);
				}
				break;
            default:
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
        }
        break;
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);
			draw(hdc);
            EndPaint(hWnd, &ps);
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
示例#2
0
//MAIN function.
int main(int argc, char *argv[]){
		controlGPIOs[0] = 23;
		controlGPIOs[1] = 47;
		controlGPIOs[2] = 26;
		controlGPIOs[3] = 46;
	//setup Analog IO's
	system("./analogInSetup.sh");
	
	int i, k, samples[20], min, toggle, minIndex, contine, counter, minFound;
	minFound = 0;
	min = 99999;
	counter = 0;
	contine = 1;
	if(argc < 3){
		printf("Fewers than 2 arguments detected: using default values.\n");
		ain[0] = '2';
		ain[1] = '1';
		controlGPIOs[4] = 65;
	}else{
		ain[0] = argv[2][0];
		ain[1] = argv[3][0];
		controlGPIOs[4] = atoi(argv[1]);
	}

	//Initialize IO
	initIO();

while(contine){	
	gpio_get_value(controlGPIOs[4], &toggle);
	//if toggle pressed, rotate once then counter-rotate to light source
	if(toggle == 0){
	//Clockwise rotate for a cycle and record the value in different directions
		for(i=0; i<5; i++){
			for(k=0; k<4; k++){
				rotateClock(k);
				samples[counter] = analogIn(ain[0])+analogIn(ain[1]);			
				if(min>samples[counter]){
				minIndex=counter;min=samples[counter];}
				counter++;
				
			}
		}
		
		printf("%d\n", minIndex);
		counter = 0;
		
		for(k=0; k<((20-minIndex)/4); k++){
			for(i=0; i<4; i++){
				rotateClock(3-i);
				counter++;
			}
		}
		printf("%d\n", counter);
		for(i=0; i<((20-minIndex)%4); i++){
			rotateClock(3-i);
			counter++;
		}
		printf("here%d\n", counter);
		minFound = 1;
	}
	//Track light source
	if(minFound == 1){
		//Moving Left and Right
		printf("Ain[0] =%d\tAin[1]=%d\n",  analogIn(ain[0]), analogIn(ain[1]) );
		if( (analogIn(ain[0]) ) > analogIn(ain[1]) ) {
			rotateClock(0);
			rotateClock(1);
			rotateClock(2);
			rotateClock(3);
			printf("Should move Clockwise\n");
		} else {
			rotateClock(3);
			rotateClock(2);
			rotateClock(1);
			rotateClock(0);
			printf("Should move Counterclockwise\n");
		}
		fflush(stdout);
		usleep(2000000);
	}
}
return 0;
}