编辑代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

    float global_result;
    char hex_string1[] = "00";
    char hex_string2[] = "00";
    char hex_string3[] = "00";
    char hex_string4[] = "00";

    int main()
    {
        // 定义 4 个 10 进制变量并赋值,PLC用
        //int num1 = W[0];
       // int num2 = W[1];
        //int num3 = W[2];
       // int num4 = W[3];

        // 定义 4 个 10 进制变量并赋值,电脑用
        int num1 = 139;
        int num2 = 125;
        int num3 = 187;
        int num4 = 63;



        // 将整数转换为 16 进制字符串
        char hexStr1[3]= "00";
        char hexStr2[3]= "00";
        char hexStr3[3]= "00";
        char hexStr4[3]= "00";
        sprintf ( hexStr1, "%X", num1 );
        sprintf ( hexStr2, "%X", num2 );
        sprintf ( hexStr3, "%X", num3 );
        sprintf ( hexStr4, "%X", num4 );

        // 输出转换后的 16 进制字符串
        printf ( "Hex str1: %s\n", hexStr1 );
        printf ( "Hex str2: %s\n", hexStr2 );
        printf ( "Hex str3: %s\n", hexStr3 );
        printf ( "Hex str4: %s\n", hexStr4 );

        // 将16进制字符串的值赋值给全局变量,方便PLC读取
        strcpy ( hex_string1, hexStr1 );
        strcpy ( hex_string2, hexStr2 );
        strcpy ( hex_string3, hexStr3 );
        strcpy ( hex_string4, hexStr4 );

        //FW[10] = 0.112;  //此行输出无效,推测因为写在int main()内部,需要写在外部
        //W[12] = 2;
        //int main() 是主函数的标准形式,它的返回类型为整型 int,表示程序运行结束后返回一个整数值。

        // 将 16 进制字符串转换为整数
        long hex1 = strtol ( hexStr1, NULL, 16 );
        long hex2 = strtol ( hexStr2, NULL, 16 );
        long hex3 = strtol ( hexStr3, NULL, 16 );
        long hex4 = strtol ( hexStr4, NULL, 16 );

        // 将 4 个整数合并为一个 32 位无符号整数
        unsigned int num = ( hex4 << 24 ) | ( hex3 << 16 ) | ( hex2 << 8 ) | hex1;

        // 使用 union 类型将整数转换为浮点数
        union
        {
            unsigned int i;
            float f;
        }
        converter;
        converter.i = num;

        // 输出浮点数结果
        global_result = converter.f;
        return 0;
    }

printf ( "hex_string1: %s\n", hex_string1 );
printf ( "hex_string2: %s\n", hex_string2 );
printf ( "hex_string3: %s\n", hex_string3 );
printf ( "hex_string4: %s\n", hex_string4 );
printf ( "global_result: %f\n", global_result );


    //W[4] = global_result;

    
    //W[10] = hex_string1;
   // W[11] = hex_string2;
    //W[12] = hex_string3;
   // W[13] = hex_string4;