028——从GUI->Client->Server->driver实现对SR04的控制

news/2024/5/18 13:16:43

目录

1、修改GUI

2、修改数据处理和发送缓冲区的帧

3、修改server中对SR04的处理

4、添加SR04的dirver_handle

5、验证

6、遇到问题及解决方法

7、 项目管理操作


1、修改GUI

2、修改数据处理和发送缓冲区的帧

添加对SR04按键事件处理

添加对接收数据的处理

3、修改server中对SR04的处理

                printf("SR04!!!\n");if ('g' == cmd[4]){opt = sr04_handle(&get_data);if (NOERROR == opt){sprintf(buf,"@002g%03d", get_data);tx_buffer = buf;}else{tx_buffer = "@002e";}}printf(">>>>>>%s\n",tx_buffer);         if (send(acceptfd, tx_buffer, strlen(tx_buffer), 0) < 0){perror("send failed");  }

4、添加SR04的dirver_handle

/*
*author   : xintianyu
*function : Handle sr501 Settings
*date     : 2024-4-18
-----------------------
author date  modify*/
int sr04_handle(int *data)
{char *device = "/dev/CEBSS_sr04";int ret = NOERROR;static int fd;struct pollfd fds[1];int val;/* 打开文件 */fd = open(device, O_RDWR);if (fd == -1){printf("can not open file %s\n", device);return ERROR;}ioctl(fd, CMD_TRIG);printf("I am goning to read distance: \n");fds[0].fd = fd;fds[0].events = POLLIN;if (1 == poll(fds, 1, 5000)){if (read(fd, &val, 4) == 4){printf("get distance: %d cm\n", val*17/1000000);*data = val*17/1000000;}elseprintf("get distance err\n");}else{printf("get distance poll timeout/err\n");ret = ERROR;}if (*data > 450){ret = ERROR;}close(fd);return ret;
}

5、验证

6、遇到问题及解决方法

/home/book/program/cebss/server/src/driver_handle.c:144:2: error: implicit declaration of function ‘ioctl’ [-Werror=implicit-function-declaration]
  ioctl(fd, CMD_TRIG);
  ^~~~~
cc1: all warnings being treated as errors

添加ioctl的头文件

/home/book/program/cebss/server/src/tcp.c:239:25: error: ‘tx_buffer’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
                         sprintf(tx_buffer,"@001g%d", get_data);

sprintf函数的buf必须是初始化过的内存比如数组或者malloc的地址

遇到其它问题可直接写导评论区或者加群反馈

7、 项目管理操作


http://www.mrgr.cn/p/52650450

相关文章

蓝桥杯2024年第十五届省赛

E:宝石组合 根据给的公式化简后变为gcd(a,b,c)根据算数基本定理&#xff0c;推一下就可以了 然后我们对1到mx的树求约数&#xff0c;并记录约数的次数&#xff0c;我们选择一个最大的且次数大于等3的就是gcd int mx; vector<int> g[N]; vector<int> cnt[N]; int…

体验下,大厂在使用功能的API网关!

作者:小傅哥 博客:https://bugstack.cn沉淀、分享、成长,让自己和他人都能有所收获!😄大家好,我是技术UP主小傅哥。 还是在22年的时候,小傅哥做了一套基于 Netty 协议转换和通信的 API网关,分享给伙伴们学习使用,增加一些业务开发以外的知识积累。不过很多伙伴都问过…

通过ORPO技术微调 llama3大模型(Fine-tune Llama 3 with ORPO)

1f45bd1e8577af66a05f5e3fadb0b29 通过ORPO对llama进行微调 前言 ORPO是一种新颖的微调技术,它将传统的监督微调和偏好对齐阶段整合到一个过程中。这减少了训练所需的计算资源和时间。此外,经验结果表明,ORPO在各种模型大小和基准测试中都超过了其他对齐方法。 在本文中,我…

数据结构系列-堆排序

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 昨天我们实现的堆的搭建&#xff0c;我们今天实现以下堆的排序&#xff0c; 堆的排序的最大的优点就是提高的效率&#xff0c;减小了时间复杂度&#xff0c;在这个里面我们有一个…

【多态】底层原理

博主首页&#xff1a; 有趣的中国人 专栏首页&#xff1a; C进阶 本篇文章主要讲解 多态底层原理 的相关内容 1. 多态原理 1.1 虚函数表 先看一下这段代码&#xff0c;计算一下sizeof(Base)是多少&#xff1a; class Base { public:virtual void Func1(){cout << &quo…

Jenkins CI/CD 持续集成专题二 Jenkins 相关问题汇总

一 问题一 pod [!] Unknown command: package 1.1 如果没有安装过cocoapods-packager&#xff0c;安装cocoapods-packager&#xff0c;sudo gem install cocoapods-packager 1.2 如果已经安装cocoapods-packager&#xff0c;还是出现上面的错误&#xff0c;有可能是pod的安…

Linux查看僵尸进程

1、查看系统是否有僵尸进程 使用Top命令查找&#xff0c;当zombie前的数量不为0时&#xff0c;即系统内存在相应数量的僵尸进程。 2、定位僵尸进程 使用命令ps -A -ostat,ppid,pid,cmd |grep -e ‘^[Zz]’定位僵尸进程以及该僵尸进程的父进程。 3、杀死僵尸进程 使用Kill -…

丁晴无硫指套:高科技产品保护的利器

Nitrile Sulphur-Free Finger Cots: A Weapon for Protecting High-Tech Products 随着科技的不断发展&#xff0c;微型电机、精密电子器件、仪器仪表等高科技产品的制造与应用日益普及。然而&#xff0c;这些产品的制造过程中往往需要特殊的保护措施&#xff0c;以防止静电、…

Python与数据库连接

新建表boss create table 创建表 Code import pymysqlcon pymysql.connect(hostlocalhost,\userroot,\password,\port3306,\dbbusiness) cursorcon.cursor() cursor.execute(create table if not exists boss(id int auto_increment primary key,name varchar(20)not null…

[第一届 帕鲁杯 CTF挑战赛 2024] Crypto/PWN/Reverse

被一个小题整坏了&#xff0c;后边就没认真打。赛后把没作的复盘一下。 比赛有52个应急响应&#xff0c;猜是取证&#xff0c;都是队友在干&#xff0c;我也不大关心。前边大多题是比赛的原题。这是后来听说的&#xff0c;可都没见过&#xff0c;看来打的比赛还是少了。 Cryp…

个人网站的SEO优化系列——如何实现搜索引擎的收录

如果你自己做了一个网站&#xff0c;并且想让更多的人知道你的网站&#xff0c;那么无非就是两种途径 一、自己进行宣传&#xff0c;或者花钱宣传 二、使用搜索引擎的自然流量 而如果搜索引擎都没有收录你的站点&#xff0c;别说是自然流量&#xff0c;就算是使用特定语句【sit…

ASP.NET MVC企业级程序设计 (商品管理:小计,总计,删除,排序)

目录 效果图 实现过程 1创建数据库 2创建项目文件 3创建控制器&#xff0c;右键添加&#xff0c;控制器 ​编辑 注意这里要写Home​编辑 创建成功 数据模型创建过程之前作品有具体过程​编辑 4创建DAL 5创建BLL 6创建视图&#xff0c;右键添加视图 ​编辑 7HomeCont…

算法项目(9)—— 大模型实现PDF检索加QA

本文包含什么&#xff1f; 使用大语言模型进行多个PDF问答检索加QA.gradio实现的网页界面操作,全套代码以及代码介绍运行有问题? csdn上后台随时售后. 项目说明 本项目实现使用大语言模型为核心,gradio框架,调用vicuna实现多个pdf QA 代码运行 python3 main.py注意事项:…

visionTransformer window平台下报错

错误&#xff1a; KeyError: Transformer/encoderblock_0/MlpBlock_3/Dense_0kernel is not a file in the archive解决方法&#xff1a; 修改这个函数即可&#xff0c;主要原因是Linux系统与window系统路径分隔符不一样导致 def load_from(self, weights, n_block):ROOT f&…

day07 51单片机-串口通信

51 单片机-串口通信 1 串口通信 1.1 需求描述 本案例讲解如何通过串口和PC以9600波特率,无校验位、1停止位通信。最终实现PC向单片机发送字符串,单片机回复PC。本案例中采用串口1通信。 1.2 硬件设计 1.2.1 串口工作原理 串口是将数据按照比特逐一发送的通信接口。在串…

开源博客项目Blog .NET Core源码学习(17:App.Hosting项目结构分析-5)

本文学习并分析App.Hosting项目中前台页面的作品展示页面和首页页面。 作品展示页面 作品展示页面总体上为上下布局&#xff0c;上方显示导航菜单&#xff0c;下方从左向右显示图片数据&#xff0c;支持放大查看图片和下载图片。整个页面使用了layui中的面包屑导航、弹出层、流…

如何判别三角形和求10 个整数中最大值?

分享每日小题&#xff0c;不断进步&#xff0c;今天的你也要加油哦&#xff01;接下来请看题------> 一、已知三条边a&#xff0c;b&#xff0c;c能否构成三角形&#xff0c;如果能构成三角形&#xff0c;判断三角形的类型&#xff08;等边三角形、等腰三角形或普通三角形 …

读天才与算法:人脑与AI的数学思维笔记07_数字绘画

数字绘画1. 数字绘画 1.1. 事物的可预测性与不可预测性构成了我们熟识的世界 1.1.1. 汤姆斯托帕德(Tom Stoppard) 1.2. 艺术作品就是通过各种形式给人带来美的感受,从而使人们获得精神上的愉悦与放松 1.3. “像素化”的画作激发了人…

jmeter 指定QPS压测接口

文章目录 jmeter 指定QPS压测接口更换语言为中文创建测试任务新建线程组右键线程组&#xff0c;新建http request&#xff0c;填写要你要压测的接口地址、参数如果需要自定义请求头&#xff0c;添加一个Http头信息管理器要查看结果和QPS统计数据&#xff0c;给上门的http请求添…

牛客NC162 二叉树中和为某一值的路径(三)【中等 dfs C++、Java、Go、PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/965fef32cae14a17a8e86c76ffe3131f 思路 既然要找所有路径上节点和等于目标值的路径个数&#xff0c;那我们肯定先找这样的路径起点啊&#xff0c; 但是我们不知道起点究竟在哪里&#xff0c; 而且任意节点都有…