Omron W343-E1-07 User Manual

Page 121

Advertising
background image

100

Sending Commands From a Host Computer

Section 5-4

14

/*

15

*

FINS COMMUNICATIONS SAMPLE PROGRAM

16

*/

17

main(argc,argv)

18

int

argc;

19

char

*argv[];

20

{

21

int

sockfd;

22

struct sockaddr_in ws_addr,cs_addr;

23

char

fins_cmnd[MAX_MSG],fins_resp[MAX_MSG];

24

int

sendlen,recvlen,addrlen;

25

char

sid=0;

26

extern recv_fail();

27
28

/*

GENERATE UDP SOCKET

*/

29

if((sockfd=socket(AF_INET,SOCK_DGRAM,0))<<0)

30

err_exit(”can’t open datagram socket”);

31
32

/*

ALLOCATE IP ADDRESS AND PORT # TO SOCKET

*/

33

bzero((char*)&ws_addr,sizeof(ws_addr));

34

ws_addr.sin_family=AF_INET;

35

ws_addr.sin_addr.s_addr=htonl(INADDR_ANY);

36

ws_addr.sin_port=htons(FINS_UDP_PORT);

37

if(bind(sockfd,(struct sockaddr*)&ws_addr,sizeof(ws_addr))<0)

38

err_exit(”can’t bind local address”);

39
40

/*

41

*

GENERATE MEMORY AREA READ COMMAND

42

*(

READ 150 WORDS FROM D00100.)

43

/*

44

fins_cmnd[0]=0x80;

/*ICF*/

45

fins_cmnd[1]=0x00;

/*RSV*/

46

fins_cmnd[2]=0x02;

/*GCT*/

47

fins_cmnd[3]=0x01;

/*DNA*/

48

fins_cmnd[4]=0x64;

/*DA1*/

/*

Ethernet Unit FINS NODE NUMBER

*/

49

fins_cmnd[5]=0x00;

/*DA2*/

50

fins_cmnd[6]=0x01;

/*SNA*/

51

fins_cmnd[7]=0x32;

/*SA1*/

/*

WS FINS NODE NUMBER

*/

52

fins_cmnd[8]=0x00;

/*SA2*/

53

fins_cmnd[9]=++sid; /*SID*/

54

fins_cmnd[10]=0x01; /*MRC*/

55

fins_cmnd[11]=0x01; /*SRC*/

56

fins_cmnd[12]=0x82; /*

VARIABLE TYPE: DM

*/

57

fins_cmnd[13]=0x00; /*

READ START ADDRESS

:

100

*/

58

fins_cmnd[14]=0x64;

59

fins_cmnd[15]=0x00;

60

fins_cmnd[16]=0x00; /*

WORDS READ: 150

*/

61

fins_cmnd[17]=0x96;

62
63
64

/*

SEND FINS COMMAND

*/

65

bzero((char*)&cs_addr,sizeof(cs_addr));

66

cs_addr.sin_family=AF_INET;

67

cs_addr.sin_addr.s_addr=inet_addr(SERV_IP_ADDR);

68

cs_addr.sin_port=htons(FINS_UDP_PORT);

69
70

signal(SIGALRM,recv_fail);

71
72

CMND_SEND:

73

sendlen = 18;

74

if(sendto(sockfd,fins_cmnd,sendlen,0,&cs_addr,sizeof(cs_addr))
==sendlen){

75

alarm(RESP_TIMEOUT); /*

START RESPONSE MONITOR TIMER

*/

76

printf(”send length %d¥n”,sendlen);

Advertising
This manual is related to the following products: