控制机械臂项目
#include <myhead.h>
#include <linux/input.h>
#define SER_PORT 8888
#define SER_IP "192.168.117.86"
int main(int argc, const char *argv[])
{
//创建套接字
int cfd=-1;
cfd=socket(AF_INET,SOCK_STREAM,0);
if(cfd==-1)
{
perror("socket error");
return -1;
}
printf("cfd=%d\n",cfd);
printf("%d socket success\n",__LINE__);
//设置快速重用
int reuse=1;
if(setsockopt(cfd,SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(reuse))==-1)
{
perror("setsockopt error");
return -1;
}
printf("%d setsockopt success\n",__LINE__);
//绑定
struct sockaddr_in sin;
sin.sin_family=AF_INET;
sin.sin_port=htons(SER_PORT);
sin.sin_addr.s_addr=inet_addr(SER_IP);
if(connect(cfd,(struct sockaddr *)&sin,sizeof(sin))==-1)
{
perror("connect error");
return -1;
}
printf("%d connect success\n",__LINE__);
//初始化机械臂
char rbuf[5]={0xff,0x02,0x00,0x00,0xff};
unsigned char bbuf[5]={0xff,0x02,0x01,0x00,0xff};
send(cfd,rbuf,sizeof(rbuf),0);
sleep(1);
send(cfd,bbuf,sizeof(bbuf),0);
struct input_event ie;
int fd=open("/dev/input/event1",O_RDONLY);
if(fd==-1)
{
perror("open error");
return -1;
}
while(1)
{
read(fd,&ie,sizeof(ie));
switch(ie.code*ie.value)
{
case 17:
{
rbuf[3]+=1;
if(rbuf[3]>=90)
{
rbuf[3]=90;
}
send(cfd,rbuf,sizeof(rbuf),0);
}
break;
case 31:
{
rbuf[3]-=1;
if(rbuf[3]<=-90)
{
rbuf[3]=-90;
}
send(cfd,rbuf,sizeof(rbuf),0);
}
break;
case 30:
{
bbuf[3]-=1;
if(bbuf[3]<=0)
{
bbuf[3]=0;
}
send(cfd,bbuf,sizeof(bbuf),0);
}
break;
case 32:
{
bbuf[3]+=1;
if(bbuf[3]>=180)
{
bbuf[3]=180;
}
send(cfd,bbuf,sizeof(bbuf),0);
}
break;
case 16:goto END;
}
}
END:
close(cfd);
return 0;
}