#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<fcntl.h>
#include<pthread.h>
#include<sys/wait.h>
#include<signal.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<netinet/in.h>
#include <termios.h>
#include <assert.h>
#define RED 0x00
#define BLUE 0x01
#define ERR_MSG(msg) do{\
fprintf(stderr,"error in line:%d\n",__LINE__);\
perror(msg);\
}while(0)
#define SER_IP "192.168.116.201"
#define SER_PORT 8888
#define CLI_IP SER_IP
int getch(){
int c=0;
struct termios org_opts, new_opts;
int res=0;
res=tcgetattr(STDIN_FILENO, &org_opts);
assert(res==0);
new_opts = org_opts;
new_opts.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHOK | ECHONL | ECHOPRT | ECHOKE | ICRNL);
tcsetattr(STDIN_FILENO, TCSANOW, &new_opts);
c=getchar();
res=tcsetattr(STDIN_FILENO, TCSANOW, &org_opts);
assert(res==0);
return c;
}
int main(int argc, const char *argv[])
{
int cfd=socket(AF_INET,SOCK_STREAM,0);
if(cfd<0){
ERR_MSG("socket");
return -1;
}
//connect
struct sockaddr_in sin;
sin.sin_family=AF_INET;
sin.sin_port=ntohs(SER_PORT);
sin.sin_addr.s_addr=inet_addr(SER_IP);
if(connect(cfd,(struct sockaddr*)&sin,sizeof(sin))<0){
ERR_MSG("connect");
return -1;
}
char buf_red[5]={0};
unsigned char buf_blue[5]={0};
buf_red[0]=0xff;
buf_red[1]=0x02;
buf_red[2]=RED;
buf_red[3]=0;
buf_red[4]=0xff;
buf_blue[0]=0xff;
buf_blue[1]=0x02;
buf_blue[2]=BLUE;
buf_blue[3]=90;
buf_blue[4]=0xff;
int flag=0;
char ctrl;
while(1){
flag=0;
ctrl=getch();
if('w'==ctrl){
flag=1;
if(buf_red[3]<90){
buf_red[3]++;
}
else continue;
}else if('s'==ctrl){
flag=1;
if(buf_red[3]>-90)
buf_red[3]--;
else continue;
}else if('a'==ctrl){
flag=2;
if(buf_blue[3]<180)
buf_blue[3]++;
else continue;
}else if('d'==ctrl){
flag=2;
if(buf_blue[3]>0)
buf_blue[3]--;
else continue;
}else {
if('q'==ctrl)break;
else{
putchar(10);
printf("input invild\n");
continue;
}
}
if(1==flag){
if(send(cfd,buf_red,sizeof(buf_red),0)<0){
ERR_MSG("send");
break;
}}else if(2==flag){
if(send(cfd,buf_blue,sizeof(buf_blue),0)<0){
ERR_MSG("send");
break;
}}
printf("ctrl success\n");
usleep(100);
}
close(cfd);
return 0;
}
控制机械臂
最新推荐文章于 2024-07-16 22:46:11 发布