5.18 TCP机械臂模拟

#include <netinet/tcp.h>//包含TCP选项的头文件
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <linux/input.h>//读取输入事件
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>#define SER_PORT 8888
#define SER_IP "192.168.125.75"
#define CLI_PORT 6666
#define CLI_IP "192.168.125.114"int main(int argc, const char *argv[])
{int cfd = socket(AF_INET, SOCK_STREAM, 0);if(-1 == cfd){perror("socket");return 1;}printf("cfd = %d\n", cfd);struct sockaddr_in cin = {.sin_family = AF_INET,//注释下行启用动态端口号.sin_port = htons(CLI_PORT),.sin_addr = { inet_addr(CLI_IP) },};if(-1 == bind(cfd, (struct sockaddr*)&cin, sizeof(cin))){perror("bind");return 1;}puts("bind success");struct sockaddr_in sin = {.sin_family = AF_INET,.sin_port = htons(SER_PORT),.sin_addr = { .s_addr = inet_addr(SER_IP) },};	if(-1 == connect(cfd, (struct sockaddr*)&sin, sizeof(sin))){perror("connect");return 1;}puts("connect success");//设置TCP push位int val = 1;//TCP_NODELAY表示Nagle算法(导致粘包现象),默认置0(不关闭),置1即可关闭if(-1 == setsockopt(cfd, IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val))){perror("setsockopt");return 1;}/*val = 0;if(-1 == setsockopt(cfd, IPPROTO_TCP, TCP_CORK, &val, sizeof(val))){perror("setsockopt");return 1;}*///设置端口快速重用printf("val = %d\n", val);if(-1 == setsockopt(cfd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val))){perror("setsockopt");return 1;}//定义指令格式结构体//注意字节对齐填充导致的问题,且大于1B的数据类型会自动补0//均会导致协议解析失败struct {//5Bchar c1[3];//3Bunion{char arm_red;unsigned char arm_blue;}c2;//1Bchar c3;//1B}cmd = { 0xff, 0x02, 0x00, 0x00, 0xff };//机械臂初始化send(cfd, &cmd, sizeof(cmd), 0);cmd.c1[2] = 0x01;usleep(50000);send(cfd, &cmd, sizeof(cmd), 0);char ang_r = 0x00;unsigned char ang_b = 0x00;//打开/dev/input/event1int fd = open("/dev/input/event1", O_RDONLY);if(-1 == fd){perror("open");return 1;}//准备读取数据的结构体变量struct input_event input;
#include <linux/input.h>
/* 结构体形式如下:* struct input_event {struct timeval time;__u16 type;__u16 code;__s32 value;};
*/// system("stty raw -echo");while(1){//char ch = getchar();read(fd, &input, sizeof(input));//switch(ch){switch(input.value * input.code){//code按下为0,弹起为1,长按为2//case 'w'://红增 				 //w:17 a:30 s:31 d:32case 17*2:if(ang_r < 0x5A)//最大90度ang_r += 0x02;cmd.c2.arm_red = ang_r;cmd.c1[2] = 0x00;break;//case 's'://红减case 31*2:if(ang_r > -0x5A)ang_r -= 0x02;cmd.c2.arm_red = ang_r;cmd.c1[2] = 0x00;break;//case 'd'://蓝增case 32*2:if(ang_b < 0xB4)ang_b += 0x02;cmd.c2.arm_blue = ang_b;cmd.c1[2] = 0x01;break;//case 'a'://蓝减case 30*2:if(ang_b > 0x00)ang_b -= 0x02;cmd.c2.arm_blue = ang_b;cmd.c1[2] = 0x01;break;default:continue;break;}send(cfd, &cmd, sizeof(cmd), 0);}// system("stty -raw echo");close(cfd);close(fd);return 0;
}

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

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

相关文章

一文详解逻辑越权漏洞

1. 逻辑越权 1.1. 漏洞原理 逻辑越权漏洞就是当用户跳过自己的权限限制&#xff0c;去操作同等级用户或者上级用户。正常的情况下&#xff0c;当一个用户去访问某个资源的时候&#xff0c;首先需要去登录验证自己的权限&#xff0c;其次是对数据的查询&#xff0c;最后返回数…

linux命令中arpd的使用

arpd 收集免费ARP信息 补充说明 arpd命令 是用来收集免费arp信息的一个守护进程&#xff0c;它将收集到的信息保存在磁盘上或者在需要时&#xff0c;提供给内核用户用于避免多余广播。 语法 arpd(选项)(参数)选项 -l&#xff1a;将arp数据库输出到标准输出设备显示并退出…

【云原生】Kubernetes----POD基本管理

目录 引言 一、Pod基础概念 &#xff08;一&#xff09;Pod简介 &#xff08;二&#xff09;Pod的分类 1.自主式Pod 2.控制器管理的Pod &#xff08;三&#xff09;Pod使用方式 1.单容器pod 2.多容器Pod 3. 注意事项 二、Pod容器的分类 &#xff08;一&#xff09;…

【Unity】免费的高亮插件——QuickOutline

除了常见的HighLightSystem来实现的高亮功能&#xff0c;其实还有很多的方法实现物体的高亮。 在 Unity资源商店 搜索OutLine&#xff0c;就会有很多免费好用的高亮插件。 下面介绍一下 QuickOutline这个插件&#xff0c;在 Unity资源商店 搜索到后&#xff0c;点击进去就可以…

推荐几款新手学习编程的网站

免费在线开发平台 介绍一款编程平台&#xff0c;专为学生和开发者量身打造&#xff01;平台拥有近4000道编程题目&#xff0c;支持多种编程语言&#xff08;包括C、C、JavaScript、TypeScript、Go、Rust、PHP、Java、Ruby、Python3和C#&#xff09;&#xff0c;为您提供全面的学…

Tomcat端口配置

Tomcat是开源免费的服务器&#xff0c;其默认的端口为8080&#xff0c;本文讲述一下如何配置端口。 最后在浏览器中输入localhost:8888即可打开Tomcat界面

python判断字符串是否为回文串的详细解析与实现

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;回文串的定义与背景 二、判断回文串的基本思路 示例解析 三、代码实…

三维场景感知之三维目标检测方向入门

三维目标检测入门 1 文档需知2 基础知识深度学习基础必上手项目科研研究必知道的论文门户深度学习必看论文 3 目标检测入门知识二维目标检测必看论文 4 三维目标检测入门知识三维目标检测必熟悉数据集三维目标检测点云分类分割预备知识三维目标检测必熟悉&#xff0c;必跑通&am…

Node.js —— 前后端的身份认证 之用 express 实现 JWT 身份认证

JWT的认识 什么是 JWT JWT&#xff08;英文全称&#xff1a;JSON Web Token&#xff09;是目前最流行的跨域认证解决方案。 JWT 的工作原理 总结&#xff1a;用户的信息通过 Token 字符串的形式&#xff0c;保存在客户端浏览器中。服务器通过还原 Token 字符串的形式来认证用…

AIGC-风格迁移-“DEADiff:稳定可控的文本到图像风格化扩散模型 “-CVPR2024

DEADiff: An Efficient Stylization Diffusion Model with Disentangled Representations 代码&#xff1a;https://tianhao-qi.github.io/DEADiff/ 论文&#xff1a;https://arxiv.org/pdf/2403.06951 本文介绍了一种名为DEADiff的方法&#xff0c;旨在解决基于扩散的文本到图…

【机器学习论文阅读笔记】Robust Recovery of Subspace Structures by Low-Rank Representation

前言 终于要轮到自己汇报了好崩溃。。盯着论文准备开始做汇报ppt感觉一头乱麻&#xff0c;决定还是写博客理清思路再说吧 参考资料&#xff1a; 论文原文&#xff1a;arxiv.org/pdf/1010.2955 RPCA参考文章&#xff1a;RPCA - 知乎 (zhihu.com) 谱聚类参考文章&#xff1a…

Python使用pymysql操作数据库

大家好&#xff0c;当涉及到与数据库进行交互和操作时&#xff0c;Python的pymysql库是一个常用且功能强大的选择。pymysql提供了与MySQL数据库的连接、查询、插入、更新和删除等操作的方法&#xff0c;使得在Python中进行数据库操作变得简单而高效。 1、安装 pymysql 库 在开…

Python3 笔记:部分专有名词解释

1、python 英 /ˈpaɪθən/ 这个词在英文中的意思是蟒蛇。但据说Python的创始人Guido van Rossum&#xff08;吉多范罗苏姆&#xff09;选择Python这个名字的原因与蟒蛇毫无关系&#xff0c;只是因为他是“蒙提派森飞行马戏团&#xff08;Monty Python&#xff07;s Flying Ci…

【静态分析】在springboot使用太阿(Tai-e)01

参考&#xff1a;使用太阿&#xff08;Tai-e&#xff09;进行静态代码安全分析&#xff08;spring-boot篇一&#xff09; - 先知社区 ---------------------------------------------------------------------- 由于spring-boot实现了控制反转与面向切面编程的设计思想&#x…

OpenHarmony轻松玩转GIF数据渲染

OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;提供了Image组件支持GIF动图的播放&#xff0c;但是缺乏扩展能力&#xff0c;不支持播放控制等。今天介绍一款三方库——ohos-gif-drawable三方组件&#xff0c;带大家一起玩转GIF的数据渲染&#xff0c;搞…

二手车经营效率罗盘,用经营效率罗盘玩转二手车生意

课程下载&#xff1a;https://download.csdn.net/download/m0_66047725/89292198 更多资源下载&#xff1a;关注我。 带你了解不一样的二手车圈让二手车经营更高效 课程介绍 随着时代不断发展&#xff0c;二手车行业迎来了快速变革期。二手车有着一车一况、一车一价非标和价…

无人机+飞行服务:无人机飞防服务(打药+施肥+播种)技术详解

无人机飞防服务&#xff0c;结合了先进的无人机技术与农业实践&#xff0c;为现代农业提供了高效、精准的打药、施肥和播种解决方案。以下是对这些技术的详细解析&#xff1a; 一、无人机打药技术 无人机打药技术利用无人机搭载喷雾设备&#xff0c;对农田进行精准施药。通过…

【Crypto】看我回旋踢

文章目录 一、看我回旋踢二、知识点什么是ROT13&#xff1f;工作原理分析字符串格式 解题感悟 一、看我回旋踢 关键词回旋&#xff0c;盲猜ROT13 因为以 synt{ 开头&#xff0c;并以 } 结束&#xff0c;基本可以判断是ROT13 小小flag&#xff0c;拿下&#xff01; 二、知识点 …

抖音极速版:抖音轻量精简版本,新人享大福利

和快手一样&#xff0c;抖音也有自己的极速版&#xff0c;可视作抖音的轻量精简版&#xff0c;更专注于刷视频看广告赚钱&#xff0c;收益比抖音要高&#xff0c;可玩性更佳。 抖音极速版简介 抖音极速版是一个提供短视频创业和收益任务的平台&#xff0c;用户可以通过观看广…

【机器学习聚类算法实战-5】机器学习聚类算法之DBSCAN聚类、K均值聚类算法、分层聚类和不同度量的聚集聚类实例分析

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…