diff options
author | Jonathan McCrohan <jmccrohan@gmail.com> | 2012-05-20 22:05:03 +0100 |
---|---|---|
committer | Jonathan McCrohan <jmccrohan@gmail.com> | 2012-05-20 23:26:36 +0100 |
commit | 7249087222c562b7afd16d76eb31de6a83aa98ef (patch) | |
tree | d4c74bbc65d34f2bb053116a67b75b36062b59c5 /src/weatherstation_test.c | |
parent | 96117e05c387c930c9619e3ae5c0ad0b4da196d2 (diff) | |
download | verteco-7249087222c562b7afd16d76eb31de6a83aa98ef.tar.gz |
weatherstation_test.c: initial commit
Diffstat (limited to '')
-rw-r--r-- | src/weatherstation_test.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/weatherstation_test.c b/src/weatherstation_test.c new file mode 100644 index 0000000..b2cfab4 --- /dev/null +++ b/src/weatherstation_test.c @@ -0,0 +1,73 @@ +// gcc weatherstation_test.c -o weatherstation_test `pkg-config --libs --cflags libmodbus` + +#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 17 + +#define DEBUG_MODE 1 + +int main(int argc, char *argv[]) +{ + +modbus_t *ctx; +int16_t mbregister[64]; +int rc; + +ctx = modbus_new_rtu("/dev/ttyUSB0", 19200, 'E', 8, 1); +modbus_set_slave(ctx, SLAVE_ID); + +modbus_set_debug(ctx, DEBUG_MODE); + +printf("Verteco Elsner Weatherstation\n\n"); + +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, mbregister); + + +if (rc == -1) { + fprintf(stderr, "ERROR: %s\n", modbus_strerror(errno)); + return -1; +} + +printf("Read %i mbregisters\n\n", rc); + +printf("temperature=%d\n", mbregister[0]); +printf("sun_south=%d\n", mbregister[1]); +printf("sun_east=%d\n", mbregister[2]); +printf("sun_west=%d\n", mbregister[3]); +printf("light=%d\n", mbregister[4]); +printf("wind=%d\n", mbregister[5]); +printf("GPS/RTC=%d\n", mbregister[6]&255); +printf("rain=%d\n", mbregister[6]>>8); +printf("day=%d\n", mbregister[7]); +printf("month=%d\n", mbregister[8]); +printf("year=%d\n", mbregister[9]); +printf("hour=%d\n", mbregister[10]); +printf("min=%d\n", mbregister[11]); +printf("second=%d\n", mbregister[12]); +printf("azimuth=%d\n", mbregister[13]); +printf("elevation=%d\n", mbregister[14]); +printf("long=%d\n", mbregister[15]); +printf("lat=%d\n", mbregister[16]); +modbus_close(ctx); +modbus_free(ctx); + + return 0; +} |