#include #include #include #include #include #define SLAVE_ID 1 #define START_ADDRESS 0 #define NUMBER_REGISTERS 14 #define DEBUG_MODE 0 int main(int argc, char *argv[]) { if ( argc != 2 ){ return -1; } modbus_t *ctx; uint16_t tab_reg[64]; int rc; int i; ctx = modbus_new_rtu(argv[1], 19200, 'E', 8, 1); modbus_set_slave(ctx, SLAVE_ID); modbus_set_debug(ctx, DEBUG_MODE); if (ctx == NULL) { fprintf(stderr, "Unable to create the libmodbus context\n"); return -1; } if (modbus_connect(ctx) == -1) { fprintf(stderr, "Connection failed: %s\n", modbus_strerror(errno)); modbus_free(ctx); return -1; } rc = modbus_read_input_registers(ctx, START_ADDRESS, NUMBER_REGISTERS, tab_reg); if (rc == -1) { fprintf(stderr, "ERROR: %s\n", modbus_strerror(errno)); return -1; } for (i=0; i < rc; i=i+2) { printf("reg[%d]=%d\n", i, tab_reg[i]+tab_reg[i+1]); } modbus_close(ctx); modbus_free(ctx); return 0; }