1
机械臂
#include "myhead.h"
#define SERPORT 8888
#define SERIP "192.168.125.162"
#define CLIPORT 2438
#define CLIIP "192.168.125.115"
int main(int argc, const char *argv[])
{
//创建用于通信的套接字
int cfd=-1;
if((cfd=socket(AF_INET,SOCK_STREAM,0))==-1){
perror("socket error");
return -1;
}
printf("cfd=%d\n",cfd);
//将端口号快速重用
int reuse=1;
if(setsockopt(cfd,SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(reuse))==-1){
perror("setsockopt error");
return -1;
}
//可以绑定也可以不绑定
//填充地址信息结构体
struct sockaddr_in cin;
cin.sin_family=AF_INET;
cin.sin_port=htons(CLIPORT);
cin.sin_addr.s_addr=inet_addr(CLIIP);
//绑定
if(bind(cfd,(struct sockaddr*)&cin,sizeof(cin))==-1){
perror("bind error");
return -1;
}
//链接服务器
//填充服务器地址信息结构体
struct sockaddr_in sin;
sin.sin_family=AF_INET;
sin.sin_port=htons(SERPORT);
sin.sin_addr.s_addr=inet_addr(SERIP);
//链接服务器
if(connect(cfd,(struct sockaddr*)&sin,sizeof(sin))==-1){
perror("connect error");
return -1;
}
printf("connect success\n");
//数据收发
char rbuf[5]={0xff,0x02,0x00,0x00,0xff};
unsigned char rbuf2[5]={0xff,0x02,0x01,0x00,0xff};
char value=0;
while(1){
value=getchar();
switch(value){
case 'W':
case 'w':
rbuf[3]+=2;
if(rbuf[3]>=90){
rbuf[3]=90;
}
//将数据发送给服务器
send(cfd,rbuf,sizeof(rbuf),0);
break;
case 's':
case 'S':
rbuf[3]-=2;
if(rbuf[3]<=-90){
rbuf[3]=-90;
}
send(cfd,rbuf,sizeof(rbuf),0);
break;
case 'A':
case 'a':
rbuf2[3]-=2;
if(rbuf2[3]<=0){
rbuf2[3]=0;
}
send(cfd,rbuf2,sizeof(rbuf2),0);
break;
case 'd':
case 'D':
rbuf2[3]+=2;
if(rbuf2[3]>=180){
rbuf2[3]=180;
}
send(cfd,rbuf2,sizeof(rbuf2),0);
break;
}
}
//关闭
close(cfd);
return 0;
}