aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJonathan McCrohan <jmccrohan@gmail.com>2012-05-20 22:05:03 +0100
committerJonathan McCrohan <jmccrohan@gmail.com>2012-05-20 23:26:36 +0100
commit7249087222c562b7afd16d76eb31de6a83aa98ef (patch)
treed4c74bbc65d34f2bb053116a67b75b36062b59c5 /src
parent96117e05c387c930c9619e3ae5c0ad0b4da196d2 (diff)
downloadverteco-7249087222c562b7afd16d76eb31de6a83aa98ef.tar.gz
weatherstation_test.c: initial commit
Diffstat (limited to 'src')
-rw-r--r--src/weatherstation_test.c73
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;
+}