b9114b6463aabbb02f93f7f61be677e70992f8fa.svn-base 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #include "beepthread.h"
  2. #include "../ytCore/yt_unit_shm.h"
  3. YT_UNIT_SHM *ytShm;
  4. bool load_shm()
  5. {
  6. int shmid;
  7. key_t key;
  8. if((key = ftok(SHM_PATH,(int)SHM_PORT))==-1)
  9. return false;
  10. if((shmid = shmget(key,sizeof(YT_UNIT_SHM),IPC_CREAT|0666))==-1)
  11. return false;
  12. ytShm = (YT_UNIT_SHM *)shmat(shmid,NULL,0);
  13. return true;
  14. }
  15. BeepThread::BeepThread(QObject *parent, Ycapi *api) :
  16. QThread(parent)
  17. {
  18. this->api = api;
  19. load_shm();
  20. }
  21. void BeepThread::setBeep(int type)
  22. {
  23. this->type = type;
  24. }
  25. void BeepThread::run()
  26. {
  27. while(1)
  28. {
  29. if(ytShm->dogTimeList.dogTime[63].LASTFEED!=0x00){
  30. type = BtnBeep;
  31. ytShm->dogTimeList.dogTime[63].LASTFEED=0x00;
  32. printf("Btn Beep\n");
  33. }
  34. switch(type)
  35. {
  36. case NoBeep:
  37. break;
  38. case OkBeep:
  39. api->BeepOn(true);
  40. usleep(50000);
  41. api->BeepOn(false);
  42. usleep(50000);
  43. api->BeepOn(true);
  44. usleep(150000);
  45. api->BeepOn(false);
  46. break;
  47. case BtnBeep:
  48. api->BeepOn(true);
  49. usleep(100000);
  50. api->BeepOn(false);
  51. break;
  52. case WrongBeep:
  53. api->BeepOn(true);
  54. usleep(150000);
  55. api->BeepOn(false);
  56. usleep(50000);
  57. api->BeepOn(true);
  58. usleep(50000);
  59. api->BeepOn(false);
  60. break;
  61. }
  62. type = NoBeep;
  63. usleep(500000);
  64. }
  65. }