diff options
Diffstat (limited to 'verteco.c')
-rw-r--r-- | verteco.c | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/verteco.c b/verteco.c new file mode 100644 index 0000000..a039952 --- /dev/null +++ b/verteco.c @@ -0,0 +1,63 @@ +#include <stdio.h> +#include <unistd.h> +#include <stdlib.h> +#include <errno.h> + +#include <modbus.h> + +#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; +} |