编辑代码

#include <stdio.h>

/*!< Signed integer types  */
typedef   signed char     		int8_t;
typedef   signed short      	int16_t;
typedef   signed int     		int32_t;

/*!< Unsigned integer types  */
typedef unsigned char     		uint8_t;
typedef unsigned short      	uint16_t;
typedef unsigned int     		uint32_t;

int main () {
    uint8_t data_buf[50];
    char data_string[] = "A6 00 03 F0 00 02 00 1F 00 23 00 33 00 2F 60 00 00 00 43 6D 32 72 3C 04 90 0B 3F 6A 2C 69 3E 87 6D 8F 04 00 1E 00 0F 08";
    for (uint16_t i = 0; i < 40; i ++)
    {
        sscanf(data_string + i * 3, "%x ", data_buf + i);
    }
    uint8_t temp1_buf[2]; uint8_t temp2_buf[2];
    uint8_t temp3_buf[2]; uint8_t voltage_buf[4];
    uint8_t current_buf[4]; uint8_t energy_buf[4];
    uint8_t power_buf[4]; uint8_t pwm_delay_buf[2];

    temp1_buf[0] = data_buf[9]; temp1_buf[1] = data_buf[8];
    temp2_buf[0] = data_buf[11]; temp2_buf[1] = data_buf[10];
    temp3_buf[0] = data_buf[13]; temp3_buf[1] = data_buf[12];
    voltage_buf[0] = data_buf[21]; voltage_buf[1] = data_buf[20]; voltage_buf[2] = data_buf[19]; voltage_buf[3] = data_buf[18];
    current_buf[0] = data_buf[25]; current_buf[1] = data_buf[24]; current_buf[2] = data_buf[23]; current_buf[3] = data_buf[22];
    power_buf[0] = data_buf[29]; power_buf[1] = data_buf[28]; power_buf[2] = data_buf[27]; power_buf[3] = data_buf[26];
    energy_buf[0] = data_buf[33]; energy_buf[1] = data_buf[32]; energy_buf[2] = data_buf[31]; energy_buf[3] = data_buf[30];
    pwm_delay_buf[0] = data_buf[36]; pwm_delay_buf[1] = data_buf[35];

    int16_t temp1 = *((int16_t *)temp1_buf);
    int16_t temp2 = *((int16_t *)temp2_buf);
    int16_t temp3 = *((int16_t *)temp3_buf);
    uint8_t pwm = data_buf[14];
    uint8_t temp_status = data_buf[17];
    float voltage = *((float *)voltage_buf);
    float current = *((float *)current_buf);
    float power = *((float *)power_buf);
    float energy = *((float *)energy_buf);
    uint8_t sys_status = data_buf[34];
    uint8_t pwm_delay = *((int16_t *)pwm_delay_buf);
    uint8_t power_delay = data_buf[38];

    printf("temp1: %d°\n", temp1);
    printf("temp2: %d°\n", temp2);
    printf("temp3: %d°\n", temp3);
    printf("pwm: %d\%\n", pwm);
    printf("temp_status: %d\n", temp_status);
    printf("voltage: %.4fV\n", voltage);
    printf("current: %.4fA\n", current);
    printf("power: %.4fW\n", power);
    printf("energy: %.4fmWt\n", energy);
    printf("sys_status: %d\n", sys_status);
    printf("pwm_delay: %ds\n", pwm_delay);
    printf("power_delay: %dmin\n", power_delay);

    return 0;
}