Unity 串口通信发送与接收数据

三步教会你 Unity串口通讯 三步教会你 Unity串口通讯1、串口简介二、使用C#和Unity进行串口编程三、编程遇到的问题四、源代码分享五、其他问题 由于刚换了工作,新工作是搞串口方面的,这几天做了几个项目,期间从网上也没有看到讲的很通透的文章。 所以我今天给需要了解串口或者对串口感兴趣却无从下手的小伙伴讲讲,什么是串口?,如何进行串口通讯?。 1、串口简介 串行接口(串口)通常指COM接口,是采用串行通信方式的扩展接口。串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用 阅读详情

数据发送

串口通信发送数据时需要将数据转换为十六进制内容

using UnityEngine;
using System;
using System.IO.Ports;

public class spSend : MonoBehaviour
{
  
    public SerialPort sp;  //串口名字

    static public byte[] strSend = new byte[3];
    void Start()
    {
        sp = new SerialPort("COM8", 9600, Parity.None, 8, StopBits.One);
        //串口初始化
        try
        {
            sp.Open();
            Debug.Log("成功打开");
        }
        catch (Exception ex)
        {
            Debug.Log(ex.Message);
        }
    }

    //关闭串口
    void OnApplicationQuit()
    {
        sp.Close();
        Application.Quit();
    }

    //发送
    public void SendData(byte[] data)
    {
        if (sp.IsOpen)
        {            
            sp.Write(data, 0, 3);
        }       
    }
}

发送数据使用示例:

           spSend.strSend = new byte[3] { 0X43, 0X50, 0X31 };
           COM.GetComponent<spSend>().SendData(spSend.strSend);

数据接收

using UnityEngine;
using UnityEngine.UI;
using System;
using System.Threading;
using System.Collections.Generic;
using System.IO.Ports;

public class spReceive : MonoBehaviour
{
    public SerialPort sp;  //串口名字
    private Thread recvThread;  //接收线程
    //private Thread dealThread;	//处理线程

    Queue<byte> queueDataPool = new Queue<byte>();  //队列数据池

    private byte[] receiveData = new byte[3];

    public bool isStartThread; //控制FixedUpd里面的两个线程是否调用(当准备调用串口的Close方法时设置为false)

    void Start()
    {
        isStartThread = true;

        sp = new SerialPort("COM9", 38400, Parity.None, 8, StopBits.One);
        //串口初始化
        try
        {
            sp.Open();
            Debug.Log("成功打开");
        }
        catch (Exception ex)
        {
            Debug.Log(ex.Message);
        }

        recvThread = new Thread(new ThreadStart(ReceiveData));
        recvThread.Start();
        //dealThread = new Thread(new ThreadStart(DealData));
        //dealThread.Start();
    }

    void OnApplicationQuit()
    {
        isStartThread = false;
        sp.Close();
        Application.Quit();
    }

    void Update()
    {
        DealData();
    }

    //接收
    private void ReceiveData()
    {
        while (isStartThread)
        {
            //Debug.Log(sp.PortName);
            if (sp != null && sp.IsOpen)
            {
                try
                {
                    byte[] buf = new byte[1];

                    sp.Read(buf, 0, 1);
                    if (buf.Length == 0)
                    {
                        return;
                    }
                    if (buf != null)
                    {
                        queueDataPool.Enqueue(buf[0]);
                        Debug.Log(buf[0]);
                    }
                }
                catch (Exception e)
                {
                    if (e.GetType() != typeof(ThreadAbortException))
                    {
                        Debug.Log(e.Message);
                    }
                }
            }
        }
    }

    //处理
    private void DealData()
    {     
    //使用队列处理接收到的数据
        if ( queueDataPool.Count == 3 ) {
            receiveData[0] = queueDataPool.Dequeue();
            receiveData[1] = queueDataPool.Dequeue();
            receiveData[2] = queueDataPool.Dequeue();   
             Debug.Log(string.Format("{0},{1},{2}", receiveData[0], receiveData[1], receiveData[2]));       
        }      
    }
}

为避免接收和发送时数据丢失,使用两个COM端口分别传输,本例中数据发送使用COM8口,数据接收使用COM9口。

Unity串口通信、接受和发送数据、C# 1、串口简介串行接口(串口)通常指COM接口,是采用串行通信方式的扩展接口。串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。特别适用于远距离通信。查看串口:右键 我的电脑-管理-设备管理器-端口选择一个端口,双击查看属性。这里通过串口属性,可以知道以下数据:波特率:这是一个衡量符号传输速率的参数。数据位:这是衡量通信中实际数据位的参数。停止位:用于表示单个包的最后一位。 阅读详情

相关推荐

Unity使用串口进行通信(SerialPort )

首先Unity进行串口通信的话就先得知道SerialPort 怎么用具体怎么使用可以去看Unity的官方文档,首先我们需要New一个SerialPort 的对象出来,这就需要知道连接电脑的COM接口的名字例如COM1 COM2等,波特率 校验码,数据位以及停止位代码大概就是这个样子。temp代表的就是传输的通信数据,0 代表的就是从第一位开始,8就是你还上面定义的数据位是多少就填多少,切记使用完记得进行关闭窜口。接着就可以进行通信了根据自己设置的对象。变量定义完成之后就可以打开串口。

xie1730240501的博客 1385

在Unity环境中进行串口通讯

在Unity中读取串口数据

R3333355726856的博客 4640

⭐ 单片机 × Unity 串口通信:从原理到实战,玩转跨界开发!

单片机 × Unity

惊鸿醉的博客 1486

Unity串口通信教程:基础知识和实践指南

Unity在游戏开发和实时应用中广泛使用。除了图形渲染和游戏逻辑,Unity还能与外部硬件设备进行串口通信。本文将介绍如何在Unity中实现串口通信,包括基础设置、数据读写、数据校验和异或操作。

weixin_47420447的博客 2107

Unity使用安卓串口附教程

unity 安卓串口接发代码:unity环境在android手机调用手机串口,该解压包内附详细图文教程,按教程来操作即可。

基于unity3D串口通信程序,可以实现发送接收。C#编写。

unity3D串口通信程序,可以实现发送接收。脚本语言是C#编写。基本满足通信要求。

Unity串口通信的简单使用教程

已经很久没有更新博客了,因为工作忙的原因,也因为自己忙了一些其他的事情…不说了,这篇博客简单介绍一下串口通信的用法,简单,但是用处很大,可以使用Unity和一些硬件进行交互,言归正传,开始。 1.新建工程,打开Player Setting,将Configuration中的Api Compatibility level设置为.Net2.0,貌似.Net Subset不包含串口通信的功能,具体需查下U...

波波斯维奇 7456

STM32G474+Simulink+HIL硬件在环仿真

硬件:STM32G474RET6(官方的NUCLEO板)软件:STM32Cube_FW_G4 V1.6.1芯片包;KeilMATLAB 2023B(本文已成功)STM32嵌入式支持包。

qq_44701116的博客 1779

Unity串口通信教程

这是我本人一直在使用的串口脚本,是我封装的好的,可以在Unity里面完成串口通信功能,我觉得有东西就应该分享出来,这里仅供大家学习使用,接下来我给大家讲一下如何使用串口通信功能如何能在Unity里面接受数据,包括发送数据和接受数据。7.运行Unity后通过串口助手发送数据:注意我这里是接收的16进制的数据,这个根据你的需求可以自行更改例如转换成别的。链接:https://pan.baidu.com/s/1hwtma4oNAZcGztev-HlPdQ。--来自百度网盘超级会员V2的分享。

m0_73226933的博客 1241

Python+ArcGIS实战:5步搞定土壤类型预测(附随机森林模型配置技巧)

本文详细介绍了如何结合Python与ArcGIS,利用随机森林模型进行土壤类型预测。通过5个核心步骤——数据预处理、样本创建、模型构建、空间预测与精度验证,构建了一套自动化、高精度的空间预测工作流,并提供了关键的模型配置与调参技巧,助力GIS开发者高效完成土壤制图任务。

weixin_29227585的博客 396

城市NOA加速落地,BEV+Transformer引领自动驾驶感知新范式

数据闭环能力的建立,不仅依赖于数据规模,还依赖于数据的筛选、回传、标注、训练、验证与再部署,数据之于自动驾驶的价值再被印证的同时,也将推动自动驾驶迈向更为高阶的智能化时代。6月份,理想汽车向早鸟用户推送了首个不依赖高精地图的城市NOA。而特斯拉推出的基于BEV+Transformer的自动驾驶感知路线,可将2D图像转化为BEV鸟瞰图视角下的3D图像,并基于更庞大、更复杂、参数更多的感知算法模块,利用Transformer的注意力机制,将各个传感器统一到同一个连续的四维(三维空间+一维时间)时空中。

manfukeji的博客 1397

Unity串口通信 遇到的问题与解决

Unity串口通信 10月25日上午学习

Yafii的博客 2380

SAR ADC设计——SAR Logic原理

SAR ADC设计——SAR Logic原理 参考:集成电路设计实践 SAR ADC 清华大学 李福乐 文章目录SAR ADC设计——SAR Logic原理一. Overview二. TSPC(True Single Phase Clock)三. SC_Gen(Sequential Control Generator)四. LATCH_Dynamic五. 时序控制逻辑总结六. SW产生七. DO产生八. GT产生九. SAR Logic模块总结 一. Overview 输入:CKC,CompB,SAMPL

夏风喃喃的博客 1万+

unity串口通信

使用SerialPort类需引入System.IO.Ports命名空间,引用这个命名空间必须将Project Settings –> Player –> Other settings –> Configuration –> API Compatibility Level 从 .NET standard 2.1 改成 .NET Framework。使用SerialPort类中的Open()方法开启串口,由于可能发生异常,所以放在try-catch语句中。接收数据有两种方式,一种是使用委托,一种是使用线程。

2301_80686483的博客 853

163种中草药图像数据集构建与ResNet-50迁移学习实战指南

在计算机视觉领域,高质量标注数据集是模型训练的基石,直接影响图像分类、目标检测等任务的性能。其核心原理在于为算法提供结构化的监督信号,通过深度学习模型学习从像素到语义的映射关系。构建此类数据集的技术价值在于解决了特定垂直领域(如中医药)数据稀缺的痛点,为AI技术落地提供了关键“燃料”。在应用场景上,标准化数据集广泛支撑着教学演示、算法验证和产业应用开发。本文聚焦于中草药识别这一细分领域,详细介绍了一个包含163种常见药材、经过多源聚合与清洗的图像数据集构建全过程,并提供了基于PyTorch和ResNet-5

weixin_33672400的博客 454

从 SM59 到 SPROXY,打通 ABAP 后端与 ES Repository 的代理生成链路

本文探讨了在SAP PI/PO项目中配置ABAP后端系统与ES Repository连接的关键步骤,重点解决ABAP Proxy生成时无法获取接口模型的问题。文章指出: 该配置本质是建立设计时通道,使ABAP系统能通过SPROXY访问ES Repository中的接口模型并生成代理类 配置核心是在SM59创建名为SAP_PROXY_ESR的HTTP连接(类型G),需确保: 目标路径为/rep 使用具备SAP_XI_IS_SERV_USER角色的服务账号 连接测试通过后仍需在SPROXY中验证完整功能 常见陷

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 59

Unity实现串口通信发送16进制字符

步骤一、首先开发配置文件功能,代码如下所示,完成后将其挂载到场景的物体上,在这里不再赘述: `using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO; using System;/// <summary> /// 配置文件读取 /// </summ...

unityofficial的博客 89

Codex 实战 Skills:用 Skill 自动识别并提取 PDF/图片表格数据,效率提升 10 倍

本文介绍如何构建一个多模态文件解析 Skill,用于自动识别和提取 PDF/图片中的表格数据,提升 AI 智能体处理非结构化文档的效率。文章分析了传统方法的局限性,提出分层解析架构(预处理、检测、提取推理、后处理),推荐技术栈包括 pdfplumber、OpenCV 和多模态大模型。详细说明了 Skill 的元数据定义、数据模型设计(使用 Pydantic)和核心实现流程,通过混合策略实现从复杂文档到结构化 JSON/Markdown 的转换,使 AI 代理具备"阅读"多模态文档的能力。

yueyeguzhuo的专栏 305

串口通信

首先最近制作串口通信的项目比较多所以稍微研究了下稍作整理以防忘记,希望也有大佬指正。做串口通信的首先要在菜单–edit–project setting–player 然后看inspector面板,最下面的other setting 把Api Compatibility Level 设置成。Net2..0否则无法使用using System.IO.Ports;如下图设置 之后就是上代码了usi

lexjay的博客 341

VSCode 搭建C/C++编程环境 2025新版图文安装教程(VSCode安装 + C/C++环境搭建 + 运行测试 + 背景图设置)

100%搭建成功,VSCode 搭建C++编程环境 2025新版图文安装教程(VSCode安装+C++环境搭建+运行测试+背景图设置)

Code_流苏:在代码中寻诗意,在实践中觅真知 2974

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Unity3d读写COM串口

using System; using System.Collections; using System.Collections.Generic; using System.IO.Ports; using System.Threading; using UnityEngine; using UnityEngine.UI; public class ComPortControl : Mono...

zouxin_88的专栏 3068

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【Unity】Unity读取Arduino串口再通过UDP发送

接收串口 using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO.Ports; using System; using System.Threading; using System.Text; using UnityEngine.UI; public class Arduino : MonoBehaviour { [Header("串口名")] pu

wangpuqing1997的博客 930

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【Unity3D软硬件】Unity3D与串口通信 SerialPort类完全教程

推荐阅读 优快云主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 最近,有小伙伴再整串口通信,问我有没有写好的串口代码,我一瞅我最近写的都在19年了。 比如: 2017-12-04 写的【Unity3D软硬件】Unity3D 与串口的通信程序的开发,软件硬件结合 2019-09-20 写的【Unity3D软硬件】Unity3d与串口通信程.

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 2万+

Unity串口通信

一、串口简介 串行接口(串口)通常指COM接口,是采用串行通信方式的扩展接口。串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。特别适用于远距离通信。 1、查看串口:右键我的电脑-管理-设备管理器-端口,选择一个端口,双击查看属性。 2、 串口属性:从上图中可以看到串口属性,串口通信最重要的属性...

dlx41179的博客 2362

关于unity使用串口接收数据脚本(CHATGPT版)

此外,我们可以考虑使用一个独立的线程处理串口数据读取,以避免阻塞 Update() 方法,并确保在主线程中处理Unity相关的逻辑。要改进上述脚本并使用委托(delegates)处理串口数据,我们可以引入一个委托来响应从串口接收到的数据。使用标志 dataReceived 使得数据只在主线程的 Update 方法中处理,保证与Unity相关的操作(如触发事件)都在主线程中执行。OnDataReceived 委托和事件继续保留,作为数据处理的回调机制,外部可以订阅该事件来处理串口数据,保持灵活性。

qq_17232817的博客 1505

【Unity】使用 C# SerialPort 进行串口通信

在Unity中,DataReceived事件通常不会像在常规C#项目中那样正常触发,这主要是因为Unity的运行环境与普通.NET应用有所不同,特别是在事件处理机制上存在差异。2.DataReceived事件需要在一个独立的线程中监听串口数据,但在Unity中,主线程(用于游戏逻辑和渲染)和串口数据接收线程之间的同步机制存在问题。当然,到此时我们并不能高枕无忧,还有另一个在数据交换领域普遍存在的问题需要我们解决,那就是数据的。,但接收方可能会分多次接收到,比如2次才接收完,那就可能是。

神码编程 3454
上一篇: Unity Oculus Rift手柄交互
下一篇: Unity 使用Protobuf对数据进行序列化与反序列化
爱尚游Bin
博客等级 码龄9年 86粉丝 71原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值