登录
原 Unity串口通信 16进制 SerialPorts 设置COM口
Rick__阅读数:4422018-11-05
简介: 串口通信,实时传输,设置COM口,打包程序可设置COM口
1. 新建Unity工程,在场景中建立两个GameObject,分别命名:SerialPortsDataCtl(直接拖拽或查找DataCtl,代码中可自行修改)
2.新建两个C#脚本,分别命名:SerialPortScript;DataCtlScript,并分别挂载到上述两个游戏物体
3.在Assets文件夹中新建文件夹命名:streamingAssets;在streamingAssets文件夹中新建Text文件命名:PortNameConfig;
在PortNameConfig.txt中写入串口名字,例COM7
4.SerialPortScript:
unity文件保存发给别人步骤如下:1、在Unity这里找到文件的发布设置。能够按下快捷键快速发布。
2、就可以在这里设置发布选项,即可发布。按住想要保存的东西,然后屏幕会有对话框,然后点击保存即可,这样就可以转发了。unity3D在project面板下选中需要导出的资源右击,有导出package的选项,可以生成unitypackage后缀的资源包。
通过System.IO.Ports来实现
using UnityEngineusing System.Collections
using System.IO.Ports
using System
using System.IO
using System.Collections.Generic
public class PortControl : MonoBehaviour
{
public string portName = "COM3"
public int baudRate = 57600
public Parity parity = Parity.None
public int dataBits = 8
public StopBits stopBits = StopBits.One
SerialPort sp = null
void Start()
{
OpenPort()
StartCoroutine(DataReceiveFunction())
}
//打开串口
public void OpenPort()
{
sp = new SerialPort(portName, baudRate, parity, dataBits, stopBits)
sp.ReadTimeout = 400
try
{
sp.Open()
}
catch(Exception ex)
{
Debug.Log(ex.Message)
}
}
//关闭串口
public void ClosePort()
{
try
{
sp.Close()
}
catch(Exception ex)
{
Debug.Log(ex.Message)
}
}
/*
若串口数据速度慢,数量小,可以在Update函数中使用sp.ReadByte等函数,该协程可以不用调用
若串口数据速度较快,数量较多,就调用该协程(该程序就是这一种,在Start函数中已经被调用)
若串口数据速度非常快,数量非常多,建议使用Thread
*/
IEnumerator DataReceiveFunction()
{
byte[] dataBytes = new byte[128]//存储数据
int bytesToRead = 0//记录获取的数据长度
while(true)
{
if(sp != null && sp.IsOpen)
{
try
{
//通过read函数获取串口数据
bytesToRead = sp.Read(dataBytes, 0, dataBytes.Length)
//串口数据已经被存入dataBytes中
//往下进行自己的数据处理
//比如将你的数据显示出来,可以利用guiText.text = ....之类
}
catch(Exception ex)
{
Debug.Log(ex.Message)
}
}
yield return new WaitForSeconds(Time.deltaTime)
}
}
void OnApplicationQuit()
{
ClosePort ()
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)