#define SER_PORT 8888
#define SER_IP "192.168.31.154"
#define CLI_PORT 6666
#define CLI_IP "192.168.31.154"
#include <header.h>
int is_valid_hex(const char *str) {
if (str == NULL || *str == '\0') {
return 0; // 空字符串不是有效的16进制数
}
while (*str != '\0') {
if (!((*str >= '0' && *str <= '9') ||
(*str >= 'a' && *str <= 'f') ||
(*str >= 'A' && *str <= 'F'))) {
return 0; // 发现了非16进制字符
}
str++;
}
return 1; // 所有字符都是有效的16进制字符
}
int main(int argc, const char *argv[])
{
//创建用于通信的套接字文件描述符
int cfd = socket(AF_INET, SOCK_STREAM, 0);
if(cfd == -1){
perror("socket err");
return -1;
}
printf("cfd = %d\n", cfd);
//绑定IP地址和端口号
//填充客户端地址信息结构体
struct sockaddr_in cin;
cin.sin_family = AF_INET;
cin.sin_port = htons(CLI_PORT);
cin.sin_addr.s_addr = inet_addr(CLI_IP);
//绑定IP地址和端口号
if( bind( cfd, (struct sockaddr*)&cin, sizeof(cin)) == -1 ){
perror("bind-error");
return -1;
}
printf("bind-success\n");
//连接服务器
//准备对端地址信息结构体
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("connect sccess\n");
//数据收发
while(1){
char red_rot[5]={0xff,0x02,0x00,0x00,0xff};
char blue_rot[5]={0xff,0x02,0x01,0x00,0xff};
//初始化红色机械臂
if( send(cfd,red_rot,strlen(red_rot),0) == -1 ){
perror("red-send-error");
return -1;
}
//初始化蓝色机械臂
if( send(cfd,blue_rot,strlen(blue_rot),0) == -1 ){
perror("blue-send-error");
return -1;
}
printf("初始化成功\n");
char oper;
char send_rot[5]={0xff,0x02,0x00,0x00,0xff};
printf("请输入要操作的机械臂,b为蓝色,r为红色\n");
scanf("%c", &oper);
while(getchar()!=10);
// 判断输入的字符是否为'r'
if (oper == 'r') {
send_rot[2] = 0x00;
} else if(oper == 'b'){
send_rot[2] = 0x01;
}else{
printf("非法输入\n")
}
char angle;
printf("请输入要操作角度,输入16进制数\n");
fgets(angle, sizeof(angle), stdin);
if (is_valid_hex(angle)) {
printf("输入是有效的16进制数。\n");
send_rot[3] = angle;
if( send(cfd,send_rot,strlen(send_rot),0) == -1 ){
perror("send-error");
return -1;
}
} else {
printf("输入不是有效的16进制数。\n");
}
}
//关闭套接字
close(cfd);
return 0;
}
TCP机械臂测试
最新推荐文章于 2024-09-12 09:39:26 发布