#include "common.h" #include "stdio.h" #include "stdlib.h" #include "ini.h" #include "ysp_modbus_master.h" #include "windows.h" #define CONFIG_FILE_NAME "modbusConnect.ini" void xUnsigned_char_hex_out(const char *msg, unsigned char* src, int start, int number) { int new_line = 0; int end = start + number; if (msg != NULL) { printf("%s:\n", msg); } for (int i = start; i < end; i++) { printf("%02X ", src[i]); new_line++; if ( !(new_line % 8)) { printf("\n"); } } printf("\n"); } void xRead_reg_hex_out(unsigned short reg_start_addr,const char* msg, unsigned char* src, int start, int number) { int new_line = 0; int end = start + number; int reg_number = 0; if (msg != NULL) { printf("\n%s:\n", msg); } printf("-----------------\n"); printf("reg addr | data\n"); //printf("(%d)%.4x ", reg_number, reg_start_addr); for (int i = start; i < end; i++) { if ((new_line % 2) == 0) { printf("\n"); printf("(%d)%.4X |", ++reg_number, reg_start_addr++); } new_line++; printf("%02X ", src[i]); } printf("\n-----------------\n\n"); } int xGet_config_from_file() { #if 1 char curr_path[MAX_PATH] = { 0 }; char configFile_path[MAX_PATH] = { 0 }; const char* fmt = "%s/%s"; GetCurrentDirectory(MAX_PATH, curr_path); for (int i = 0; i < strlen(curr_path); i++) { if (curr_path[i] == 0x5C) { //0x5C \ 反斜杠 curr_path[i] = 0x2F; //0x2F / 斜杠 } } printf("curr path:%s\n", curr_path); snprintf(configFile_path, sizeof(configFile_path), fmt, curr_path, CONFIG_FILE_NAME); printf("configFile_path:%s\n", configFile_path); #endif struct ini_t* ini_ctl = ini_load(configFile_path); if (ini_ctl == NULL) { printf("open file fail,all para use default\n"); return 1; } //modbus 从机tcp ipaddr const char* ip_addr = ini_get(ini_ctl, "MODBUS_SLAVE", "SLAVE_IP_ADDR"); xMaster_Set_slave_ip_addr(ip_addr); //modbus从机tcp port const char* tcp_port = ini_get(ini_ctl, "MODBUS_SLAVE", "SLAVE_IP_PORT"); xMaster_Set_slave_port(tcp_port); ini_free(ini_ctl); return 0; }