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.


  • Gesperrt

    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!

Anmelden zum Antworten