ComWrite jede 500msec
-
Hallo,
Ich bin relativ neu in der Windows Programmierung . Könnte mir jemand dabei helfen.
(Sorry für mein Deutsch. Ich lerne immernoch )Ich schreibe ein Programm, wo ein rechner mit Microcontroller über eine Serialle schnittstelle kommuniziert. Ich habe eine COM-Writefunktion, die funktioniert, aber ich möchte, dass sie alle 500 ms schreibt.
Status = SetCommMask(hComm, EV_RXCHAR); { writeSuccess = ComWrite(StatusRequest, sizeof(StatusRequest)); ....... }
-
Programmierst du mit der nackten WINAPI?
Du kannst mit SetTimer einen Timer aufziehen, der in bestimmten Intervallen eine Funktion anspringt, vielleicht hilft dir das.
-
Dieser Beitrag wurde gelöscht!
-
@DocShoe
Vielen Dank. Es hat funktioniert. Ich habe die handle als NULL gesetzen#define TIMER_ID_SendRequest 1000 void CALLBACK SendRequest(HWND hwnd, UINT uMsg, UINT timerId, DWORD dwTime) { int SendRequestDelay = 500; writeSuccess = ComWrite(StatusRequest, sizeof(StatusRequest)); SetTimer(NULL, TIMER_ID_SendRequest, SendRequestDelay, (TIMERPROC)&SendRequest); }
-
Es reicht aus, wenn du den Timer ein Mal aufziehst, das solltest du nicht im Callback machen. Technisch passiert da zwar nix, aber ich finde es merkwürdig, ein bestehenden, laufenden Timer durch einen neuen Timer mit den gleichen Einstellungen zu ersetzen. Lies dir noch mal die Doku zu SetTimer durch.
Ein Timer läuft so lange, bis er per
KillTimer
zerstört wird. Das solltest du übrigens auch tun:// Timer aufziehen UINT_PTR send_timer = SetTimer( NULL, TIMER_ID_SEND_REQUEST, 500, &timerfunc ); // iwann später: KillTimer( send_timer );
-
Dieser Beitrag wurde gelöscht!