机械臂
1)基于TCP服务器的机械臂,端口号是8888, ip是Windows的ip;查看Windows的IP:按住Windows+r 按键,输入cmd , 输入ipconfig
2)点击软件中的开启监听;
3)机械臂需要发送16进制数,共5个字节,协议如下
0xff 0x02 x y 0xff 0xff:起始结束协议,固定的; 0x02:控制机械手臂协议,固定的; x:指定要操作的机械臂 0x00 红色摆臂 0x01 蓝色摆臂 y:指定角度
#include<myhead.h>
#define PORT 8888
#define IP "192.168.125.178"
int main(int argc, const char *argv[])
{
//1.创建套接字
int cfd=socket(AF_INET,SOCK_STREAM,0);
if(cfd == -1)
{
perror("socket error");
return -1;
}
//2.连接
//2.1配置服务器端的IP地址和端口号
struct sockaddr_in sin;
sin.sin_family=AF_INET;
sin.sin_port=htons(PORT);
sin.sin_addr.s_addr=inet_addr(IP);
//2.2连接服务器
if(connect(cfd,(struct sockaddr*)&sin,sizeof(sin))==-1)
{
perror("connect error");
return -1;
}
//3.收发
//定义字符数组设置机械臂的起始状态
char buf[5]={0xff,0x02,0x00,0x00,0xff};
printf("%s\n",buf);
send(cfd,buf,sizeof(buf),0);
char buf1[5]={0xff,0x02,0x01,0x5a,0xff};
send(cfd,buf1,sizeof(buf1),0);
//定义字符来接收键入数据
char ctl;
while(1)
{ //获取字符
ctl=getchar();
// getchar();
//判断字符来决定机械臂的运行动作
switch(ctl)
{
case 'w':buf[3]=++buf[3];
send(cfd,buf,sizeof(buf),0);
break;
case 's':buf[3]=--buf[3];
send(cfd,buf,sizeof(buf),0);
break;
case 'a':buf1[3]=--buf1[3];
send(cfd,buf1,sizeof(buf1),0);
break;
case 'd':buf1[3]=++buf1[3];
send(cfd,buf1,sizeof(buf1),0);
break;
default:break;
}
}
//4.关闭套接字
close(cfd);
return 0;
}