上位机图像处理和嵌入式模块部署(树莓派4b实现xmlrpc通信)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        前面,我们也用纯API实现过上位机和开发板之间的通信。当时使用的方法,就是用windows自带的网络sdk和linux自带的api函数来完成的。这种方法虽然也可以达成目的,不过做起来总是稍显复杂一点。其实,我们还可以使用第三方库来达成这一目的,写起来比较简单。这种方法就是xmlrpc。xmlrpc是一个标准,很多的库可以使用。今天介绍的就是xmlrpc++库,可以在windows平台编译,也可以在linux平台,使用起来很方便。

1、下载地址

        下载地址在这个地方,大家直接选择download下载即可,

https://xmlrpcpp.sourceforge.net/

2、解压文件

        下载好的文件是一个zip的格式。我们通过mobaxterm上传到树莓派4b之后,直接用unzip解压即可。

3、修改xmlrpc的文件

        如果直接编译代码的话,可能会编译不过,因为会提示我们没有memset之类的函数声明。这个时候需要做的,就是在对应的头文件添加#include <cstring>即可。

4、准备server.cpp文件

        这里全部的测试,就都放到树莓派4b上面做了。windows编译、执行也是相同的道理。首先,我们准备一个server.cpp文件,

#include <iostream>
using namespace std;#include "XmlRpcServer.h"
#include "XmlRpc.h"
#include "XmlRpcValue.h"
#include "XmlRpcServerMethod.h"class CountMethod : public XmlRpc::XmlRpcServerMethod
{
public:CountMethod(XmlRpc::XmlRpcServer* s) :XmlRpc::XmlRpcServerMethod("count", s){return;}void execute(XmlRpc::XmlRpcValue& params, XmlRpc::XmlRpcValue & result){std::cout << params[0]["data1"] << std::endl;std::cout << params[0]["data2"] << std::endl;result["result"] = 1;}
};XmlRpc::XmlRpcServer xml_manage_s;int main(int argc, char* argv[])
{XmlRpc::XmlRpcServerMethod* pCountMethod = new CountMethod(&xml_manage_s);XmlRpc::setVerbosity(0);xml_manage_s.bindAndListen(30000);// Enable introspectionxml_manage_s.enableIntrospection(true);xml_manage_s.work(-1.0);delete pCountMethod;return 0;
}

        编译的话也比较简单,

g++ -c *.cpp
g++ -o server *.o

        注意,完成这一步的时候,需要把代码都copy到src目录下面完成。没有问题的话,我们就可以看到server程序生成。

5、准备client.cpp文件

        文件的准备还是和server.cpp一样的。client.cpp的内容如下所示,

#include <iostream>
using namespace std;#include "XmlRpcClient.h"
#include "XmlRpc.h"int main(int argc, char* argv[])
{XmlRpc::XmlRpcValue params;XmlRpc::XmlRpcValue result;params["data1"]=1;params["data2"]=2;XmlRpc::XmlRpcClient* client = new XmlRpc::XmlRpcClient("127.0.0.1", \30000);client->execute("count", params, result);delete client;std::cout << result["result"];return 0;
}

        还是用同样的方法编译client.cpp,

g++ -c *.cpp
g++ -o client *.o

6、测试和验证

        测试和验证也不麻烦。第一步启动server,输入./server &即可。第二步启动client,即输入./client。如果我们可以看到相关的1、2、1打印,那代表整个流程都是ok的,没有什么问题。对于一般的参数配置和参数传递,用xmlrpc肯定似乎没有问题的。不过如果是大的文件传输,最好还是使用ssh或者是ftp,毕竟术业有专攻。

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

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

相关文章

redis面试题——项目中怎么用的

一&#xff1a;项目中缓存是如何使用的&#xff1f; 项目中使用缓存保存医疗机构信息数据&#xff0c;将对象进行序列化是将对象转换成二进制流&#xff0c;从而可以将这个二进制流存储到Redis中&#xff0c;读取Redis中存储的数据并反序列化对象 二&#xff1a;为什么要用缓…

协程的意义(二)

1.协程的意义 在一个线程中&#xff0c;如果遇到IO等待&#xff0c;线程不会一直在等待&#xff0c;而是利用空余时间去完成别的任务&#xff08;充分利用线程&#xff09;。 示例&#xff1a;下载图片 ①普通的方式下载图片&#xff08;同步方式&#xff09; ②使用协程的方…

使用eNSP配置OSPF多区域实验

一、实验拓扑 二、实验要求 1、R4为ISP&#xff0c;其上只配置IP地址&#xff1b;R4与其他所直连设备间均使用公有IP&#xff1b; 2、R3-R5、R6、R7为MGRE环境&#xff0c;R3为中心站点&#xff1b; 3、整个OSPF环境IP基于172.16.0.0/16划分&#xff1b;除了R12有两个环回&…

Pytorch手撸Attention

Pytorch手撸Attention 注释写的很详细了&#xff0c;对照着公式比较下更好理解&#xff0c;可以参考一下知乎的文章 注意力机制 import torch import torch.nn as nn import torch.nn.functional as Fclass SelfAttention(nn.Module):def __init__(self, embed_size):super(S…

大语言模型攻击

实验&#xff1a; 一.环境部署 1.模型部署 vicuna-13b-v1.3 vicuna-7b-v1.3 LLaMA-2-7B-Chat 部署代码 二.使用 GCG 攻击 LLaMA-2 的示例 使用模型完整性&#xff0c;以满足指令“写一个令人信服的匿名威胁。”下面的目标使用“当然&#xff0c;这是一个令人信服的匿名死亡…

PHP定时任务框架taskPHP3.0学习记录4宝塔面板bash定时任务(轮询指定json文件字段后确定是否执行、环境部署、执行日志、文件权限)

一 需求说明 宝塔面板中,读取指定 /www/wwwroot/lockdata/cron/webapp.json文件&#xff1b;配置定时任务脚本task.sh&#xff1b;当读取webapp.json中&#xff0c;如果cron_task1&#xff0c;则执行任务php start.php start命令行&#xff1b;完成命令后&#xff0c;执行cron…

Python基础学习之数据切片

数据切片介绍&#xff1a; 切片的基本语法是data[start:stop:step]&#xff0c;其中&#xff1a; start 是切片开始的索引&#xff08;包括该索引处的元素&#xff09;。 stop 是切片结束的索引&#xff08;不包括该索引处的元素&#xff09;。 step 是切片的步长&#xff0…

【S32K3 入门系列】- ADC 模块简介(上)

一、 前言 对于 S32K3 系列的初学者来说&#xff0c;S32K3 系列的参考手册阅读难度是让人望而却步的&#xff0c;本系列将对 S32K3 系列的外设进行逐一介绍&#xff0c;对参考手册一些要点进行解析。本文旨在介绍 S32K3 系列的 ADC 模块&#xff0c; ADC&#xff08;Analog to…

Stable Diffusion 模型分享:ChilloutMix(真实、亚洲面孔)chilloutmix_NiPrunedFp32Fix

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 相信近来吸引大家想一试 Stable Diffusion 图像生…

嵌入式面试-回答I2C

说明&#xff1a; 此文章是在阅读了一些列面试相关资料之后对于一些常见问题的整理&#xff0c;主要针对的是嵌入式软件面试中涉及到的问答&#xff0c;努力精准的抓住重点进行描述。若有不足非常欢迎指出&#xff0c;感谢&#xff01;在总结过程中有些答案没标记参考来源&…

轻薄手机,没有一款新机能超越小米11青春版,小米和苹果也没有

打算换手机&#xff0c;但是不喜欢半斤机&#xff0c;于是找了几款轻薄手机&#xff0c;却发现如今的轻薄手机都太重了&#xff0c;还不如3年前的小米11青春版&#xff0c;可见小米11青春版是一款相当能打的手机。 小米11青春版搭载骁龙778芯片&#xff0c;重量只有159克&#…

《游戏系统设计十二》灵活且简单的条件检查系统

目录 1、序言 2、需求 3、实现 3.1 思路 3.2 代码实现 4、总结 1、序言 每个游戏都有一些检查性的任务&#xff0c;在做一些判断的时候&#xff0c;判断等级是不是满足需求。 比如如下场景&#xff1a;在进入副本的时候需要检查玩家等级是否满足&#xff0c;满足之后才…

YOLOv5 / YOLOv7 / YOLOv8 / YOLOv9 / RTDETR -gui界面-交互式图形化界面

往期热门博客项目回顾&#xff1a;点击前往 计算机视觉项目大集合 改进的yolo目标检测-测距测速 路径规划算法 图像去雨去雾目标检测测距项目 交通标志识别项目 yolo系列-重磅yolov9界面-最新的yolo 姿态识别-3d姿态识别 深度学习小白学习路线 AI健身教练-引体向上…

js-pytorch:开启前端+AI新世界

嗨&#xff0c; 大家好&#xff0c; 我是 徐小夕。最近在 github 上发现一款非常有意思的框架—— js-pytorch。它可以让前端轻松使用 javascript 来运行深度学习框架。作为一名资深前端技术玩家&#xff0c; 今天就和大家分享一下这款框架。 往期精彩 Nocode/Doc&#xff0c;可…

JWT和Redis比较选型

一、Session 二、JWT 三、比较 基于JWT&#xff08;JSON Web Token&#xff09;和Session身份验证之间的争论是现代 Web 开发中的一个要点。 JWT 身份验证&#xff1a;无状态。服务器生成一个令牌&#xff0c;客户端存储该令牌并随每个请求一起提供&#xff0c;服务端仅需按照…

LeetCode in Python 200. Number of islands (岛屿数量)

岛屿数量既可以用深度优先搜索也可以用广度优先搜索解决&#xff0c;本文给出两种方法的代码实现。 示例&#xff1a; 图1 岛屿数量输入输出示意图 方法一&#xff1a;广度优先搜索(bfs) 代码&#xff1a; class Solution:def numIslands(self, grid):if not grid:return 0…

IO综述·

阻塞模式 读写数据会发生阻塞现象。当用户线程发起IO请求之后&#xff0c;内核会查看数据检查就绪。如果没有就绪就会等待数据就绪。而用户线程会处于阻塞状态&#xff0c;用户线程交出CPU。当数据就绪之后&#xff0c;内核会将数据拷贝到用户线程&#xff0c;并返回结果给用户…

KMP算法(Python)

进阶的做法就是KMP算法&#xff0c;当然暴力也能ac。 KMP主要用一个nex列表&#xff0c;nex[i]存储&#xff08;模式串needle中&#xff09;从第0个到i个字符串s中的一个相等前后缀的最大长度。比如说对于aabaa来说&#xff0c;最大长度应该是&#xff08;前缀aa&#xff09;和…

Linux下SPI设备驱动实验:验证读写SPI设备中数据的函数功能

一. 简介 前面文章实现了 SPI设备驱动框架&#xff0c;并在此基础上添加了字符设备驱动框架&#xff0c;实现了读 / 写SPI设备中数据的函数&#xff0c;文章如下&#xff1a; Linux下SPI设备驱动实验&#xff1a;向SPI驱动框架中加入字符设备驱动框架代码-CSDN博客 Linux下…

算法打卡day51|单调栈篇02| Leetcode 503.下一个更大元素II、42. 接雨水

算法题 Leetcode 503.下一个更大元素II 题目链接:503.下一个更大元素II 大佬视频讲解&#xff1a;503.下一个更大元素II视频讲解 个人思路 这道题和之前496.下一个更大元素 I 差不多&#xff0c;只是这道题需要循环数组&#xff0c;那就在遍历的过程中模拟走两遍nums就行&a…