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

server/2024/10/11 13:25:28/

目录

GUI-toc" style="margin-left:40px;">1、修改GUI

C%E5%8F%91%E9%80%81%E7%BC%93%E5%86%B2%E5%8C%BA%E7%9A%84%E5%B8%A7-toc" style="margin-left:40px;">2、修改数据处理和发送缓冲区的帧

3、修改server中对SR04的处理

4、添加SR04的dirver_handle

C%E8%AF%81-toc" style="margin-left:40px;">5、验证

6、遇到问题及解决方法

C-toc" style="margin-left:40px;">7、 项目管理操作


GUI">1、修改GUI

C%E5%8F%91%E9%80%81%E7%BC%93%E5%86%B2%E5%8C%BA%E7%9A%84%E5%B8%A7">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;
}

C%E8%AF%81">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的地址

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

C">7、 项目管理操作


http://www.ppmy.cn/server/15022.html

相关文章

番外篇-CSS3新增特性

CSS3是CSS的第三个版本&#xff0c;引入了许多新的特性和功能。以下是一些CSS3新增的特性&#xff1a; 1. 变换&#xff08;Transform&#xff09;&#xff1a;可以通过旋转、缩放、倾斜和平移等变换操作改变元素的外观和位置。 2. 过渡&#xff08;Transition&#xff09;&a…

node-sass报错如何解决

npm install 安装的时候 报node-sass错误 这个一看就是node版本兼容性导致的问题 node-sass与node版本不匹配 下面是常见的node版本和对应的node-sass版本 解决办法 1.单独安装node-sass npm install node-sass9.0.0 还是报上面的错误&#xff01;&#xff01;&#xff01;&a…

PyQt介绍——动画使用详解之动画组QAnimationGroup

QAnimationGroup&#xff1a;动画组&#xff0c;可以包含多个动画&#xff0c;可以包含子动画组。 QSequentialAnimationGroup&#xff1a;顺序动画组&#xff0c;按照添加的顺序依次执行动画。 QParallelAnimationGroup&#xff1a;并行动画组&#xff0c;所有动画一起执行。…

HAWE比例多路阀驱动放大器

HAWE比例多路阀驱动放大器是一种在工程机械和工业自动化领域中广泛使用的高精度控制元件&#xff0c;它通过电气信号来控制流体的流动方向、流量及压力等参数。多路比例阀品牌技术的核心在于高性能、低成本、智能化控制、高频响、安全性以及技术创新等方面。这些技术的发展不仅…

JSON劫持与while(1)

一、背景与介绍 JSON 劫持&#xff0c;也称为“JavaScript 对象表示不法劫持”。当应用程序没有适当地防范此类攻击时&#xff0c;此漏洞允许攻击者从受害者的浏览器中窃取敏感数据。 JSON 劫持利用同源策略&#xff0c;这是一种安全措施&#xff0c;可防止网页向与提供网页的域…

Mac安装telnet

一、安装Homebrew 1、打开官网&#xff1a;Homebrew — The Missing Package Manager for macOS (or Linux) 2、打开终端输入&#xff1a; /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 二、安装Telnet bre…

Kamailio 的 uuid_kill

Kamailio 是否有类似 FreeSWITCH 的 uuid_kill 命令 试了试&#xff0c;发现还真的有 如果正在振铃&#xff0c;那么 tm.cancel 可以结束呼叫&#xff0c;参考链接&#xff1a; https://kamailio.org/docs/modules/5.5.x/modules/tm.html#tm.rpc.cancel 如果已经应答&#…

Hive安装与配置实战指南

Hive安装与配置实战指南 在大数据领域中&#xff0c;Hive以其类SQL的查询语言HQL、可扩展的数据仓库能力和对Hadoop生态系统的良好集成&#xff0c;成为了数据分析和处理的重要工具。本文将指导您完成Hive的安装与配置&#xff0c;帮助您快速搭建起自己的Hive环境。 一、环境…