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

news/2024/4/27 16:08:27/文章来源:https://blog.csdn.net/moonlightpeng/article/details/137119239

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://www.luyixian.cn/news_show_1026601.aspx

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

相关文章

C语言中常用的文件操作

本文将介绍常用的关于文件操作函数&#xff0c;如fopen,fclose,fread,fwrite,feek,ftell,rewind以及feof和ferror等文件操作操作函数&#xff0c;还介绍一些用于所有输入输出流的函数如fgetc,fputc,fgets,fputs,fprintf,fscanf等函数&#xff0c;还介绍了sscanf,sprintf函数,fe…

主流电商平台淘宝/1688/京东电商数据实时采集监测|电商API接口接入

电商大数据平台基于网络主流电商平台淘宝/1688/京东电商数据进行搭建&#xff0c;全面监测了包含淘宝、京东、苏宁、美团、大众点评等共计100余个主流电商交易平台&#xff0c;并凭借多年的电子商务数据分析挖掘经验积累形成的电商数据清洗体系和挖掘模型&#xff0c;能高效完成…

DashVector - 阿里云向量检索服务

DashVector 文章目录 DashVector一、关于 DashVector二、使用 DashVector 前提准备1、创建Cluster&#xff1a;2、获得API-KEY3、安装最新版SDK 三、快速使用 DashVector1. 创建Client2. 创建Collection3、插入Doc4、相似性检索5、删除Doc6. 查看Collection统计信息7. 删除Coll…

Flask 与小程序 的图片数据交互 过程及探讨研究学习

今天不知道怎么的&#xff0c;之前拿编程浪子地作品抄过来粘上用好好的&#xff0c;昨天开始照片突的就不显示了。 今天不妨再耐味地细细探究一下微信小程序wxml 和flask服务器端是怎么jpg图片数据交互的。 mina/pages/food/index.wxml <!--index.wxml--> <!--1px …

Python程序设计 循环结构(二)

1.斐波那契数列 编写一个能计算斐波那契数列中第x个数的小程序。斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又称黄金分割数列、 因数学家莱昂纳多斐波那契&#xff08;Leonardoda Fibonacci&#xff09;以兔子繁殖为例子而引入&#xff0c;故又称为…

日本EPSON 爱普生HUD汽车抬头显示系统芯片

目前HUD产品在新车上的配装率逐年上升&#xff0c;预计在2025年将达到30%。那么在介绍爱普生HUD整合方案之前&#xff0c;让我们先了解一下什么叫HUD。 HUD&#xff08;Head Up Display&#xff09;中文叫抬头显示系统&#xff0c;又被叫做平行显示系统。早被应用在飞机辅助…

Linux系统——硬件命令

目录 一.网卡带宽 1.查看网卡速率——ethtool 网卡名 2.查看mac地址——ethtool -P 网卡名 二、内存相关 1.显示系统中内存使用情况——free -h 2.显示内存模块的详细信息——dmidecode -t memory 三、CPU相关 1.查看CPU架构信息——lscpu 2.性能模式 四、其他硬件命…

C语言例4-37:输出10~100的全部素数

素数是指除1和它本身之外不能被其他任何整数整除。 自己思考的基础代码如下&#xff1a; //输出10~100的全部素数 //素数是指除1和它本身之外不能被其他任何整数整除 //自己思考的基础代码 #include<stdio.h> int main(void) {int n10,i2,m,counter0; // n10~100;for(n…

如何用Flask中的Blueprints构建大型Web应用

本文分享自华为云社区《构建大型Web应用Flask中的Blueprints指南》&#xff0c;作者&#xff1a; 柠檬味拥抱。 什么是Blueprints&#xff1f; 什么是Blueprints&#xff1f; Blueprints是Flask中的一种模式&#xff0c;用于将应用程序分解为可重用的模块。每个蓝图实际上是…

IDEA | 资源文件中文乱码问题解决

问题 IDEA打开资源文件&#xff0c;显示乱码问题。 解决方案 1、电脑是mac&#xff0c;点击IDEA->【Preferences】->【Editor】->【File Encodings】 2、选择【Properties Files】中的UTF-8&#xff0c;并勾选Transparent native-to-ascii conversion。 3、最后点击…

蓝桥杯算法赛(二进制王国)

问题描述 二进制王国是一个非常特殊的国家&#xff0c;因为该国家的居民仅由 0 和 1 组成。 在这个国家中&#xff0c;每个家庭都可以用一个由 0 和 1 组成的字符串 S 来表示&#xff0c;例如 101、 000、 111 等。 现在&#xff0c;国王选了出 N 户家庭参加邻国的庆典…

Karmada 管理有状态应用 Xline 的早期探索与实践

背景与动机 目前随着云原生技术和云市场的不断成熟&#xff0c;越来越多的 IT 厂商开始投入到跨云多集群的怀抱当中。以下是 flexera 在 2023 年中关于云原生市场对多云多集群管理的接受程度的调查报告&#xff08;http://info.flexera.com&#xff09; 从 flexera 的报告中可…

python_1

要求&#xff1a; 代码&#xff1a; # 先将分钟数转化成年数&#xff0c;再将余数做为天数 minute float(input("请输入分钟数&#xff1a;")) year_1 (minute / 60 / 24) // 365 day_1 (minute / 60 / 24) % 365 now f"{minute}分钟{year_1}年{day_1}天&q…

Polkadot、Kusama 和六大领先平行链现已上线 Dune 数据分析平台!

3 月 19 日对于波卡社区来说是一个关键性的时刻&#xff0c;因为 Polkadot 数据首次在领先的区块链数据开源分析平台 Dune 上可以被访问和使用。这是 Colorful Notion 和 Dune 之间战略合作的结果&#xff0c;这次的合作与集成将使 Polkadot 生态系统的可见性大幅增强&#xff…

力扣面试150 阶乘后的零 数论 找规律 质因数

Problem: 172. 阶乘后的零 思路 &#x1f468;‍&#x1f3eb; 大佬神解 一个数末尾有多少个 0 &#xff0c;取决于这个数 有多少个因子 10而 10 可以分解出质因子 2 和 5而在阶乘种&#xff0c;2 的倍数会比 5 的倍数多&#xff0c;换而言之&#xff0c;每一个 5 都会找到一…

HTML 常用标签总结

本篇文章总结了一些我在学习html时所记录的标签&#xff0c;虽然总结并不是非常全面&#xff0c;但都是一些比较常用的。 html元素标签 首先一个html界面是由无数个元素标签组成的&#xff0c;每个元素具有它的属性 1.input 单行文本框 标签type属性——text <input ty…

机器学习周记(第三十一周:文献阅读-GGNN)2024.3.18~2024.3.24

目录 摘要 ABSTRACT 1 论文信息 1.1 论文标题 1.2 论文模型 1.2.1 数据处理 1.2.2 门控图神经网络 1.2.3 掩码操作 2 相关知识 2.1 图神经网络&#xff08;GNN&#xff09; 2.2 图卷积神经网络&#xff08;GCN&#xff09; 3 相关代码 摘要 本周阅读了一篇利用图神…

IDEA2023版本整合SpringBoot热部署

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 开发环境篇 ✨特色专栏&#xff1a; M…

波奇学Linux:自定义协议和序列和反序列化

TCP是面向字节流的如何保证&#xff0c;读取上来的数据是一个"完整"的报文 tcp传输控制协议&#xff1a;什么时候发&#xff0c;发多少&#xff0c;出错怎么办 read和write都是从用户到内核空间的拷贝&#xff0c;数据不一定传输到另一个台主机的缓冲区&#xff0c;…

精品凉拌菜系列热卤系列课程

这一系列课程涵盖精美凉拌菜和美味热卤菜的制作技巧。学员将学习如何选材、调味和烹饪&#xff0c;打造口感丰富、色香俱佳的菜肴。通过实践训练&#xff0c;掌握独特的烹饪技能&#xff0c;为家庭聚餐或职业厨艺提升增添亮点。 课程大小&#xff1a;6.6G 课程下载&#xff1…