Unity C# 基于SerialPort类实现串口通信并循环读写

本文详细介绍了如何在Unity中使用C#脚本通过System.IO.Ports.SerialPort类进行串口通信,包括设置项目配置、脚本编写、串口初始化、线程循环读写以及串口状态管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、准备工作

1.Project Settings

2.创建脚本

二、串口初始化

三、串口开启

四、串口搜索

五、串口读写

六、创建线程循环读写

七、串口状态获取

八、完整代码


Unity本身是一个跨平台的游戏和交互式媒体开发环境,本身并不直接提供串口通信的功能。然而,Unity支持通过C#脚本语言进行扩展,可以使用C#来编写与串口通信相关的代码,通过System.IO.Ports.SerialPort类来实现。

一、准备工作

1.Project Settings

使用SerialPort类需引入System.IO.Ports命名空间,引用这个命名空间必须将Project Settings –> Player –> Other settings –> Configuration –> API Compatibility Level 从 .NET standard 2.1 改成 .NET Framework。


2.创建脚本

创建一个C# Script脚本,绑定到场景中的空物体上。

引入System.IO.Ports命名空间,创建MySerialPort类,封装串口通信的各种功能。

[System.Serializable]注解可将类中的非静态公有字段显示在Unity的Inspector面板中,便于修改和调试。

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

[System.Serializable]
public class MySerialPort
{
    
}

public class GameManager : MonoBehaviour
{
    public MySerialPort mySerialPort;
}

二、串口初始化

创建SerialPort类的对象sp。

这里对SerialPort中的一些常用属性进行说明:

PortName:串口名称,一般为COM+数字

BaudRate:波特率

Parity:校验位

DataBits:数据位长度

StopBits:停止位

ReadTimeout:读超时,若读串口时超过一定毫秒未读到,将会报错。-1表示无超时。

WriteTimeout:写超时,同上。

[System.Serializable]
public class MySerialPort
{
    private SerialPort sp;

    [SerializeField] private string defaultPortName = "COM0";
    [SerializeField] private int baudRate = 115200;
    [SerializeField] private Parity parity = Parity.None;
    [SerializeField] private int dataBits = 8;
    [SerializeField] private StopBits stopBits = StopBits.One;
    [SerializeField] private int readTimeout = 1000;
    [SerializeField] private int writeTimeout = 500;

    public void PortInit()
    {
        sp = new()
        {
            PortName = defaultPortName,
            BaudRate = baudRate,
            Parity = parity,
            DataBits = dataBits,
            StopBits = stopB
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值