aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/modbuslog.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/modbuslog.c b/src/modbuslog.c
index cb509ea..3f9b658 100644
--- a/src/modbuslog.c
+++ b/src/modbuslog.c
@@ -44,6 +44,9 @@
#include <syslog.h>
+#include <termios.h>
+#include <fcntl.h>
+
// handle SIGALRM by resetting it
void minute_check(int signum) {
alarm(60);
@@ -271,6 +274,21 @@ int main(int argc, char *argv[]) {
// back off for 2 secs, increasing by 2 for each
// incorrect reply
sleep(2+retry*2);
+
+ // open serial port file descriptor,
+ // flush IO, write zero-ouput, reflush IO,
+ // close file descriptor
+ int fd = open(modbus_device_address, O_RDWR | O_NOCTTY );
+ if (tcflush(fd, TCIOFLUSH) == 0){
+ syslog(LOG_WARNING, "Flushing [%s] serial IO buffer", modbus_device_address);
+ }
+ if (tcsendbreak(fd, 0) == 0){
+ syslog(LOG_WARNING, "Writing zero-value bits to [%s]", modbus_device_address);
+ }
+ if (tcflush(fd, TCIOFLUSH) == 0){
+ syslog(LOG_WARNING, "Reflushing [%s] serial IO buffer", modbus_device_address);
+ }
+ close(fd);
}
retry++;
} while ((rc == -1) && (retry <= modbus_retry));
d=117fa6f13e164c7eb5edaee955cabe2666718845&follow=1'>[lcd4linux @ 2004-01-09 17:03:06 by reinelt]reinelt10-51/+420 2004-01-09[lcd4linux @ 2004-01-09 04:16:06 by reinelt]reinelt28-193/+332 2004-01-08[lcd4linux @ 2004-01-08 06:00:28 by reinelt]reinelt1-8/+14 2004-01-08[lcd4linux @ 2004-01-08 05:28:12 by reinelt]reinelt3-42/+198 2004-01-07[lcd4linux @ 2004-01-07 10:15:41 by reinelt]reinelt4-184/+436 2004-01-06[lcd4linux @ 2004-01-06 23:01:37 by reinelt]reinelt3-4/+7 2004-01-06[lcd4linux @ 2004-01-06 22:33:13 by reinelt]reinelt14-472/+542 2004-01-06[lcd4linux @ 2004-01-06 21:14:51 by reinelt]reinelt4-14/+7 2004-01-06[lcd4linux @ 2004-01-06 18:22:41 by reinelt]reinelt1-3/+13 2004-01-06[lcd4linux @ 2004-01-06 17:56:43 by reinelt]reinelt3-1000/+2045 2004-01-06[lcd4linux @ 2004-01-06 17:37:00 by reinelt]reinelt1-0/+20 2004-01-06[lcd4linux @ 2004-01-06 17:33:45 by reinelt]reinelt6-28/+298 2004-01-06[lcd4linux @ 2004-01-06 15:19:12 by reinelt]reinelt2-104/+136 2004-01-05[lcd4linux @ 2004-01-05 11:57:38 by reinelt]reinelt7-8/+168 2004-01-02[lcd4linux @ 2004-01-02 14:20:15 by reinelt]reinelt10-0/+201 2004-01-02[lcd4linux @ 2004-01-02 14:18:54 by reinelt]reinelt2-0/+101 2003-12-19[lcd4linux @ 2003-12-19 06:27:33 by reinelt]reinelt4-8/+119