0813作业+梳理

news2024/9/20 16:37:04

一、实现虚拟机械臂控制

#include<myhead.h>
#define SER_PORT 8888   //服务器端口号
#define SER_IP "192.168.0.126" //服务器ip地址
#define CLI_PORT 5555   //客户端端口号
#define CLI_IP "192.168.0.133" //客户端地址
int main(int argc, const char *argv[])
{
	//创建套接字文件
	int cfd = socket(AF_INET,SOCK_STREAM,0);
	if(cfd == -1)
	{
		perror("socket error");
		return -1;
	}
	printf("cfd = %d\n",cfd);   //3

	//绑定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("成功连接到服务端\n");
	//控制机械臂
	//初始化机械臂
	char redbuf[5] = {0xff,0x02,0x00,0x50,0xff};
	char bluebuf[5] = {0xff,0x02,0x01,0x00,0xff};
	send(cfd,redbuf,sizeof(redbuf),0);
	sleep(1);
	send(cfd,bluebuf,sizeof(redbuf),0);
	char buf = 0;
	//实现使用“wasd”操控机械臂
	while(1)
	{
		//先清空buf
		buf = 0;
		//输入
		scanf("%c",&buf);
		getchar();
		if(buf == 'W')
			{
				redbuf[3]++;
				if(redbuf[3]>90)
				{
					printf("请更换方向,该方向已移动到最值\n");
					redbuf[3]--;
				}else{
				send(cfd,redbuf,sizeof(redbuf),0);
				}
			}else if(buf == 'S')
			{
				redbuf[3]--;
				if(redbuf[3]<-90)
				{
					printf("请更换方向,该方向已移动到最值\n");
					redbuf[3]++;
				}else{
				send(cfd,redbuf,sizeof(redbuf),0);
				}
			}else if(buf =='A')
			{
				bluebuf[3]++;
				if(bluebuf[3]>180)
				{
					printf("请更换方向,该方向已移动到最值\n");
					bluebuf[3]--;
				}else{
					send(cfd,bluebuf,sizeof(bluebuf),0);
				}
			}else if(buf == 'D')
			{
				bluebuf[3]--;
				if(bluebuf[3]<0)
				{
					printf("请更换方向,该方向已移动到最值\n");
					bluebuf[3]++;
				}else{
				send(cfd,bluebuf,sizeof(bluebuf),0);
				}
			}else if(buf == 'q')
			{
				break;
			}

	}
	//关闭文件描述符
	close(cfd);
	return 0;
}

二、思维导图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2052068.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

css - word-spacing 属性(指定段字之间的间距大小)属性定义及使用说明

介绍 CSS word-spacing 属性&#xff0c;用于指定段字之间的空间&#xff0c;例如&#xff1a; p {word-spacing:30px; }word-spacing属性增加或减少字与字之间的空白。 注意&#xff1a; 负值是允许的。 浏览器支持 表格中的数字表示支持该属性的第一个浏览器版本号。 属…

sqlserver 消息 9420,级别 16,状态 1,第 7 行

declare TerminalXml xml set TerminalXml(select * from TCK_TerminalInfo(nolock) for xml PATH) 执行时报9420错误,sqlserver 消息 9420,级别 16,状态 1,第 7 行 感觉非常奇怪,这个程序在很多客户多运行.当时以为数据库的配置不对.我重启了数据服务,还是没有解决…

智慧校园信息化服务平台、基于微信小程序的校园服务管理系统

摘 要 本文论述了智慧校园信息化服务平台的设计和实现&#xff0c;该网站从实际运用的角度出发&#xff0c;运用了计算机网站设计、数据库等相关知识&#xff0c;基于 ssm框架和Mysql数据库设计来实现的&#xff0c;网站主要包括用户注册、用户登录、查看教室信息、校园趣事…

mysql聚合函数和分组

我最近开了几个专栏&#xff0c;诚信互三&#xff01; > |||《算法专栏》&#xff1a;&#xff1a;刷题教程来自网站《代码随想录》。||| > |||《C专栏》&#xff1a;&#xff1a;记录我学习C的经历&#xff0c;看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

Java并发类API -- Future和Callable

1.Future和Callable接口 Future 是一个表示异步计算结果的接口&#xff1b; 接口Callable与线程功能密不可分&#xff0c;但和Runnable的主要区别为&#xff1a; 1&#xff09;Callable接口的call&#xff08;&#xff09;方法可以有返回值&#xff0c;而Runnable接口的run&a…

java:IDEA修改java版本的几个不同的地方

文章目录 项目JDK设置&#xff08;Project SDK&#xff09;项目模块级JDK设置&#xff08;Module SDK&#xff09;IDE级别的JDK设置Maven配置文件编译器&#xff08;Java Compiler&#xff09;构建工具配置文件&#xff08;如build.gradle或pom.xml&#xff09;.idea/misc.xml文…

C语言(17)——单链表的应用

目录 1.单链表经典算法OJ题⽬ 1.1单链表相关经典算法OJ题1&#xff1a;移除链表元素 1.2单链表相关经典算法OJ题2&#xff1a;反转链表 1.3 单链表相关经典算法OJ题3&#xff1a;链表的中间节点 1.单链表经典算法OJ题⽬ 1.1单链表相关经典算法OJ题1&#xff1a;移除链表元素…

还有比这java状态压缩更通俗易懂的解释?

前言 Java中的状态压缩&#xff0c;或者说位运算状态压缩&#xff0c;是一种利用位操作&#xff08;如位与&、位或|、位异或^、位非~、左移<<、右移>>等&#xff09;来高效地存储和处理状态信息的技术。这种技术特别适用于那些状态空间不是很大&#xff0c;但…

微服务:网关路由和登录校验

续上篇&#xff1a;微服务&#xff1a;服务的注册与调用和OpenFiegn-CSDN博客 参考&#xff1a;黑马程序员之微服务 &#x1f4a5; 该系列属于【SpringBoot基础】专栏&#xff0c;如您需查看其他SpringBoot相关文章&#xff0c;请您点击左边的连接 目录 一、网关路由 1. 网关…

苹果注册海外账户|注册海外Apple ID|下载海外App

注册海外apple ID 背景 先前的一直使用的Apple ID注册地区是国内。 但是一些app因地区限制需要海外账户才能下载&#xff0c;因此需要使用海外apple ID。 因此需要注册海外apple ID&#xff08;如美国&#xff09;。 前言 绑定手机号 手机号可以和国内Apple ID一样没关系…

记一次SATA硬盘上电不转问题排查(最终查到和供电线有关)

一、背景 今年把旧的台式机换成了新的台式机&#xff0c;把硬盘挪到新电脑了。 二、问题 把硬盘挪到新电脑后&#xff0c;SSD可以正常使用&#xff0c;但是有个氦气机械盘始终不能用。 三、排查过程 对比实验 做了一些实验&#xff1a; 把硬盘接回旧电脑会正常转&#x…

【轨物洞见】找到技术创新的“真问题”

技术创新是用技术解决真问题&#xff0c;创造真价值。问题是需求&#xff0c;技术是供应&#xff0c;将需求与供应有效连接的能力&#xff0c;是创新力。技术创新的第一步在于找到“真问题”。在找问题之前&#xff0c;我们先了解一下问题是如何产生的。 问题就是期望值与现状之…

eNSP 华为交换机链路聚合

华为交换机链路聚合 链路聚合好处&#xff1a; 1、提高带宽 2、链路冗余 SW_2&#xff1a; <Huawei>sys [Huawei]sys SW_2 [SW_2]vlan batch 10 20 [SW_2]int g0/0/4 [SW_2-GigabitEthernet0/0/4]port link-type access [SW_2-GigabitEthernet0/0/4]port default vl…

ECCV2024|商汤发布3D面部动画系统UniTalker:通过统一模型扩展音频驱动的 3D 面部动画

商汤研究院最新发布了一个先进的3D面部动画系统UniTalker&#xff0c;可以从不同的音频领域生成逼真的面部动作&#xff0c;包括各种语言的清晰和嘈杂的声音、文本到语音生成的音频&#xff0c;甚至伴有背景音乐的嘈杂歌曲。 UniTalker 可以输出多个注释。对于具有新注释的数据…

理解线程id和简单封装原生线程库

一、理解线程id 首先我们要知道给用户提供的线程id不是内核里面LWP&#xff08;轻量级进程id&#xff09;&#xff0c;而是pthread库自己维护的一个唯一值。 我们理解为什么线程id不是内核里面LWP&#xff0c;因为用户没有权限使用内核里面的字段&#xff0c;那是专门给OS管理…

DOM破坏案例

目录 DOM破坏 编码问题 简单闭合""号使用onclick onclick函数 焦点事件 标签使用 限制数字字母 js匿名函数绕过 覆盖 DOM破坏 编码问题 urlcode可以被识别 %16进制 <textarea> 可以解码不能执行 <script>&#59</script> 没有实体编码…

基于asp.net的在线考试系统、基于c#的在线考试管理系统

摘 要 伴随着社会以及科学技术的发展&#xff0c;互联网已经渗透在人们的身边&#xff0c;网络慢慢的变成了人们的生活必不可少的一部分&#xff0c;紧接着网络飞速的发展&#xff0c;管理系统这一名词已不陌生&#xff0c;越来越多的学校、公司等机构都会定制一款属于自己个…

SpingBoot自动装配原理

一&#xff0c;什么是SpringBoot自动装配 springboot自动装配&#xff1a;一个springboot项目通过扫描类路径下存在的类和各种配置信息自动装配&#xff0c;生成对应的B哦按对象&#xff0c;然后将他们交给spring容器管理。 二、SpringBoot自动装配原理 2.1启动类注解SpringB…

在MAVEN中版本依赖有冲突改怎么处理

1.为什么会出现版本依赖的冲突 如果存在版本冲突&#xff0c;通常可能会引发的报错是ClassNotFoundException、NoSuchMethodError等错误。Maven依赖版本冲突通常是由于间接依赖导致同一个jar包存在多个不同版本。例如&#xff0c;如果B依赖了A的1.0版本&#xff0c;而C依赖了A…

Nginx--防盗链问题

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 一、什么是盗链 盗链是一种网络行为&#xff0c;指的是一个网站未经授权&#xff0c;直接使用另一个网站资源&#xff08;如图片、视频、音乐、文件等…