Hjælp Bertel eller andre

Tags:    c++ java

<< < 12 > >>
Hej jeg ville nu til at lave mit lille lys program windows baseret så jeg har læst lidt windows programmering til c++ og det virker fint når man trykker på vinduet der kommer op så kommer der en dialogbox hvor der står "lyset er tændt" og lyset bliver også tændt men når man så trykker igen så kommer den anden dialog box "Lyset er slukket" men lyset slukker ikke og jeg kan ikke se hvad der er galt men her er koden:

#include <iostream>
#include <stdio.h>
#include <windows.h>

const char g_szClassName[] = "myWindowClass";
int valg = 0;

void SetTimeOut(HANDLE Port, int sec)
{
COMMTIMEOUTS commtimeouts;
GetCommTimeouts(Port, &commtimeouts);
commtimeouts.ReadIntervalTimeout = 1000*sec;
commtimeouts.ReadTotalTimeoutMultiplier = 10;
commtimeouts.ReadTotalTimeoutConstant = 1000*sec;
SetCommTimeouts(Port, &commtimeouts);
}

void Tx(HANDLE Port, const char *data)
{
DWORD Dummy;
WriteFile(Port, data, strlen(data), &Dummy, 0);
WriteFile(Port, "\\r\\n", 2, &Dummy, 0);
}

void Rx(HANDLE Port)
{
char Buffer[128];
DWORD Length, i;

ReadFile(Port, Buffer, 128, &Length, 0);

for(i = 0; i < Length; i++)
if(Buffer != '\\r')
printf("%c", Buffer);
}


// Step 4: the Window Procedure
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_LBUTTONDOWN:

{
DCB dcb;
HANDLE ComPort = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);

GetCommState(ComPort, &dcb);
dcb.BaudRate = 9600;
dcb.ByteSize = 8;
dcb.fRtsControl = RTS_CONTROL_DISABLE;
dcb.fOutxCtsFlow = 1;
SetCommState(ComPort, &dcb);
SetTimeOut(ComPort, 1);


if(valg == 0)
{
dcb.fRtsControl = RTS_CONTROL_ENABLE;
SetCommState(ComPort, &dcb);
MessageBox(NULL, "Lyset er nu tændt!", "Lys", MB_OK); //Her har jeg tilføjet min kode
valg = valg + 1;
}
else
{
dcb.fRtsControl = RTS_CONTROL_DISABLE;
MessageBox(NULL, "Lyset er nu slukket!", "Sluk", MB_OK);
SetCommState(ComPort, &dcb);
valg = valg - 1;
}
}



break;



case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASSEX wc;
HWND hwnd;
MSG Msg;

//Step 1: Registering the Window Class
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)(COLOR_WINDOW+1);
wc.lpszMenuName = NULL;
wc.lpszClassName = g_szClassName;
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

if(!RegisterClassEx(&wc))
{
MessageBox(NULL, "Window Registration Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}

// Step 2: Creating the Window
hwnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
g_szClassName,
"Mit første program!",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
NULL, NULL, hInstance, NULL);

if(hwnd == NULL)
{
MessageBox(NULL, "Window Creation Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}

ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);

// Step 3: The Message Loop
while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}





14 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Disse to linier skal flyttes til resource.h-filen:

#define IDI_MYICON 101
#define ID_FILE_EXIT 4001



Hej bertel jeg kan ikke lige se for mig om den regner det rigtigt ud det med m/s i dette program kan du se om det er rigtigt???

Fold kodeboks ind/udKode 




Så vidt jeg lige kan se varer en omdregning i sekunder:
(double )(End - Start)/CLOCKS_PER_SEC
Hvilket er det du beregner i Rx1.

Hvis hjulets omkreds er 0.6908 så må vindhastigheden målt i m/s være:
0.6908/((double )(End - Start)/CLOCKS_PER_SEC)

I praksis vil vindhastighen være noget større da hjulet næppe vil følge vinden 100%



Ok tak bertel



<< < 12 > >>
t