IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> unity串口通讯 -> 正文阅读

[嵌入式]unity串口通讯

关于unity使用串口的一些浅显了解


一、串口是什么?

串行接口(Serial port)又称“串口”,也称串行通信接口(通常指COM接口),是采用串行通信方式的扩展接口。常见的有一般电脑应用的RS-232(使用 25 针或 9 针连接器)和工业电脑应用的半双工RS-485与全双工RS-422。

以我的经历来看,比较多的接触到的连接方式有rs232线、rs485线、usb转串口。一般串口服务器提供rs232和rs485两种连接方式、如果电脑直连设备的话就用usb转串口。

二、上代码

1.引入命名空间

using System.IO.Ports;

常用方法:

Close:关闭端口连接,将IsOpen属性设置false,并释放内部Stream对象

GetPortNames:获取当前计算机的串行端口名称数组

Open:打开一个新的串行端口连接

Read:从SerialPort输入缓冲区中读取
(1)接收字符串(string):port.ReadLine()
数据接收可能错误,数据丢失,数据接收不到
(2)接收字节数组(byte[]):port.Read()
接收数据断层,会分两次接收完整数据
(3)接收单个字节(byte):port.ReadByte()

将接收到的数据进行组合

Write:将数据写入串行端口输出缓冲区

    private string portName= "\\\\.\\COM54";//串口号,一般大于10就要这样写
    public int baudRate = 9600;//波特率,不同设备波特率不一样
    public Parity parity = Parity.None;//校验位
    public int dataBits = 8;//数据位
    public StopBits stopBits = StopBits.One;//停止位
    SerialPort sp = null;
     public void OpenPort()//打开串口
    {
        sp = new SerialPort(portName, baudRate, parity, dataBits, stopBits);
        sp.ReadTimeout = 400;
        try
        {
        if!sp.IsOpen)
            sp.Open();
        }
        catch (Exception ex)
        { 
            Debug.Log(ex.Message);
        }
    }
 public void ClosePort()//关闭串口
    {
        try
        {
        if(sp.IsOpen)
            sp.Close();
        }
        catch (Exception ex)
        {
            Debug.Log(ex.Message);
        }
    }
    
    void OnApplicationQuit()//程序关闭一定要关闭串口
    {
        ClosePort();
    }

#region 发送数据
     public void WriteData(byte data)
     {
         if (sp.IsOpen)
        {
            sp.Write(data,0,data.length);
        }
     }
#endregion

 #region 接收数据
     void DataReceiveFunction()
     {
        #region 按字节数组发送处理信息,信息缺失
         byte[] buffer = new byte[1024];
         int bytes = 0;
         while (true)
         {
             if (sp != null && sp.IsOpen)
            {
                try
                {
                    bytes = sp.Read(buffer, 0, buffer.Length);//接收字节
                    if (bytes == 0)
                        {
                         continue;
                     }
                     else
                     {
                         string strbytes = Encoding.Default.GetString(buffer);
                         Debug.Log(strbytes);
                     }
                 }
                 catch (Exception ex)
                {
                     if (ex.GetType() != typeof(ThreadAbortException))
                     {
                     }
                 }
             }
             Thread.Sleep(10);//这行是设定读取间隔,可以根据需要不使用
         }
         #endregion
     }
     #endregion

2.注意事项

将Unity3D的API平台切换成.NET2.0,否则Unity编写SerialPort类会报错。
在这里插入图片描述
一般发送串口信息,使用byte数组的方式比较稳妥(个人认为)

还有就是一般以16进制形式发送比较稳妥(个人认为)

Byte[] temple = { 0xA5, 0x06, 0xFF, 0xA0, 0xFF, 0x00, 0x00, 0xEE, 0x5A };
或者

string _hex16String="a5 08 ff a1 01 01 01 00 ff ee 5a"

public byte[] Hex16StringToHex16Byte(string _hex16String)
    {
        _hex16String = _hex16String.Replace(" ", "");
        if (_hex16String.Length / 2 == 0)
        {
            _hex16String += " ";
        }
        
        byte[] buffer = new byte[_hex16String.Length / 2];
        for (int i = 0; i < buffer.Length; i++)
        {
            
            buffer[i] = Convert.ToByte((_hex16String.Substring(i * 2, 2)), 16);
        }
    
        return buffer;
    }

总结

这里我总结的是,主要用于做过的控制rgb调色模块,串口继电器模块,拉力测试读取,如有偏颇请各位大佬指正。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-03 12:04:50  更:2021-09-03 12:05:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 8:42:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计