PIDSDataDefine.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #pragma once
  2. #include <iostream>
  3. #include "Crc16.h"
  4. #include "Util/logger.h"
  5. #include <time.h>
  6. #include <ctime>
  7. #include <list>
  8. using namespace std;
  9. #define PIDS_DATA_HEAD (0xFD) // 帧头
  10. #define PIDS_DATA_END (0xFE) // 帧尾
  11. #define PIDS_SRC_TC1 (0x01) // 源设备车厢编号:TC1
  12. #define PIDS_SRC_TC2 (0x02) // 源设备车厢编号:TC2
  13. #define PIDS_SRC_TYPE_PIDS (0x03) // PIDS设备
  14. #define PIDS_SRC_TYPE_MIVA (0x28) // 视频分析服务器设备
  15. #define HEX2BCD(x) (((x) % 10) + ((((x) / 10) % 10) << 4)) /*20 -> 20H*/
  16. struct CarLoadData{
  17. int NoLoad;
  18. int DynamicLoad;
  19. };
  20. struct CarInferData{
  21. std::string uri;
  22. int num;
  23. };
  24. struct CarData{
  25. CarLoadData loadData;
  26. std::list<CarInferData> inferData;
  27. };
  28. struct ResultData{
  29. int Grade;
  30. int Num;
  31. };
  32. void getBCDTime(uint8_t *out)
  33. {
  34. time_t t;
  35. int i = 0;
  36. struct tm *tp = NULL;
  37. t = time(NULL);
  38. tp = localtime(&t);
  39. out[i++] = HEX2BCD(tp->tm_year-100);
  40. out[i++] = HEX2BCD(tp->tm_mon+1);
  41. out[i++] = HEX2BCD(tp->tm_mday);
  42. out[i++] = HEX2BCD(tp->tm_hour);
  43. out[i++] = HEX2BCD(tp->tm_min);
  44. out[i++] = HEX2BCD(tp->tm_sec);
  45. }
  46. void getDataTime(char *ctime)
  47. {
  48. time_t rawtime;
  49. struct tm *info;
  50. time(&rawtime);
  51. info = localtime(&rawtime);
  52. strftime(ctime, 80, "%Y-%m-%d %H:%M:%S", info);
  53. }
  54. int compare(const char* time1,const char* time2)
  55. {
  56. int year1,month1,day1,hour1,min1,sec1;
  57. int year2,month2,day2,hour2,min2,sec2;
  58. sscanf(time1,"%d-%d-%d %d:%d:%d",&year1,&month1,&day1,&hour1,&min1,&sec1);
  59. sscanf(time2,"%d-%d-%d %d:%d:%d",&year2,&month2,&day2,&hour2,&min2,&sec2);
  60. int tm1 = year1*10000+month1*100+day1;
  61. int tm2 = year2*10000+month2*100+day2;
  62. if(tm1!=tm2) return (tm1>tm2)?1:0;//如果相等,大返回1,小返回0
  63. tm1 = hour1*3600+min1*60+sec1;
  64. tm2 = hour2*3600+min2*60+sec2;//将时分秒转换为秒数
  65. if(tm1!=tm2) return (tm1>tm2)?1:0;//如果相等,大返回1,小返回0
  66. return 2;//到这里必然是相等了
  67. }