Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.45 KB | None | 0 0
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <time.h>
  4.  
  5. #define TIMER_ANZAHL 5
  6. #define T5sec (5)
  7.  
  8. using namespace std;
  9.  
  10. //EVENTS
  11. volatile uint16_t eventkette = 0;
  12.  
  13. void setEvent(uint16_t ev) {
  14.     eventkette |= ev;
  15. }
  16.  
  17. uint8_t eventIsSet(uint16_t ev) {
  18.     uint8_t temp = ev & eventkette;
  19.     if (temp)
  20.         return 1;
  21.  
  22.     return 0;
  23. }
  24.  
  25. void clearEvent(uint16_t ev) {
  26.     uint16_t nev = ~ev;
  27.     eventkette &= nev;
  28. }
  29.  
  30. void printevent(){
  31.     cout << eventkette << endl;
  32. }
  33.  
  34. //TIMER
  35. typedef struct {
  36.     volatile int m_time;
  37.     volatile int m_startTime;
  38.     volatile uint16_t m_ev;
  39.     volatile uint8_t m_start;
  40. } timer_struct;
  41.  
  42. volatile timer_struct timer[TIMER_ANZAHL] = { 0 };
  43.  
  44. void setTimer(uint8_t timernumber, int time, uint16_t ev) {
  45.     timer[timernumber].m_time = time;
  46.     timer[timernumber].m_ev = ev;
  47.     timer[timernumber].m_start = 0;
  48.     cout << "Timer is set for event " << ev << " time: " << time << endl;
  49. }
  50.  
  51. void startTimer(uint16_t timernumber) {
  52.     timer[timernumber].m_start = 1;
  53.     time_t now = time(0);
  54.     timer[timernumber].m_startTime = now;
  55.     cout << "Timer " << timernumber << " has been started" << endl;
  56. }
  57.  
  58. void cancelTimer(uint16_t timernumber) {
  59.     timer[timernumber].m_start = 0;
  60.     cout << "Timer " << timernumber << " has been stopped!" << endl;
  61. }
  62.  
  63. void TaskTimer() {
  64.     //getsystime
  65.     time_t now;
  66.     cout << "Systime = " << now << endl;
  67.  
  68.     while (1) {
  69.         for (uint8_t i = 0; i < TIMER_ANZAHL; i++) {
  70.  
  71.             if (timer[i].m_start == 1) {
  72.                 cout << "erstes If in TaskTimer" << endl;
  73.                 if (timer[i].m_startTime + timer[i].m_time <= (now = time(0))) {
  74.                     cout << "Systime = " << now << endl;
  75.                     timer[i].m_start = 0;
  76.                     setEvent(timer[i].m_ev);
  77.                     cout << "zweites If in TaskTimer" << endl;
  78.                 }
  79.             }
  80.         }
  81.     }
  82. }
  83.  
  84. int main(){
  85.  
  86.     setEvent(4);
  87.     printevent();
  88.     clearEvent(4);
  89.     printevent();
  90.  
  91.     int eventtest = 0;
  92.     setEvent(4);
  93.     eventtest = eventIsSet(4);
  94.     cout << "event is set: " << eventtest << endl;
  95.     clearEvent(4);
  96.     eventtest = eventIsSet(4);
  97.     cout << "event is set: " << eventtest << endl;
  98.  
  99.     setTimer(1,T5sec,1); //Timer für event 1
  100.     startTimer(1); //Start timer für event 1
  101.     //cancelTimer(1); //Cancel timer für event 1
  102.  
  103.     //Timer while 1
  104.     TaskTimer();
  105.  
  106.     return 0;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement