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://www.mzph.cn/news/777472.shtml

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

相关文章

纯分享万岳外卖跑腿系统客户端源码uniapp目录结构示意图

系统买的是商业版&#xff0c;使用非常不错有三端uniapp开源代码&#xff0c;自从上次分享uniapp后有些网友让我分享下各个端的uniapp下的各个目录结构说明 我就截图说以下吧&#xff0c;

【Java - 框架 - Lombok】(1) 普通Java项目通过Lombok+Logback完成日志的创建使用 - 快速上手

普通Java项目通过"Lombok""Logback"完成日志的创建使用 - 快速上手&#xff1b; 步骤A 说明 创建"Maven"项目&#xff1b; 图片 步骤B 说明 添加相关依赖项&#xff1b; 图片 代码 <!-- "Lombok"依赖项--> <dependency>&…

c++核心学习--继承2

4.6.7多继承语法 4.6.8菱形继承 利用虚继承解决菱形继承的问题&#xff1a;继承之前加上关键字virtual变为虚继承

经纬恒润RTaW-Pegase:车载网络通信建模与时间特性分析工具

▎RTaW简介 RTaW-Pegase是由法国国家信息与自动化研究所&#xff08;INRIA&#xff09;旗下的RTaW公司开发的产品。它主要用于构建和优化汽车、航空航天以及工业领域的通信网络&#xff0c;包括时间敏感网络&#xff08;TSN&#xff09;、CAN&#xff08;FD&#xff0c;XL&…

react-navigation:

我的仓库地址&#xff1a;https://gitee.com/ruanjianbianjing/bj-hybrid react-navigation&#xff1a; 学习文档&#xff1a;https://reactnavigation.org 安装核心包: npm install react-navigation/native 安装react-navigation/native本身依赖的相关包: react-nativ…

开源 | 电动自行车充换电解决方案,从智能硬件到软件系统,全部自主研发

文章目录 一、产品功能部分截图1.手机端&#xff08;小程序、安卓、ios&#xff09;2.PC端 二、小程序体验账号以及PC后台体验账号1.小程序体验账号2.PC后台体验账号关注公众号获取最新资讯 三、产品简介&#xff1f;1. 充电桩云平台&#xff08;含硬件充电桩&#xff09;&…

Codeforces Round 841 (Div. 2) C. Even Subarrays

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e9, maxm 4e4 5; co…

Java学习之方法

目录 方法 方法声明格式&#xff1a; 调用方式&#xff1a; 详细说明 示例 --方法的声明及调用 语句块 练习 方法的重载(overload) 构成条件 示例 --方法重载 递归结构 缺陷 方法 方法(method)&#xff1a;一段用于完成特定功能的代码片段&#xff0c;类似于其他语…

opencv 十九 python下实现多线程间rtsp直播流的复用

在多线程拉流的任务场景中&#xff0c;有时需要将一个rtsp拉取多次&#xff0c;每重新打开一次rtsp视频流就要多消耗一次带宽&#xff0c;为此基于类的静态对象实现rtsp视频流的复用。 1、实现代码 import threading import cv2,time #接收摄影机串流影像&#xff0c;采用多线…

【嵌入式机器学习开发实战】(七)—— 政安晨:通过ARM-Linux掌握基本技能【环境准备:树莓派】

ARM-Linux是一种针对ARM架构的操作系统&#xff0c;它的设计目标是在低功耗、低成本的硬件平台上运行。ARM-Linux可以运行在多种ARM处理器上&#xff0c;包括树莓派。 树莓派&#xff08;Raspberry Pi&#xff09;是一款基于ARM架构的单板计算机&#xff0c;由英国的树莓派基金…

【系统架构师】-第12章-信息系统架构

信息系统架构(ISA)是指对某一特定内容里的信息进行统筹、规划、设计、安排等一系列有机处理的活动。 为了更好地理解信息系统架构的定义&#xff0c; 特作如下说明: (1)架构是对系统的抽象&#xff0c;它通过描述元素、元素的外部可见属性及元素之间的关系来反映这种抽象。因此…

open_clip仓库成分与模型文件model.py 介绍

起因&#xff1a; 在DA-CLIP的开源库的DA-CLIP.md中自述该项目基于CLIP 和open_clip&#xff0c;在之前的退化类型检测中 我一度以为仓库只是使用了CLIP 的源码&#xff0c; 然而当发现缺少da-clip的模型名称时&#xff0c;我发现DA-CLIP使用的完全是open_clip的代码版本&#…

16.JRE和JDK

程序员在编写代码的时候其实是需要一些环境&#xff0c;例如我们之前写的HelloWorld。我们需要的东西有JVM、核心类库、开发工具。 1、JVM&#xff08;Java Virtual Machine&#xff09;&#xff1a;Java虚拟机&#xff0c;真正运行Java程序的地方。没有虚拟机&#xff0c;代码…

C语言例4-9:格式字符s的使用例子

代码如下&#xff1a; //格式字符s的使用例子 #include<stdio.h> int main(void) {printf("%s,%5s,%-5s\n","Internet","Internet","Internet");//以三种不同格式&#xff0c;输出字符串printf("%10.5s,%-10.5s,%4.5s\n&q…

rtthread studio 基于bsp生成代码stm32l475正点原子潘多拉,以及硬件配置

1、基于bsp生成代码 rtthread studio 很强大的一个功能就是可以根据芯片或者bsp 生成驱动代码&#xff0c;而且rtthread内核 已经集成到了代码中&#xff01;&#xff01;只需要关注于如何使用硬件和设备完成我们想要的功能就可以&#xff1b; 它的官网文档也特别详细&#x…

实用有趣的宝藏网站推荐!【第二期】

上次给大家推荐了10个宝藏网站&#xff08;http://t.csdnimg.cn/qcRWY&#xff09;&#xff0c;这次我又来啦&#xff01; 话不多说&#xff0c;直接开始&#xff01; 先收藏&#xff0c;防止以后找不到了&#xff01; 整理不易&#xff0c;顺便把赞留下吧&#xff01; 1. 爱…

江苏开放大学2024年春《市政管理学050011》第一次形考作业参考答案

答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 电大搜题 多的用不完的题库&#xff0c;支持文字、图片搜题…

代码随想录算法训练营Day55 ||leetCode 583. 两个字符串的删除操作 || 72. 编辑距离

583. 两个字符串的删除操作 这道题的状态方程比上一题简单一些 初始化如下 class Solution { public:int minDistance(string word1, string word2) {vector<vector<int>> dp(word1.size() 1, vector<int>(word2.size() 1));for (int i 0; i < word1…

Linux 基础IO [缓冲区文件系统]

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;Linux知识分享⏪   &#x1f69a;代码仓库:Linux代码练习&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Linux知识   &#x1f51d; 目录 前言 一.Linux下一切皆文件 二.缓冲…

在线接口文档预言方案

在线接口文档预言方案 要求&#xff1a; ​ 支持自动生成接口文档 ​ 能够支持在线测试(http&#xff0c;websocket) ​ 对代码没有侵入性 一、目前涉及的相关技术收集 sudo apt update #更新数据 sudo apt upgrade #更新软件 sudo apt install openssh-server #下载安装…