diff options
author | Jonathan McCrohan <jmccrohan@gmail.com> | 2011-10-13 02:00:41 +0100 |
---|---|---|
committer | Jonathan McCrohan <jmccrohan@gmail.com> | 2011-10-13 02:00:41 +0100 |
commit | e60a7cc135af7ee738d67ecc7bd02ce18963ace6 (patch) | |
tree | c6e8ee2ea6fe37547c7aeb68bbcd96f7c20b2fbb /verteco | |
parent | 6cfbf2dee130cc36a72d57adea0e9c04bb31f620 (diff) | |
download | verteco-e60a7cc135af7ee738d67ecc7bd02ce18963ace6.tar.gz |
Integrate libmodbus and libconfig
Diffstat (limited to '')
-rwxr-xr-x | verteco | bin | 9589 -> 0 bytes | |||
-rw-r--r-- | verteco.c | 60 |
2 files changed, 47 insertions, 13 deletions
diff --git a/verteco b/verteco Binary files differdeleted file mode 100755 index 4223811..0000000 --- a/verteco +++ /dev/null @@ -1,33 +1,67 @@ +/ gcc verteco.c -o verteco `pkg-config --libs --cflags libmodbus libconfig` + #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <errno.h> +#include <libconfig.h> #include <modbus.h> -#define SLAVE_ID 1 -#define START_ADDRESS 0 -#define NUMBER_REGISTERS 14 - -#define DEBUG_MODE 0 +#define SLAVE_ID 1 +#define START_ADDRESS 0 +#define NUMBER_REGISTERS 14 +#define DEBUG 1 int main(int argc, char *argv[]) { -if ( argc != 2 ){ +const char *CONFIG_FILE = "verteco.cfg"; + + config_t cfg; + //config_setting_t *setting; + + const char *modbus_device_address; + int modbus_baud_rate; + int modbus_data_bits; + const char *modbus_parity; + int modbus_stop_bits; + + config_init(&cfg); + + + if(!config_read_file(&cfg, CONFIG_FILE)) + { + fprintf(stderr, "%s:%d - %s\n", config_error_file(&cfg), + config_error_line(&cfg), config_error_text(&cfg)); + config_destroy(&cfg); + fprintf(stderr, "Unable to find CONFIG_FILE.\n"); return -1; + } + + modbus_t *ctx; + uint16_t tab_reg[64]; + int rc; + int i; + + if(!(config_lookup_string(&cfg, "modbus.device", &modbus_device_address) + && config_lookup_int(&cfg, "modbus.baud", &modbus_baud_rate) + && config_lookup_int(&cfg, "modbus.data_bits", &modbus_data_bits) + && config_lookup_string(&cfg, "modbus.parity", &modbus_parity) + && config_lookup_int(&cfg, "modbus.stop_bits", &modbus_stop_bits)) +){ + fprintf(stderr, "Check modbus configuration in configuration file.\n"); + return -1; } + if(DEBUG){ + printf("%s %d %c %d %d\n",modbus_device_address, modbus_baud_rate, modbus_parity[0], modbus_data_bits, modbus_stop_bits); + } -modbus_t *ctx; -uint16_t tab_reg[64]; -int rc; -int i; +ctx = modbus_new_rtu(modbus_device_address, modbus_baud_rate, modbus_parity[0], modbus_data_bits, modbus_stop_bits); -ctx = modbus_new_rtu(argv[1], 19200, 'E', 8, 1); modbus_set_slave(ctx, SLAVE_ID); - -modbus_set_debug(ctx, DEBUG_MODE); +modbus_set_debug(ctx, DEBUG); if (ctx == NULL) { fprintf(stderr, "Unable to create the libmodbus context\n"); |