Omron W343-E1-07 User Manual
Page 121

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);