简体   繁体   English

在 C/C++ 中读取 .WAV 文件数据的问题

[英]Trouble Reading Data of .WAV file in C/C++

I am trying to use an ESP32s2 in order to read a .WAV file off an SD card.我正在尝试使用 ESP32s2 来读取 SD 卡上的 .WAV 文件。

To do this, I created a 256Hz, 1sec, 16BIT PCM, 44.1Khz sample rate .WAV file in Audacity.为此,我在 Audacity 中创建了一个 256Hz、1sec、16BIT PCM、44.1Khz 采样率的 .WAV 文件。 256Hz Wav & Export Settings 256Hz Wav &导出设置

I am able to parse the header just fine, but at the 400th byte of the data section, it becomes all zeros (see output below).我能够很好地解析标头,但是在数据部分的第 400 个字节处,它变为全零(请参见下面的输出)。

I have tested the file against other parsers that I found online and it shows data through the entire file.我已经针对我在网上找到的其他解析器测试了该文件,它显示了整个文件中的数据。 I also double-checked the file on my SD card to ensure it is not corrupt.我还仔细检查了 SD 卡上的文件以确保它没有损坏。

Please someone help me figure out why I am getting all these zeros.请有人帮我弄清楚为什么我得到所有这些零。

Here is my code:这是我的代码:

#include <stdio.h>
#include <string.h>
#include <sys/unistd.h>
#include <sys/stat.h>
#include "esp_err.h"
#include "esp_log.h"
#include "esp_vfs_fat.h"
#include "driver/sdspi_host.h"
#include "driver/spi_common.h"
#include "sdmmc_cmd.h"
#include "sdkconfig.h"
#include <stdlib.h>
#include <math.h>
#include <assert.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/queue.h"
#include "driver/gpio.h"
#include "driver/dac.h"
#include "driver/timer.h"

static const char *TAG = "Output"; //Tag used in ESP32s2 output log

//SD Card Components
#define MOUNT_POINT "/sdcard"
#define SPI_DMA_CHAN    host.slot
#define PIN_NUM_MISO 20 
#define PIN_NUM_MOSI 26 
#define PIN_NUM_CLK  21 
#define PIN_NUM_CS   33

//Wav Components
char header[44]; //Holds the WAV file header
#define BUFFERSIZE  512 //number of data bytes to grab
char buffer1_8Bit[BUFFERSIZE];  //buffer which contain the WAV data.
short buffer1_16Bit[(BUFFERSIZE/2)]; //data is 16 bits little-endian so will get stored here.
typedef struct //This struct will hold information related to the WAV file that's being read.
{
  int format;
  int sample_rate;
  int bits_per_sample;
  int number_of_samples;
}wave_format;
wave_format wave_info;

void app_main(void)
{
    //Define retrun variable for error checking
    esp_err_t ret;

    // Options for mounting the filesystem.
    // If format_if_mount_failed is set to true, SD card will be partitioned and
    // formatted in case when mounting fails.
    esp_vfs_fat_sdmmc_mount_config_t mount_config = {
#ifdef CONFIG_EXAMPLE_FORMAT_IF_MOUNT_FAILED
        .format_if_mount_failed = true,
#else
        .format_if_mount_failed = false,
#endif // EXAMPLE_FORMAT_IF_MOUNT_FAILED
        .max_files = 5,
        .allocation_unit_size = 16 * 1024
    };
    sdmmc_card_t* card;
    const char mount_point[] = MOUNT_POINT;
    ESP_LOGI(TAG, "Initializing SD card");

    // Use settings defined above to initialize SD card and mount FAT filesystem.
    // Note: esp_vfs_fat_sdmmc/sdspi_mount is all-in-one convenience functions.
    // Please check its source code and implement error recovery when developing
    // production applications.
    ESP_LOGI(TAG, "Using SPI peripheral");

    sdmmc_host_t host = SDSPI_HOST_DEFAULT();
    spi_bus_config_t bus_cfg = {
        .mosi_io_num = PIN_NUM_MOSI,
        .miso_io_num = PIN_NUM_MISO,
        .sclk_io_num = PIN_NUM_CLK,
        .quadwp_io_num = -1,
        .quadhd_io_num = -1,
        .max_transfer_sz = 4000,
    };
    ret = spi_bus_initialize(host.slot, &bus_cfg, SPI_DMA_CHAN);
    if (ret != ESP_OK) {
        ESP_LOGE(TAG, "Failed to initialize bus.");
        return;
    }

    // This initializes the slot without card detect (CD) and write protect (WP) signals.
    // Modify slot_config.gpio_cd and slot_config.gpio_wp if your board has these signals.
    sdspi_device_config_t slot_config = SDSPI_DEVICE_CONFIG_DEFAULT();
    slot_config.gpio_cs = PIN_NUM_CS;
    slot_config.host_id = host.slot;

    ret = esp_vfs_fat_sdspi_mount(mount_point, &host, &slot_config, &mount_config, &card);

    if (ret != ESP_OK) {
        if (ret == ESP_FAIL) {
            ESP_LOGE(TAG, "Failed to mount filesystem. "
                "If you want the card to be formatted, set the EXAMPLE_FORMAT_IF_MOUNT_FAILED menuconfig option.");
        } else {
            ESP_LOGE(TAG, "Failed to initialize the card (%s). "
                "Make sure SD card lines have pull-up resistors in place.", esp_err_to_name(ret));
        }
        return;
    }

    // Card has been initialized, print its properties
    sdmmc_card_print_info(stdout, card);

    // Use POSIX and C standard library functions to work with files.
    // First create a file.
    ESP_LOGI(TAG, "Opening file");
    FILE* f = fopen(MOUNT_POINT"/256.wav", "r");
    if (f == NULL) {
        ESP_LOGE(TAG, "Failed to open file for reading");
        return;
    }

    //Get the header of the file    
    fgets(header, sizeof(header), f);

    //Extract the Sample Rate field from the header
    wave_info.sample_rate |= header[24];
    wave_info.sample_rate |= (header[25]<<8);
    //Ouput to log
    ESP_LOGI(TAG, "Sample Rate: %d", wave_info.sample_rate);

    //Extract the audio format from the header
    wave_info.format |= header[20];
    wave_info.format |= (header[21]<<8);
    //Ouput to log
    ESP_LOGI(TAG, "Audio Format: %d", wave_info.format);

    //Extract the bits per sample from the header
    wave_info.bits_per_sample |= header[34];
    wave_info.bits_per_sample |= (header[35]<<8);
    //Ouput to log
    ESP_LOGI(TAG, "Bits Per Sample: %d", wave_info.bits_per_sample);

    //Extract the bits per sample from the header
    wave_info.number_of_samples |= header[40];
    wave_info.number_of_samples |= (header[41] << 8);
    wave_info.number_of_samples |= header[42] << 16;
    wave_info.number_of_samples |= (header[43] << 24);
    //Ouput to log
    ESP_LOGI(TAG, "Number of Samples: %0.0f", (float)wave_info.number_of_samples * ((float)8/ (float)wave_info.bits_per_sample));

    //Wave file I am using is 16 BIT PCM
    //I am aware that data is 16 bit so the bytes need to be combined,
    //but for degbugging I am going to only display the raw bytes
    fgets(buffer1_8Bit, sizeof(buffer1_8Bit), f);
    //Ouput to log
    for(int i = 0; i < sizeof(buffer1_8Bit); i++){
        ESP_LOGI(TAG, "Data Byte Number: %d, Value: %x",i, buffer1_8Bit[i]);
    } 

    //Close the file
    fclose(f);

    // All done, unmount partition and disable SDMMC or SPI peripheral
    esp_vfs_fat_sdcard_unmount(mount_point, card);
    ESP_LOGI(TAG, "Card unmounted");

    spi_bus_free(host.slot);

}

Here is my output: NOTICE BYTE 400+这是我的输出:NOTICE BYTE 400+

Name: SD16G                                           <---------- SD CARD INFO
Type: SDHC/SDXC
Speed: 20 MHz
Size: 15238MB
I (379) Output: Opening file                             <---------- WAV HEADER INFO 
I (389) Output: Sample Rate: 44100
I (389) Output: Audio Format: 1
I (389) Output: Bits Per Sample: 16
I (389) Output: Number of Samples: 44100
I (399) Output: Data Byte Number: 0, Value: 0           <---------- WAV DATA STARTS
I (399) Output: Data Byte Number: 1, Value: 0
I (409) Output: Data Byte Number: 2, Value: 0
I (409) Output: Data Byte Number: 3, Value: d0
I (419) Output: Data Byte Number: 4, Value: 4
I (419) Output: Data Byte Number: 5, Value: 9e
I (429) Output: Data Byte Number: 6, Value: 9
I (429) Output: Data Byte Number: 7, Value: 6c
I (439) Output: Data Byte Number: 8, Value: e
I (439) Output: Data Byte Number: 9, Value: 2d
I (449) Output: Data Byte Number: 10, Value: 13
I (449) Output: Data Byte Number: 11, Value: f0
I (459) Output: Data Byte Number: 12, Value: 17
I (459) Output: Data Byte Number: 13, Value: a5
I (469) Output: Data Byte Number: 14, Value: 1c
I (469) Output: Data Byte Number: 15, Value: 4c
I (479) Output: Data Byte Number: 16, Value: 21
I (479) Output: Data Byte Number: 17, Value: f6
I (489) Output: Data Byte Number: 18, Value: 25
I (489) Output: Data Byte Number: 19, Value: 7d
I (499) Output: Data Byte Number: 20, Value: 2a
I (509) Output: Data Byte Number: 21, Value: 8
I (509) Output: Data Byte Number: 22, Value: 2f
I (519) Output: Data Byte Number: 23, Value: 74
I (519) Output: Data Byte Number: 24, Value: 33
I (529) Output: Data Byte Number: 25, Value: d6
I (529) Output: Data Byte Number: 26, Value: 37
I (539) Output: Data Byte Number: 27, Value: 20
I (539) Output: Data Byte Number: 28, Value: 3c
I (549) Output: Data Byte Number: 29, Value: 55
I (549) Output: Data Byte Number: 30, Value: 40
I (559) Output: Data Byte Number: 31, Value: 72
I (559) Output: Data Byte Number: 32, Value: 44
I (569) Output: Data Byte Number: 33, Value: 77
I (569) Output: Data Byte Number: 34, Value: 48
I (579) Output: Data Byte Number: 35, Value: 63
I (579) Output: Data Byte Number: 36, Value: 4c
I (589) Output: Data Byte Number: 37, Value: 30
I (589) Output: Data Byte Number: 38, Value: 50
I (599) Output: Data Byte Number: 39, Value: e5
I (599) Output: Data Byte Number: 40, Value: 53
I (609) Output: Data Byte Number: 41, Value: 74
I (609) Output: Data Byte Number: 42, Value: 57
I (619) Output: Data Byte Number: 43, Value: ed
I (619) Output: Data Byte Number: 44, Value: 5a
I (629) Output: Data Byte Number: 45, Value: 3a
I (639) Output: Data Byte Number: 46, Value: 5e
I (639) Output: Data Byte Number: 47, Value: 70
I (649) Output: Data Byte Number: 48, Value: 61
I (649) Output: Data Byte Number: 49, Value: 7b
I (659) Output: Data Byte Number: 50, Value: 64
I (659) Output: Data Byte Number: 51, Value: 64
I (669) Output: Data Byte Number: 52, Value: 67
I (669) Output: Data Byte Number: 53, Value: 2c
I (679) Output: Data Byte Number: 54, Value: 6a
I (679) Output: Data Byte Number: 55, Value: c0
I (689) Output: Data Byte Number: 56, Value: 6c
I (689) Output: Data Byte Number: 57, Value: 40
I (699) Output: Data Byte Number: 58, Value: 6f
I (699) Output: Data Byte Number: 59, Value: 86
I (709) Output: Data Byte Number: 60, Value: 71
I (709) Output: Data Byte Number: 61, Value: af
I (719) Output: Data Byte Number: 62, Value: 73
I (719) Output: Data Byte Number: 63, Value: a7
I (729) Output: Data Byte Number: 64, Value: 75
I (729) Output: Data Byte Number: 65, Value: 79
I (739) Output: Data Byte Number: 66, Value: 77
I (739) Output: Data Byte Number: 67, Value: 1c
I (749) Output: Data Byte Number: 68, Value: 79
I (759) Output: Data Byte Number: 69, Value: 96
I (759) Output: Data Byte Number: 70, Value: 7a
I (769) Output: Data Byte Number: 71, Value: e4
I (769) Output: Data Byte Number: 72, Value: 7b
I (779) Output: Data Byte Number: 73, Value: fc
I (779) Output: Data Byte Number: 74, Value: 7c
I (789) Output: Data Byte Number: 75, Value: fb
I (789) Output: Data Byte Number: 76, Value: 7d
I (799) Output: Data Byte Number: 77, Value: b2
I (799) Output: Data Byte Number: 78, Value: 7e
I (809) Output: Data Byte Number: 79, Value: 54
I (809) Output: Data Byte Number: 80, Value: 7f
I (819) Output: Data Byte Number: 81, Value: b7
I (819) Output: Data Byte Number: 82, Value: 7f
I (829) Output: Data Byte Number: 83, Value: f1
I (829) Output: Data Byte Number: 84, Value: 7f
I (839) Output: Data Byte Number: 85, Value: ff
I (839) Output: Data Byte Number: 86, Value: 7f
I (849) Output: Data Byte Number: 87, Value: d8
I (849) Output: Data Byte Number: 88, Value: 7f
I (859) Output: Data Byte Number: 89, Value: 90
I (859) Output: Data Byte Number: 90, Value: 7f
I (869) Output: Data Byte Number: 91, Value: b
I (869) Output: Data Byte Number: 92, Value: 7f
I (879) Output: Data Byte Number: 93, Value: 61
I (889) Output: Data Byte Number: 94, Value: 7e
I (889) Output: Data Byte Number: 95, Value: 85
I (899) Output: Data Byte Number: 96, Value: 7d
I (899) Output: Data Byte Number: 97, Value: 7f
I (909) Output: Data Byte Number: 98, Value: 7c
I (909) Output: Data Byte Number: 99, Value: 48
I (919) Output: Data Byte Number: 100, Value: 7b
I (919) Output: Data Byte Number: 101, Value: e9
I (929) Output: Data Byte Number: 102, Value: 79
I (929) Output: Data Byte Number: 103, Value: 57
I (939) Output: Data Byte Number: 104, Value: 78
I (939) Output: Data Byte Number: 105, Value: a2
I (949) Output: Data Byte Number: 106, Value: 76
I (949) Output: Data Byte Number: 107, Value: ba
I (959) Output: Data Byte Number: 108, Value: 74
I (959) Output: Data Byte Number: 109, Value: ae
I (969) Output: Data Byte Number: 110, Value: 72
I (969) Output: Data Byte Number: 111, Value: 74
I (979) Output: Data Byte Number: 112, Value: 70
I (989) Output: Data Byte Number: 113, Value: 14
I (989) Output: Data Byte Number: 114, Value: 6e
I (999) Output: Data Byte Number: 115, Value: 8b
I (999) Output: Data Byte Number: 116, Value: 6b
I (1009) Output: Data Byte Number: 117, Value: dd
I (1009) Output: Data Byte Number: 118, Value: 68
I (1019) Output: Data Byte Number: 119, Value: 3
I (1019) Output: Data Byte Number: 120, Value: 66
I (1029) Output: Data Byte Number: 121, Value: d
I (1029) Output: Data Byte Number: 122, Value: 63
I (1039) Output: Data Byte Number: 123, Value: eb
I (1039) Output: Data Byte Number: 124, Value: 5f
I (1049) Output: Data Byte Number: 125, Value: ac
I (1049) Output: Data Byte Number: 126, Value: 5c
I (1059) Output: Data Byte Number: 127, Value: 48
I (1069) Output: Data Byte Number: 128, Value: 59
I (1069) Output: Data Byte Number: 129, Value: c6
I (1079) Output: Data Byte Number: 130, Value: 55
I (1079) Output: Data Byte Number: 131, Value: 22
I (1089) Output: Data Byte Number: 132, Value: 52
I (1089) Output: Data Byte Number: 133, Value: 65
I (1099) Output: Data Byte Number: 134, Value: 4e
I (1099) Output: Data Byte Number: 135, Value: 84
I (1109) Output: Data Byte Number: 136, Value: 4a
I (1109) Output: Data Byte Number: 137, Value: 93
I (1119) Output: Data Byte Number: 138, Value: 46
I (1119) Output: Data Byte Number: 139, Value: 7a
I (1129) Output: Data Byte Number: 140, Value: 42
I (1139) Output: Data Byte Number: 141, Value: 5b
I (1139) Output: Data Byte Number: 142, Value: 3e
I (1149) Output: Data Byte Number: 143, Value: 11
I (1149) Output: Data Byte Number: 144, Value: 3a
I (1159) Output: Data Byte Number: 145, Value: c6
I (1159) Output: Data Byte Number: 146, Value: 35
I (1169) Output: Data Byte Number: 147, Value: 56
I (1169) Output: Data Byte Number: 148, Value: 31
I (1179) Output: Data Byte Number: 149, Value: e3
I (1179) Output: Data Byte Number: 150, Value: 2c
I (1189) Output: Data Byte Number: 151, Value: 53
I (1189) Output: Data Byte Number: 152, Value: 28
I (1199) Output: Data Byte Number: 153, Value: be
I (1209) Output: Data Byte Number: 154, Value: 23
I (1209) Output: Data Byte Number: 155, Value: 16
I (1219) Output: Data Byte Number: 156, Value: 1f
I (1219) Output: Data Byte Number: 157, Value: 67
I (1229) Output: Data Byte Number: 158, Value: 1a
I (1229) Output: Data Byte Number: 159, Value: ab
I (1239) Output: Data Byte Number: 160, Value: 15
I (1239) Output: Data Byte Number: 161, Value: e9
I (1249) Output: Data Byte Number: 162, Value: 10
I (1249) Output: Data Byte Number: 163, Value: 21
I (1259) Output: Data Byte Number: 164, Value: c
I (1259) Output: Data Byte Number: 165, Value: 53
I (1269) Output: Data Byte Number: 166, Value: 7
I (1279) Output: Data Byte Number: 167, Value: 86
I (1279) Output: Data Byte Number: 168, Value: 2
I (1289) Output: Data Byte Number: 169, Value: b2
I (1289) Output: Data Byte Number: 170, Value: fd
I (1299) Output: Data Byte Number: 171, Value: e5
I (1299) Output: Data Byte Number: 172, Value: f8
I (1309) Output: Data Byte Number: 173, Value: 16
I (1309) Output: Data Byte Number: 174, Value: f4
I (1319) Output: Data Byte Number: 175, Value: 50
I (1319) Output: Data Byte Number: 176, Value: ef
I (1329) Output: Data Byte Number: 177, Value: 8c
I (1329) Output: Data Byte Number: 178, Value: ea
I (1339) Output: Data Byte Number: 179, Value: d0
I (1349) Output: Data Byte Number: 180, Value: e5
I (1349) Output: Data Byte Number: 181, Value: 1f
I (1359) Output: Data Byte Number: 182, Value: e1
I (1359) Output: Data Byte Number: 183, Value: 79
I (1369) Output: Data Byte Number: 184, Value: dc
I (1369) Output: Data Byte Number: 185, Value: e2
I (1379) Output: Data Byte Number: 186, Value: d7
I (1379) Output: Data Byte Number: 187, Value: 51
I (1389) Output: Data Byte Number: 188, Value: d3
I (1389) Output: Data Byte Number: 189, Value: e0
I (1399) Output: Data Byte Number: 190, Value: ce
I (1399) Output: Data Byte Number: 191, Value: 6a
I (1409) Output: Data Byte Number: 192, Value: ca
I (1419) Output: Data Byte Number: 193, Value: 23
I (1419) Output: Data Byte Number: 194, Value: c6
I (1429) Output: Data Byte Number: 195, Value: d5
I (1429) Output: Data Byte Number: 196, Value: c1
I (1439) Output: Data Byte Number: 197, Value: b6
I (1439) Output: Data Byte Number: 198, Value: bd
I (1449) Output: Data Byte Number: 199, Value: 9b
I (1449) Output: Data Byte Number: 200, Value: b9
I (1459) Output: Data Byte Number: 201, Value: ab
I (1459) Output: Data Byte Number: 202, Value: b5
I (1469) Output: Data Byte Number: 203, Value: c7
I (1469) Output: Data Byte Number: 204, Value: b1
I (1479) Output: Data Byte Number: 205, Value: 8
I (1489) Output: Data Byte Number: 206, Value: ae
I (1489) Output: Data Byte Number: 207, Value: 65
I (1499) Output: Data Byte Number: 208, Value: aa
I (1499) Output: Data Byte Number: 209, Value: df
I (1509) Output: Data Byte Number: 210, Value: a6
I (1509) Output: Data Byte Number: 211, Value: 7b
I (1519) Output: Data Byte Number: 212, Value: a3
I (1519) Output: Data Byte Number: 213, Value: 3b
I (1529) Output: Data Byte Number: 214, Value: a0
I (1529) Output: Data Byte Number: 215, Value: 16
I (1539) Output: Data Byte Number: 216, Value: 9d
I (1539) Output: Data Byte Number: 217, Value: 1e
I (1549) Output: Data Byte Number: 218, Value: 9a
I (1559) Output: Data Byte Number: 219, Value: 43
I (1559) Output: Data Byte Number: 220, Value: 97
I (1569) Output: Data Byte Number: 221, Value: 95
I (1569) Output: Data Byte Number: 222, Value: 94
I (1579) Output: Data Byte Number: 223, Value: 8
I (1579) Output: Data Byte Number: 224, Value: 92
I (1589) Output: Data Byte Number: 225, Value: a7
I (1589) Output: Data Byte Number: 226, Value: 8f
I (1599) Output: Data Byte Number: 227, Value: 6a
I (1599) Output: Data Byte Number: 228, Value: 8d
I (1609) Output: Data Byte Number: 229, Value: 5e
I (1609) Output: Data Byte Number: 230, Value: 8b
I (1619) Output: Data Byte Number: 231, Value: 72
I (1619) Output: Data Byte Number: 232, Value: 89
I (1629) Output: Data Byte Number: 233, Value: be
I (1639) Output: Data Byte Number: 234, Value: 87
I (1639) Output: Data Byte Number: 235, Value: 26
I (1649) Output: Data Byte Number: 236, Value: 86
I (1649) Output: Data Byte Number: 237, Value: c8
I (1659) Output: Data Byte Number: 238, Value: 84
I (1659) Output: Data Byte Number: 239, Value: 8f
I (1669) Output: Data Byte Number: 240, Value: 83
I (1669) Output: Data Byte Number: 241, Value: 85
I (1679) Output: Data Byte Number: 242, Value: 82
I (1679) Output: Data Byte Number: 243, Value: aa
I (1689) Output: Data Byte Number: 244, Value: 81
I (1689) Output: Data Byte Number: 245, Value: f6
I (1699) Output: Data Byte Number: 246, Value: 80
I (1709) Output: Data Byte Number: 247, Value: 7d
I (1709) Output: Data Byte Number: 248, Value: 80
I (1719) Output: Data Byte Number: 249, Value: 23
I (1719) Output: Data Byte Number: 250, Value: 80
I (1729) Output: Data Byte Number: 251, Value: 3
I (1729) Output: Data Byte Number: 252, Value: 80
I (1739) Output: Data Byte Number: 253, Value: d
I (1739) Output: Data Byte Number: 254, Value: 80
I (1749) Output: Data Byte Number: 255, Value: 43
I (1749) Output: Data Byte Number: 256, Value: 80
I (1759) Output: Data Byte Number: 257, Value: aa
I (1759) Output: Data Byte Number: 258, Value: 80
I (1769) Output: Data Byte Number: 259, Value: 43
I (1779) Output: Data Byte Number: 260, Value: 81
I (1779) Output: Data Byte Number: 261, Value: fd
I (1789) Output: Data Byte Number: 262, Value: 81
I (1789) Output: Data Byte Number: 263, Value: f7
I (1799) Output: Data Byte Number: 264, Value: 82
I (1799) Output: Data Byte Number: 265, Value: e
I (1809) Output: Data Byte Number: 266, Value: 84
I (1809) Output: Data Byte Number: 267, Value: 5a
I (1819) Output: Data Byte Number: 268, Value: 85
I (1819) Output: Data Byte Number: 269, Value: d3
I (1829) Output: Data Byte Number: 270, Value: 86
I (1829) Output: Data Byte Number: 271, Value: 72
I (1839) Output: Data Byte Number: 272, Value: 88
I (1849) Output: Data Byte Number: 273, Value: 43
I (1849) Output: Data Byte Number: 274, Value: 8a
I (1859) Output: Data Byte Number: 275, Value: 3a
I (1859) Output: Data Byte Number: 276, Value: 8c
I (1869) Output: Data Byte Number: 277, Value: 5d
I (1869) Output: Data Byte Number: 278, Value: 8e
I (1879) Output: Data Byte Number: 279, Value: aa
I (1879) Output: Data Byte Number: 280, Value: 90
I (1889) Output: Data Byte Number: 281, Value: 1b
I (1889) Output: Data Byte Number: 282, Value: 93
I (1899) Output: Data Byte Number: 283, Value: bb
I (1899) Output: Data Byte Number: 284, Value: 95
I (1909) Output: Data Byte Number: 285, Value: 78
I (1919) Output: Data Byte Number: 286, Value: 98
I (1919) Output: Data Byte Number: 287, Value: 62
I (1929) Output: Data Byte Number: 288, Value: 9b
I (1929) Output: Data Byte Number: 289, Value: 6f
I (1939) Output: Data Byte Number: 290, Value: 9e
I (1939) Output: Data Byte Number: 291, Value: 9d
I (1949) Output: Data Byte Number: 292, Value: a1
I (1949) Output: Data Byte Number: 293, Value: ed
I (1959) Output: Data Byte Number: 294, Value: a4
I (1959) Output: Data Byte Number: 295, Value: 63
I (1969) Output: Data Byte Number: 296, Value: a8
I (1969) Output: Data Byte Number: 297, Value: ee
I (1979) Output: Data Byte Number: 298, Value: ab
I (1989) Output: Data Byte Number: 299, Value: aa
I (1989) Output: Data Byte Number: 300, Value: af
I (1999) Output: Data Byte Number: 301, Value: 6c
I (1999) Output: Data Byte Number: 302, Value: b3
I (2009) Output: Data Byte Number: 303, Value: 5d
I (2009) Output: Data Byte Number: 304, Value: b7
I (2019) Output: Data Byte Number: 305, Value: 5d
I (2019) Output: Data Byte Number: 306, Value: bb
I (2029) Output: Data Byte Number: 307, Value: 7b
I (2029) Output: Data Byte Number: 308, Value: bf
I (2039) Output: Data Byte Number: 309, Value: ae
I (2039) Output: Data Byte Number: 310, Value: c3
I (2049) Output: Data Byte Number: 311, Value: fb
I (2059) Output: Data Byte Number: 312, Value: c7
I (2059) Output: Data Byte Number: 313, Value: 53
I (2069) Output: Data Byte Number: 314, Value: cc
I (2069) Output: Data Byte Number: 315, Value: cb
I (2079) Output: Data Byte Number: 316, Value: d0
I (2079) Output: Data Byte Number: 317, Value: 46
I (2089) Output: Data Byte Number: 318, Value: d5
I (2089) Output: Data Byte Number: 319, Value: db
I (2099) Output: Data Byte Number: 320, Value: d9
I (2099) Output: Data Byte Number: 321, Value: 7b
I (2109) Output: Data Byte Number: 322, Value: de
I (2109) Output: Data Byte Number: 323, Value: 25
I (2119) Output: Data Byte Number: 324, Value: e3
I (2129) Output: Data Byte Number: 325, Value: d9
I (2129) Output: Data Byte Number: 326, Value: e7
I (2139) Output: Data Byte Number: 327, Value: 9b
I (2139) Output: Data Byte Number: 328, Value: ec
I (2149) Output: Data Byte Number: 329, Value: 5d
I (2149) Output: Data Byte Number: 330, Value: f1
I (2159) Output: Data Byte Number: 331, Value: 2a
I (2159) Output: Data Byte Number: 332, Value: f6
I (2169) Output: Data Byte Number: 333, Value: f9
I (2169) Output: Data Byte Number: 334, Value: fa
I (2179) Output: Data Byte Number: 335, Value: c5
I (2179) Output: Data Byte Number: 336, Value: ff
I (2189) Output: Data Byte Number: 337, Value: 9c
I (2199) Output: Data Byte Number: 338, Value: 4
I (2199) Output: Data Byte Number: 339, Value: 63
I (2209) Output: Data Byte Number: 340, Value: 9
I (2209) Output: Data Byte Number: 341, Value: 35
I (2219) Output: Data Byte Number: 342, Value: e
I (2219) Output: Data Byte Number: 343, Value: f6
I (2229) Output: Data Byte Number: 344, Value: 12
I (2229) Output: Data Byte Number: 345, Value: b8
I (2239) Output: Data Byte Number: 346, Value: 17
I (2239) Output: Data Byte Number: 347, Value: 6e
I (2249) Output: Data Byte Number: 348, Value: 1c
I (2249) Output: Data Byte Number: 349, Value: 1b
I (2259) Output: Data Byte Number: 350, Value: 21
I (2259) Output: Data Byte Number: 351, Value: b9
I (2269) Output: Data Byte Number: 352, Value: 25
I (2279) Output: Data Byte Number: 353, Value: 4f
I (2279) Output: Data Byte Number: 354, Value: 2a
I (2289) Output: Data Byte Number: 355, Value: cd
I (2289) Output: Data Byte Number: 356, Value: 2e
I (2299) Output: Data Byte Number: 357, Value: 47
I (2299) Output: Data Byte Number: 358, Value: 33
I (2309) Output: Data Byte Number: 359, Value: a0
I (2309) Output: Data Byte Number: 360, Value: 37
I (2319) Output: Data Byte Number: 361, Value: f0
I (2319) Output: Data Byte Number: 362, Value: 3b
I (2329) Output: Data Byte Number: 363, Value: 24
I (2329) Output: Data Byte Number: 364, Value: 40
I (2339) Output: Data Byte Number: 365, Value: 43
I (2349) Output: Data Byte Number: 366, Value: 44
I (2349) Output: Data Byte Number: 367, Value: 49
I (2359) Output: Data Byte Number: 368, Value: 48
I (2359) Output: Data Byte Number: 369, Value: 36
I (2369) Output: Data Byte Number: 370, Value: 4c
I (2369) Output: Data Byte Number: 371, Value: 4
I (2379) Output: Data Byte Number: 372, Value: 50
I (2379) Output: Data Byte Number: 373, Value: b8
I (2389) Output: Data Byte Number: 374, Value: 53
I (2389) Output: Data Byte Number: 375, Value: 50
I (2399) Output: Data Byte Number: 376, Value: 57
I (2399) Output: Data Byte Number: 377, Value: c0
I (2409) Output: Data Byte Number: 378, Value: 5a
I (2419) Output: Data Byte Number: 379, Value: 1a
I (2419) Output: Data Byte Number: 380, Value: 5e
I (2429) Output: Data Byte Number: 381, Value: 47
I (2429) Output: Data Byte Number: 382, Value: 61
I (2439) Output: Data Byte Number: 383, Value: 5a
I (2439) Output: Data Byte Number: 384, Value: 64
I (2449) Output: Data Byte Number: 385, Value: 42
I (2449) Output: Data Byte Number: 386, Value: 67
I (2459) Output: Data Byte Number: 387, Value: c
I (2459) Output: Data Byte Number: 388, Value: 6a
I (2469) Output: Data Byte Number: 389, Value: a4
I (2469) Output: Data Byte Number: 390, Value: 6c
I (2479) Output: Data Byte Number: 391, Value: 25
I (2489) Output: Data Byte Number: 392, Value: 6f
I (2489) Output: Data Byte Number: 393, Value: 69
I (2499) Output: Data Byte Number: 394, Value: 71
I (2499) Output: Data Byte Number: 395, Value: 9a
I (2509) Output: Data Byte Number: 396, Value: 73
I (2509) Output: Data Byte Number: 397, Value: 8f
I (2519) Output: Data Byte Number: 398, Value: 75
I (2519) Output: Data Byte Number: 399, Value: 66
I (2529) Output: Data Byte Number: 400, Value: 77
I (2529) Output: Data Byte Number: 401, Value: a
I (2539) Output: Data Byte Number: 402, Value: 0    <---------- RIGHT HERE 
I (2539) Output: Data Byte Number: 403, Value: 0
I (2549) Output: Data Byte Number: 404, Value: 0
I (2549) Output: Data Byte Number: 405, Value: 0
I (2559) Output: Data Byte Number: 406, Value: 0
I (2569) Output: Data Byte Number: 407, Value: 0
I (2569) Output: Data Byte Number: 408, Value: 0
I (2579) Output: Data Byte Number: 409, Value: 0
I (2579) Output: Data Byte Number: 410, Value: 0
I (2589) Output: Data Byte Number: 411, Value: 0
I (2589) Output: Data Byte Number: 412, Value: 0
I (2599) Output: Data Byte Number: 413, Value: 0
I (2599) Output: Data Byte Number: 414, Value: 0
I (2609) Output: Data Byte Number: 415, Value: 0
I (2609) Output: Data Byte Number: 416, Value: 0
I (2619) Output: Data Byte Number: 417, Value: 0
I (2619) Output: Data Byte Number: 418, Value: 0
I (2629) Output: Data Byte Number: 419, Value: 0
I (2629) Output: Data Byte Number: 420, Value: 0
I (2639) Output: Data Byte Number: 421, Value: 0
I (2639) Output: Data Byte Number: 422, Value: 0
I (2649) Output: Data Byte Number: 423, Value: 0
I (2659) Output: Data Byte Number: 424, Value: 0
I (2659) Output: Data Byte Number: 425, Value: 0
I (2669) Output: Data Byte Number: 426, Value: 0
I (2669) Output: Data Byte Number: 427, Value: 0
I (2679) Output: Data Byte Number: 428, Value: 0
I (2679) Output: Data Byte Number: 429, Value: 0
I (2689) Output: Data Byte Number: 430, Value: 0
I (2689) Output: Data Byte Number: 431, Value: 0
I (2699) Output: Data Byte Number: 432, Value: 0
I (2699) Output: Data Byte Number: 433, Value: 0
I (2709) Output: Data Byte Number: 434, Value: 0
I (2709) Output: Data Byte Number: 435, Value: 0
... I cut it here but it keeps going.

The answer was to use "fread" instead of "fgets".答案是使用“fread”而不是“fgets”。

This is because fgets will stop at the newline character (0x0A).这是因为 fgets 将在换行符 (0x0A) 处停止。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM