python数据实时传给unity工程并绘制出来

python

# 服务器端代码
import socket
import random
import struct
import time# 创建一个服务器Socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 监听的地址和端口
host = '127.0.0.1'
port = 12345# 绑定地址和端口
server_socket.bind((host, port))# 开始监听连接
server_socket.listen(1)# 等待客户端连接
client_socket, addr = server_socket.accept()
print('连接来自:', addr)try:# 发送和接收数据while True:data = client_socket.recv(1024).decode('utf-8')if not data:breakprint('接收到数据:', data)# client_socket.sendall('已收到数据'.encode('utf-8'))time.sleep(0.5)distance = random.uniform(0, 1)# distance = 3.1415926print(distance)strs = "Elegance is the only beauty that never fades."dis = "the distance is %.3f meters. " % distance# client_socket.send(dis.encode('utf-8') + b'\n' + strs.encode('utf-8'))bytes_value = struct.pack("d", distance)  # Big-endian formatclient_socket.send(bytes_value)print('已发送数据:', dis)
except ConnectionResetError:print("Unity客户端关闭连接")
finally:# 关闭连接client_socket.close()server_socket.close()

unity3d

RecvData.cs

// Unity 3D客户端代码
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using UnityEngine;public class RecvData : MonoBehaviour
{// 服务器地址和端口private string serverAddress = "127.0.0.1";private int port = 12345;// 与服务器的连接private TcpClient client;private NetworkStream stream;private bool isConnect = false;byte[] receiveBuffer = new byte[1024];public static double dis_value = -1.0f;// Start is called before the first frame updatevoid Start(){// 连接到服务器ConnectToServer();}// Update is called once per framevoid Update(){if(isConnect){SendDataToServer("Hello Server");Debug.Log(ReceiveDataFromServer());            ;}}// 连接到服务器private void ConnectToServer(){try{client = new TcpClient(serverAddress, port);stream = client.GetStream();isConnect = true;Debug.Log("成功连接到服务器");}catch (Exception e){Debug.Log("无法连接到服务器:" + e);}}// 发送数据到服务器public void SendDataToServer(string data){if (stream != null){byte[] byteData = Encoding.UTF8.GetBytes(data);stream.Write(byteData, 0, byteData.Length);Debug.Log("已发送数据到服务器:" + data);}else{Debug.Log("无法发送数据,连接未建立");}}// 从服务器接收数据public string ReceiveDataFromServer(){try{int bytesRead = stream.Read(receiveBuffer, 0, receiveBuffer.Length);//Debug.Log("bytesRead is " + bytesRead);dis_value = BitConverter.ToDouble(receiveBuffer, 0);print("dis_value is " + dis_value);return dis_value.ToString();}catch (Exception e){Debug.Log("接收数据时发生异常:" + e);return null;}}// 关闭连接private void OnApplicationQuit(){if (stream != null){stream.Close();}if (client != null){client.Close();}}
}

需要导入xchart绘图package

ValueChat.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using XCharts.Runtime;public class ValueChat : MonoBehaviour
{public double distance_gap = 0.0f;LineChart gap_chart = null;private float timeBetweenGenerations = 0.01f; // 两次生成之间的时间间隔private bool isShow = false; // 标记当前是否正在生成物体public Text gapValue_text;// Start is called before the first frame updatevoid Start(){SetValue_Show();StartCoroutine("ShowData"); // 调用协程函数}// Update is called once per framevoid Update(){if (RecvData.dis_value != -1.0f){//distance_gap = double.Parse(HelloRequester.gap_value);distance_gap = RecvData.dis_value;string formattedNumber = distance_gap.ToString("0.000");gapValue_text.text = "The gap value is " + formattedNumber + " mm";}//distance_gap = double.Parse(HelloRequester.gap_value);}IEnumerator ShowData(){while (true){if (!isShow){yield return new WaitForSeconds(timeBetweenGenerations); // 等待指定的时间间隔后再进行下一次生成Show_Line(gap_chart);isShow = true; // 设置为正在生成状态}else{yield return null; // 不进行任何操作直到下一次生成isShow = false; // 设置为正在生成状态}}}void SetValue_Show(){var chart = gameObject.GetComponent<LineChart>();if (chart == null){chart = gameObject.AddComponent<LineChart>();chart.Init();}gap_chart = chart;//设置标题:var title = chart.EnsureChartComponent<Title>();title.text = "Gap Value Line";//设置提示框和图例是否显示:var tooltip = chart.EnsureChartComponent<Tooltip>();tooltip.show = true;var legend = chart.EnsureChartComponent<Legend>();legend.show = false;//设置坐标轴:var xAxis = chart.EnsureChartComponent<XAxis>();xAxis.splitNumber = 10;xAxis.boundaryGap = true;xAxis.type = Axis.AxisType.Category;var yAxis = chart.EnsureChartComponent<YAxis>();yAxis.type = Axis.AxisType.Value;//清空默认数据,添加Line类型的Serie用于接收数据:chart.RemoveData();chart.AddSerie<Line>("line");添加10个数据://for (int i = 0,  j = 1 ; i<60 ; i = i + 5, j++)//    {//        chart.AddXAxisData("T " + j);//    //chart.AddData(0, Random.Range(10, 20));//    chart.AddData(0, distance_gap);//    Debug.Log("-----------" + distance_gap);//    }}void Show_Line(LineChart _gap){_gap.AddData(0, distance_gap);}
}

运行

修改图的坐标和平均数显示的小数点后位数。

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

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

相关文章

【机器学习】深入探讨基于实例的学习及K-最近邻算法

深入探讨基于实例的学习及K-最近邻算法 在机器学习的众多策略中&#xff0c;基于实例的学习方法因其简单性和高效性而备受关注。这种方法的核心理念在于利用已知的数据实例来预测新数据的标签或属性。本文将深入探讨其中的两个重要概念&#xff1a;最近邻算法和K-最近邻算法&a…

免费设计原型图必备!这9款工具值得一试!

在当今快速发展的数字世界中&#xff0c;原型图设计工具无疑是设计师必不可少的武器。高效易用的工具不仅能使设计过程更加顺畅&#xff0c;还能有效提高设计质量。在这个竞争激烈的市场上&#xff0c;有许多优秀的免费原型图设计工具可供选择。以下是我们选择的9种免费原型图设…

STM32/GD32的以太网DMA描述符

继续梳理以太网的DMA描述符。 以太网DAM描述符的结构 有两种结构&#xff0c;链式结构和环形结构。 常用的是链式结构。 标准库中&#xff0c;关于DMA描述符的数据结构 以gd32f4xx_enet.c为例。 先说发送描述符。 系统分配了5个发送描述符。每个描述符对应的缓冲区大小为152…

C++ 多线程和互斥锁(一文搞定)

实验 简介&#xff1a;我们启动并行启动两个线程&#xff0c;但设置一个全局互斥锁&#xff0c;在两个线程中等待并占用互斥锁&#xff0c;然后输出日志。 代码 #include <iostream> #include <thread> /* C 多线程库 */ #include <mutex> …

Blenderproc渲染6D位姿估计数据集

https://github.com/DLR-RM/BlenderProc/tree/main/examples/datasets/bop_challenge 目录 1.3d渲染原理 2.步骤 3.代码 生成mask_all 4.难例渲染 物体高反光​编辑​编辑强弱灯光(明暗)​编辑​编辑​编辑物体xyz范围缩小 物体重复 干扰物&#xff08;自定义干扰物遮…

DP1363F高度集成的非接触读写芯片 13.56M NFC/RFID

DP1363F高度集成的非接触读写芯片 13.56M NFC/RFID读卡器芯片 兼容替代CLRC663 DP1363F是一款高度集成的非接触读写芯片&#xff0c;集强大的多协议支持、最高射频输出功率&#xff0c;以及突破性技术低功耗卡片检测等优势于一身&#xff0c;满足市场对更高集成度、更小外壳和互…

Coursera自然语言处理专项课程03:Natural Language Processing with Sequence Models笔记 Week01

Natural Language Processing with Sequence Models Course Certificate 本文是https://www.coursera.org/learn/sequence-models-in-nlp 这门课程的学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。 文章目录 Natural Language Processing with Sequence ModelsWeek 01…

docker:在ubuntu中运行docker容器

前言 1 本笔记本电脑运行的ubuntu20.04系统 2 docker运行在ubuntu20.04系统 3 docker镜像使用的是ubuntu18.04&#xff0c;这样拉的 docker pull ubuntu:18.04 4 docker容器中运行的是ubuntu18.04的系统&#xff0c;嗯就是严谨 5 这纯粹是学习笔记&#xff0c;实际上没啥价值。…

经纬恒润AUTOSAR产品成功适配芯来RISC-V车规内核

近日&#xff0c;经纬恒润AUTOSAR基础软件产品INTEWORK-EAS&#xff08;ECU AUTOSAR Software&#xff0c;以下简称EAS&#xff09;在芯来提供的HP060开发板上成功适配芯来科技的RISC-V处理器NA内核&#xff0c;双方携手打造了具备灵活、可靠、高性能、强安全性的解决方案。这极…

【分布式】——CAPBASE理论

CAP&BASE理论 ⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记链接&#x1f449;https://github.com/A-BigTree/tree-learning-notes ⭐⭐⭐⭐⭐⭐ Spring专栏&#x1f449;https://blog.csdn.net/weixin_53580595/category_12279588.html Sprin…

STM32使用USART发送数据包指令点亮板载LED灯

电路连接&#xff1a; 连接显示屏模块&#xff0c;显示屏的SCL在B10&#xff0c;SDA在B11。 程序目的&#xff1a; 发送LED_ON指令打开板载LED灯&#xff0c;发送LED_OFF关闭板载LED灯&#xff0c;与上一个博客不同&#xff0c;这个实际上是实现串口收发文本数据包。 …

ES学习日记(一)-------单节点安装启动

基于ES7.4.1编写,其实一开始用的最新的8.1,但是问题太多了!!!!不稳定,降到7.4 下载好的安装包上传到服务器或虚拟机,创建ES目录,命令mkdir -p /路径xxxx 复制安装包到指定路径并解压: tar zxvf elasticsearch-8.1.0-linux-x86_64.tar.gz -C /usr/local/es/ 进入bin目录安装,命…

边缘计算盒子 | 什么是边缘计算盒子?选型要看哪些参数?

边缘计算(Edge Computing)是一种分布式计算范式&#xff0c;它将计算资源和数据存储位于离网络核心节点较近的地方&#xff0c;以降低延迟、提高传输速度和数据安全性。通常可以把边缘计算盒子(Edge Computing Box)理解成一种集成了边缘计算功能的硬件设备&#xff0c;通常部署…

揭秘’在家答答题,无需经验、无论男女、单号轻松日产200+的一个玩法

项目简介 公众号&#xff1a;老A程序站 这个项目是人人可参与的&#xff0c;无需支付任何费用&#xff0c;只需投入时间即可。每天的任务主要是回答问题。 项目 地 址 &#xff1a; laoa1.cn/1457.html 如果遇到不会的问题&#xff0c;可以直接使用百度进行搜索。我们通过…

NEO 学习之 MLE(最大似然估计)

文章目录 简单题目MLE 在不同的分布的运用正态分布指数分布均匀分布泊松分布 简单题目 此题问的是求丢色子&#xff0c;求得到偶数点的概率 求两次都得到硬币的背面的概率 拿球问题 符合的点数是 1,5,6 MLE 在不同的分布的运用 正态分布 对于给定的数据集 {1, 3, 4, 6, 7}&am…

Autodesk Maya 2025---智能建模与动画创新,重塑创意工作流程

Autodesk Maya 2025是一款顶尖的三维动画软件&#xff0c;广泛应用于影视广告、角色动画、电影特技等领域。新版本在功能上进行了全面升级&#xff0c;新增了对Apple芯片的支持&#xff0c;建模、绑定和角色动画等方面的功能也更加出色。 在功能特色方面&#xff0c;Maya 2025…

深度学习每周学习总结P3(天气识别)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 数据链接 提取码&#xff1a;o3ix 目录 0. 总结1. 数据导入部分数据导入部分代码详解&#xff1a;a. 数据读取部分a.1 提问&#xff1a;关…

【Hello,PyQt】控件拖拽

在 PyQt 中实现控件拖拽功能的详细介绍 拖拽功能是现代用户界面设计中常见的交互方式之一&#xff0c;它可以提高用户体验&#xff0c;增加操作的直观性。在 PyQt 中&#xff0c;我们可以很容易地实现控件之间的拖拽功能。本文将介绍如何在 PyQt 中实现控件的拖拽功能。 如何实…

达梦数据库新手上路排坑

数据库安装 这个没啥说的&#xff0c;按照官网教程操作&#xff0c;我使用的是docker进行安装 下载文件docker文件 官方下载地址- load -i dm8****.tar (注意修改为当前下载的文件)达梦官方文档注意修改为当前版本 docker run -d -p 5236:5236 --name dm8 --privilegedtrue -…

第十届蓝桥杯大赛个人赛省赛(软件类)真题- CC++ 研究生组-最短路

6 肉眼观察&#xff0c; 看起来短的几条路对比下来是6~ #include <iostream> using namespace std; int main() {printf("6");return 0; }