Blame | Last modification | View Log | Download
/*name test4.c*//* Copyright (C) Modicon, Inc. 1989, All Rights Reserved. *//*This sample program uses the SA85.SYS device driver to access theModbus Plus network to read 125 holding registers from a 984-x85 controllerat network address 12.*//*include*/#define STRICT#include <windows.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>#include <signal.h>#include "netbios.h"#include "netlib.h"/*prototypes*/int main(void);void control_c(int sig);/*global variables*/char mbuffer[256];int completed;/*main()*/int main(){NCB *nd;int ret_val;if( signal( SIGINT, control_c ) == SIG_ERR ) {printf( "Unable to redirect Control-C." );exit( 1 );}if ((nd = ncb_open("DM.12.1.0.0.0", 0)) == NULL) {printf("Unable to open DATA MASTER path.\n");exit(1);}printf("Path %02X opened\n", nd->NCB_NUM);printf("Routing info: %c%c.%d.%d.%d.%d.%d\n",nd->NCB_CALLNAME[0],nd->NCB_CALLNAME[1],nd->NCB_CALLNAME[2],nd->NCB_CALLNAME[3],nd->NCB_CALLNAME[4],nd->NCB_CALLNAME[5],nd->NCB_CALLNAME[6]);while( !kbhit() ) {mbuffer[0] = 0x5; /*slave address*/mbuffer[1] = 0x3; /*command*/mbuffer[2] = 0x0; /*offset high*/mbuffer[3] = 0x0; /*offset low*/mbuffer[4] = 0x0; /*reg count high*/mbuffer[5] = 125; /* reg count low*/printf("+");if (ncb_send(nd, 6, mbuffer, 10) != 0) {/*send the command*/printf("Send error: %d.\n", nd->NCB_RETCODE);ret_val = ncb_close(nd); /*close the path*/exit(1);}if (ncb_receive_wait(nd, mbuffer, 10) != 0) {/*try to receive*/printf("\nReceive error: %d.\n", nd->NCB_RETCODE);}printf("-");}ncb_close(nd); /*close the path*/exit(0);return 0;}/*control_cThis routine replaces the control-C handler supplied by DOS. When youtype a control_C, the program will vector to this routine, which willset the completed flag to non-zero. In this test program, this will causethe infinite loop within main to terminate.*/void control_c(int sig){signal( SIGINT, SIG_IGN ); /* disable control-c */completed = 1; /* will cause main loop to complete */signal( SIGINT, control_c ); /* reset control-c handler */}