• C++ 读bin文件,部分代码。赚经验。


    编号:1
    Head:
    magicWord[0] = 0x0102   magicWord[1] = 0x0304   magicWord[2] = 0x0506   magicWord[3] = 0x0708
    version = 0x02010004
    totalPacketLen = 288
    platform = 0x000a1443
    frameNumber = 12
    timeCpuCycles = 172969774
    numDetectedObj = 99
    numTLVs = 2
    subFrameNumber = 0

    TLV_head:
    TLV_head type = 0
    TLV_head length = 128

    VitalSignsDemo_OutputStats:
    rangeBinIndexMax = 0
    rangeBinIndexPhase = 8
    maxVal = 277225536.00
    processingCyclesOut = 6916614
    rangeBinStartIndex = 8
    rangeBinEndIndex = 29
    unwrapPhasePeak_mm = 0.49
    outputFilterBreathOut = 0.08
    outputFilterHeartOut = -0.08
    heartRateEst_FFT = 46.88
    heartRateEst_FFT_4Hz = 94.92
    heartRateEst_xCorr = 133.33
    heartRateEst_peakCount_filtered = 0.00
    breathingRateEst_FFT = 8.20
    breathingRateEst_xCorr = 36.36
    breathingRateEst_peakCount = 0.00
    confidenceMetricBreathOut = 3.52
    confidenceMetricBreathOut_xCorr = 0.00
    confidenceMetricHeartOut = 0.00
    confidenceMetricHeartOut_4Hz = 0.00
    confidenceMetricHeartOut_xCorr = 0.00
    sumEnergyBreathWfm = 27.66
    sumEnergyHeartWfm = 4.59
    motionDetectedFlag = 0.00
    breathingRateEst_harmonicEnergy = 0.00
    heartRateEst_harmonicEnergy = 0.00
    reserved7 = 0.00
    reserved8 = 0.00
    reserved9 = 0.00
    reserved10 = 0.00
    reserved11 = 0.00
    reserved12 = 0.00
    reserved13 = 0.00
    reserved14 = 0.00

    TLV_head:
    TLV_head type = 1
    TLV_head length = 88

    编号:2
    Head:
    magicWord[0] = 0x0102   magicWord[1] = 0x0304   magicWord[2] = 0x0506   magicWord[3] = 0x0708
    version = 0x02010004
    totalPacketLen = 288
    platform = 0x000a1443
    frameNumber = 60
    timeCpuCycles = 652964598
    numDetectedObj = 99
    numTLVs = 2
    subFrameNumber = 0

    TLV_head:
    TLV_head type = 0
    TLV_head length = 128

    VitalSignsDemo_OutputStats:
    rangeBinIndexMax = 0
    rangeBinIndexPhase = 8
    maxVal = 35906888.00
    processingCyclesOut = 6915730
    rangeBinStartIndex = 8
    rangeBinEndIndex = 29
    unwrapPhasePeak_mm = 5.92
    outputFilterBreathOut = 0.12
    outputFilterHeartOut = 0.73
    heartRateEst_FFT = 71.48
    heartRateEst_FFT_4Hz = 124.22
    heartRateEst_xCorr = 66.67
    heartRateEst_peakCount_filtered = 4.69
    breathingRateEst_FFT = 30.47
    breathingRateEst_xCorr = 30.77
    breathingRateEst_peakCount = 9.38
    confidenceMetricBreathOut = 2.05
    confidenceMetricBreathOut_xCorr = 0.85
    confidenceMetricHeartOut = 0.30
    confidenceMetricHeartOut_4Hz = 0.30
    confidenceMetricHeartOut_xCorr = 0.76
    sumEnergyBreathWfm = 6103.43
    sumEnergyHeartWfm = 2001.75
    motionDetectedFlag = 1.00
    breathingRateEst_harmonicEnergy = 0.00
    heartRateEst_harmonicEnergy = 0.00
    reserved7 = 0.00
    reserved8 = 0.00
    reserved9 = 0.00
    reserved10 = 0.00
    reserved11 = 0.00
    reserved12 = 0.00
    reserved13 = 0.00
    reserved14 = 0.00

    TLV_head:
    TLV_head type = 1
    TLV_head length = 88

    编号:3
    Head:
    magicWord[0] = 0x0102   magicWord[1] = 0x0304   magicWord[2] = 0x0506   magicWord[3] = 0x0708
    version = 0x02010004
    totalPacketLen = 288
    platform = 0x000a1443
    frameNumber = 62
    timeCpuCycles = 672967133
    numDetectedObj = 99
    numTLVs = 2
    subFrameNumber = 0

    TLV_head:
    TLV_head type = 0
    TLV_head length = 128

    VitalSignsDemo_OutputStats:
    rangeBinIndexMax = 0
    rangeBinIndexPhase = 8
    maxVal = 42392180.00
    processingCyclesOut = 6919524
    rangeBinStartIndex = 8
    rangeBinEndIndex = 29
    unwrapPhasePeak_mm = 4.92
    outputFilterBreathOut = -0.00
    outputFilterHeartOut = 1.32
    heartRateEst_FFT = 71.48
    heartRateEst_FFT_4Hz = 124.22
    heartRateEst_xCorr = 66.67
    heartRateEst_peakCount_filtered = 4.69
    breathingRateEst_FFT = 30.47
    breathingRateEst_xCorr = 30.00
    breathingRateEst_peakCount = 9.38
    confidenceMetricBreathOut = 2.93
    confidenceMetricBreathOut_xCorr = 0.85
    confidenceMetricHeartOut = 0.30
    confidenceMetricHeartOut_4Hz = 0.30
    confidenceMetricHeartOut_xCorr = 0.76
    sumEnergyBreathWfm = 4945.99
    sumEnergyHeartWfm = 3252.34
    motionDetectedFlag = 1.00
    breathingRateEst_harmonicEnergy = 0.00
    heartRateEst_harmonicEnergy = 0.00
    reserved7 = 0.00
    reserved8 = 0.00
    reserved9 = 0.00
    reserved10 = 0.00
    reserved11 = 0.00
    reserved12 = 0.00
    reserved13 = 0.00
    reserved14 = 0.00

    TLV_head:
    TLV_head type = 1
    TLV_head length = 88

    编号:4
    Head:
    magicWord[0] = 0x0102   magicWord[1] = 0x0304   magicWord[2] = 0x0506   magicWord[3] = 0x0708
    version = 0x02010004
    totalPacketLen = 288
    platform = 0x000a1443
    frameNumber = 64
    timeCpuCycles = 692964050
    numDetectedObj = 99
    numTLVs = 2
    subFrameNumber = 0

    TLV_head:
    TLV_head type = 0
    TLV_head length = 128

    VitalSignsDemo_OutputStats:
    rangeBinIndexMax = 0
    rangeBinIndexPhase = 8
    maxVal = 38704580.00
    processingCyclesOut = 6913536
    rangeBinStartIndex = 8
    rangeBinEndIndex = 29
    unwrapPhasePeak_mm = 4.50
    outputFilterBreathOut = -0.17
    outputFilterHeartOut = 0.55
    heartRateEst_FFT = 71.48
    heartRateEst_FFT_4Hz = 124.22
    heartRateEst_xCorr = 66.67
    heartRateEst_peakCount_filtered = 4.69
    breathingRateEst_FFT = 29.30
    breathingRateEst_xCorr = 30.77
    breathingRateEst_peakCount = 9.38
    confidenceMetricBreathOut = 2.98
    confidenceMetricBreathOut_xCorr = 0.87
    confidenceMetricHeartOut = 0.30
    confidenceMetricHeartOut_4Hz = 0.30
    confidenceMetricHeartOut_xCorr = 0.76
    sumEnergyBreathWfm = 4038.94
    sumEnergyHeartWfm = 3728.13
    motionDetectedFlag = 1.00
    breathingRateEst_harmonicEnergy = 0.00
    heartRateEst_harmonicEnergy = 0.00
    reserved7 = 0.00
    reserved8 = 0.00
    reserved9 = 0.00
    reserved10 = 0.00
    reserved11 = 0.00
    reserved12 = 0.00
    reserved13 = 0.00
    reserved14 = 0.00

    TLV_head:
    TLV_head type = 1
    TLV_head length = 88

    编号:5
    Head:
    magicWord[0] = 0x0102   magicWord[1] = 0x0304   magicWord[2] = 0x0506   magicWord[3] = 0x0708
    version = 0x02010004
    totalPacketLen = 288
    platform = 0x000a1443
    frameNumber = 66
    timeCpuCycles = 712964963
    numDetectedObj = 99
    numTLVs = 2
    subFrameNumber = 0

    TLV_head:
    TLV_head type = 0
    TLV_head length = 128

    VitalSignsDemo_OutputStats:
    rangeBinIndexMax = 0
    rangeBinIndexPhase = 8
    maxVal = 230556496.00
    processingCyclesOut = 6914486
    rangeBinStartIndex = 8
    rangeBinEndIndex = 29
    unwrapPhasePeak_mm = 4.34
    outputFilterBreathOut = -0.38
    outputFilterHeartOut = -1.58
    heartRateEst_FFT = 71.48
    heartRateEst_FFT_4Hz = 124.22
    heartRateEst_xCorr = 66.67
    heartRateEst_peakCount_filtered = 4.69
    breathingRateEst_FFT = 28.12
    breathingRateEst_xCorr = 30.00
    breathingRateEst_peakCount = 9.38
    confidenceMetricBreathOut = 2.57
    confidenceMetricBreathOut_xCorr = 0.91
    confidenceMetricHeartOut = 0.30
    confidenceMetricHeartOut_4Hz = 0.30
    confidenceMetricHeartOut_xCorr = 0.76
    sumEnergyBreathWfm = 3479.94
    sumEnergyHeartWfm = 4708.27
    motionDetectedFlag = 1.00
    breathingRateEst_harmonicEnergy = 0.00
    heartRateEst_harmonicEnergy = 0.00
    reserved7 = 0.00
    reserved8 = 0.00
    reserved9 = 0.00
    reserved10 = 0.00
    reserved11 = 0.00
    reserved12 = 0.00
    reserved13 = 0.00
    reserved14 = 0.00

    TLV_head:
    TLV_head type = 1
    TLV_head length = 88

    共取到了 5个数据

    1. #define _CRT_SECURE_NO_WARNINGS
    2. #include
    3. #include
    4. #include
    5. #define FILENAME "DataOutput_XWR14xx.bin"
    6. typedef struct Header {
    7. uint16_t magicWord[4];
    8. uint32_t version;
    9. uint32_t totalPacketLen;
    10. uint32_t platform;
    11. uint32_t frameNumber;
    12. uint32_t timeCpuCycles;
    13. uint32_t numDetectedObj;
    14. uint32_t numTLVs;
    15. uint32_t subFrameNumber;
    16. }Header_t;
    17. Header_t head;
    18. typedef struct MmwDemo_output_message_tl_t
    19. {
    20. //tlv是通讯协议,在bin里这个type一个是0一个是1,
    21. //用来识别他之后的数据是output还是rangeprofile,
    22. uint32_t type; //0 //1
    23. //length告知有多少字节数据
    24. uint32_t length;
    25. } MmwDemo_output_message_tl;
    26. MmwDemo_output_message_tl TLV_head, TLV_head1;
    27. typedef struct VitalSignsDemo_OutputStats_t
    28. {
    29. uint16_t rangeBinIndexMax; // 1
    30. uint16_t rangeBinIndexPhase; // 1
    31. float maxVal; // 2
    32. uint32_t processingCyclesOut; // 3
    33. uint16_t rangeBinStartIndex; // 4
    34. uint16_t rangeBinEndIndex; // 4
    35. float unwrapPhasePeak_mm; // 5
    36. float outputFilterBreathOut; // 6
    37. float outputFilterHeartOut; // 7
    38. float heartRateEst_FFT; // 8心率FFT
    39. float heartRateEst_FFT_4Hz; // 9
    40. float heartRateEst_xCorr; // 10
    41. float heartRateEst_peakCount_filtered; // 11峰值间隔
    42. float breathingRateEst_FFT; // 12呼吸FFT
    43. float breathingRateEst_xCorr; // 13
    44. float breathingRateEst_peakCount; // 14
    45. float confidenceMetricBreathOut; // 15呼吸置信度
    46. float confidenceMetricBreathOut_xCorr; // 16
    47. float confidenceMetricHeartOut; // 17心率置信度
    48. float confidenceMetricHeartOut_4Hz; // 18
    49. float confidenceMetricHeartOut_xCorr; // 19
    50. float sumEnergyBreathWfm; // 20
    51. float sumEnergyHeartWfm; // 21
    52. float motionDetectedFlag; // 22
    53. float breathingRateEst_harmonicEnergy; // 23
    54. float heartRateEst_harmonicEnergy; // 24
    55. float reserved7; //25
    56. float reserved8; //26
    57. float reserved9; //27
    58. float reserved10; //28
    59. float reserved11; //29
    60. float reserved12; //30
    61. float reserved13; //31
    62. float reserved14; //32
    63. } VitalSignsDemo_OutputStats;
    64. VitalSignsDemo_OutputStats outputStats;
    65. void printOutputStats() {
    66. printf("\nVitalSignsDemo_OutputStats:\n");
    67. printf("rangeBinIndexMax = %hd\n", outputStats.rangeBinIndexMax); //1
    68. printf("rangeBinIndexPhase = %hd\n", outputStats.rangeBinIndexPhase); //1
    69. printf("maxVal = %.2f\n", outputStats.maxVal); //2
    70. printf("processingCyclesOut = %d\n", outputStats.processingCyclesOut); //3
    71. printf("rangeBinStartIndex = %hd\n", outputStats.rangeBinStartIndex); //4
    72. printf("rangeBinEndIndex = %hd\n", outputStats.rangeBinEndIndex); //4
    73. printf("unwrapPhasePeak_mm = %.2f\n", outputStats.unwrapPhasePeak_mm); //5
    74. printf("outputFilterBreathOut = %.2f\n", outputStats.outputFilterBreathOut); //6
    75. printf("outputFilterHeartOut = %.2f\n", outputStats.outputFilterHeartOut); //7
    76. printf("heartRateEst_FFT = %.2f\n", outputStats.heartRateEst_FFT); //8
    77. printf("heartRateEst_FFT_4Hz = %.2f\n", outputStats.heartRateEst_FFT_4Hz); //9
    78. printf("heartRateEst_xCorr = %.2f\n", outputStats.heartRateEst_xCorr); //10
    79. printf("heartRateEst_peakCount_filtered = %.2f\n", outputStats.heartRateEst_peakCount_filtered); //11
    80. printf("breathingRateEst_FFT = %.2f\n", outputStats.breathingRateEst_FFT); //12
    81. printf("breathingRateEst_xCorr = %.2f\n", outputStats.breathingRateEst_xCorr); //13
    82. printf("breathingRateEst_peakCount = %.2f\n", outputStats.breathingRateEst_peakCount); //14
    83. printf("confidenceMetricBreathOut = %.2f\n", outputStats.confidenceMetricBreathOut); //15
    84. printf("confidenceMetricBreathOut_xCorr = %.2f\n", outputStats.confidenceMetricBreathOut_xCorr); //16
    85. printf("confidenceMetricHeartOut = %.2f\n", outputStats.confidenceMetricHeartOut); //17
    86. printf("confidenceMetricHeartOut_4Hz = %.2f\n", outputStats.confidenceMetricHeartOut_4Hz); //18
    87. printf("confidenceMetricHeartOut_xCorr = %.2f\n", outputStats.confidenceMetricHeartOut_xCorr); //19
    88. printf("sumEnergyBreathWfm = %.2f\n", outputStats.sumEnergyBreathWfm); //20
    89. printf("sumEnergyHeartWfm = %.2f\n", outputStats.sumEnergyHeartWfm); //21
    90. printf("motionDetectedFlag = %.2f\n", outputStats.motionDetectedFlag); //22
    91. printf("breathingRateEst_harmonicEnergy = %.2f\n", outputStats.breathingRateEst_harmonicEnergy); //23
    92. printf("heartRateEst_harmonicEnergy = %.2f\n", outputStats.heartRateEst_harmonicEnergy); //24
    93. printf("reserved7 = %.2f\n", outputStats.reserved7); //25
    94. printf("reserved8 = %.2f\n", outputStats.reserved8); //26
    95. printf("reserved9 = %.2f\n", outputStats.reserved9); //27
    96. printf("reserved10 = %.2f\n", outputStats.reserved10); //28
    97. printf("reserved11 = %.2f\n", outputStats.reserved11); //29
    98. printf("reserved12 = %.2f\n", outputStats.reserved12); //30
    99. printf("reserved13 = %.2f\n", outputStats.reserved13); //31
    100. printf("reserved14 = %.2f\n", outputStats.reserved14); //32
    101. }
    102. void printTLV_head(MmwDemo_output_message_tl *TLV_head) {
    103. printf("\nTLV_head:\n");
    104. printf("TLV_head type = %d\n", TLV_head->type);
    105. printf("TLV_head length = %d\n", TLV_head->length);
    106. }
    107. void printHead() {
    108. printf("Head:\n");
    109. printf("magicWord[0] = %#06x\t",head.magicWord[0]);
    110. printf("magicWord[1] = %#06x\t", head.magicWord[1]);
    111. printf("magicWord[2] = %#06x\t", head.magicWord[2]);
    112. printf("magicWord[3] = %#06x\n", head.magicWord[3]);
    113. printf("version = %#010x\n",head.version);
    114. printf("totalPacketLen = %d\n", head.totalPacketLen);
    115. printf("platform = %#010x\n", head.platform);
    116. printf("frameNumber = %d\n", head.frameNumber);
    117. printf("timeCpuCycles = %d\n", head.timeCpuCycles);
    118. printf("numDetectedObj = %d\n", head.numDetectedObj);
    119. printf("numTLVs = %d\n", head.numTLVs);
    120. printf("subFrameNumber = %d\n", head.subFrameNumber);
    121. }
    122. void readFile() {
    123. FILE* file;
    124. file = fopen(FILENAME, "r");
    125. int j = 1;
    126. if (file == NULL) {
    127. perror("无法打开文件"); // 错误处理
    128. exit(1);
    129. }
    130. while (1) {
    131. // 读取文件内容
    132. size_t bytesRead;
    133. int SIZE = sizeof(Header_t);
    134. while (1) {
    135. bytesRead = fread(&head, 1, sizeof(Header_t), file);
    136. if (head.magicWord[0] == 0x0102 && head.magicWord[1] == 0x0304 && head.magicWord[2] == 0x0506 && head.magicWord[3] == 0x0708)
    137. break;
    138. else
    139. {
    140. fseek(file, 4-SIZE, SEEK_CUR);
    141. }
    142. }
    143. printf("编号:%d\n",j++);
    144. if (bytesRead > 0) {
    145. // 打印读取的数据
    146. printHead();
    147. }
    148. else { break; }
    149. bytesRead = fread(&TLV_head, 1, sizeof(MmwDemo_output_message_tl), file);
    150. if (bytesRead > 0) {
    151. // 打印读取的数据
    152. printTLV_head(&TLV_head);
    153. }
    154. else { break; }
    155. bytesRead = fread(&outputStats, 1, sizeof(VitalSignsDemo_OutputStats), file);
    156. if (bytesRead > 0) {
    157. // 打印读取的数据
    158. printOutputStats();
    159. }
    160. else { break; }
    161. bytesRead = fread(&TLV_head1, 1, sizeof(MmwDemo_output_message_tl), file);
    162. if (bytesRead > 0) {
    163. // 打印读取的数据
    164. printTLV_head(&TLV_head1);
    165. }
    166. else { break; }
    167. uint32_t t;
    168. int* tmp = (int*)malloc(TLV_head1.length*4);
    169. bytesRead = fread(&tmp, TLV_head1.length, 4, file);
    170. if (bytesRead == 0) {
    171. printf("\n共取到了 %d个数据", j-1);
    172. fclose(file);
    173. exit(1);
    174. }
    175. /*
    176. for (int i = 0; i < TLV_head1.length; i++) {
    177. bytesRead = fread(&t, 1, 4, file);
    178. if (!bytesRead) {
    179. printf("\n i = %d ,j = %d时失败",i,j);
    180. fclose(file);
    181. exit(1);
    182. }
    183. printf("%04x ", t);
    184. }
    185. */
    186. puts("");
    187. }
    188. fclose(file); // 关闭文件
    189. }
    190. int main1()
    191. {
    192. readFile();
    193. return 0;
    194. }

  • 相关阅读:
    基于java的空巢老人管理系统
    一文搞懂 MySQL 日志
    [架构之路-17]:目标系统 - 硬件平台 - ARM CPU架构与系列选型
    爬虫HTTP代理:获取多种类型数据的神器
    pandas 的基本使用
    ArrayList和LinkedList的区别?
    【Java面试小短文】HashMap是如何解决Hash冲突的?
    python入门基础(13)--类、对象、全局函数,类内部调用
    Java泛型进阶学习
    RestTemplate:简化HTTP请求的强大工具
  • 原文地址:https://blog.csdn.net/laocooon/article/details/133203583