Unity串⼝通信的简单使⽤教程
已经很久没有更新博客了,因为⼯作忙的原因,也因为⾃⼰忙了⼀些其他的事情…不说了,这篇博客简单介绍⼀下串⼝通信的⽤法,简单,但是⽤处很⼤,可以使⽤Unity和⼀些硬件进⾏交互,⾔归正传,开始。
1.新建⼯程,打开Player Setting,将Configuration中的Api Compatibility level设置为.Net
2.0,貌似.Net Subset不包含串⼝通信的功能,具体需查下Unity api。
2.新建⼀个空物体,并且创建⼀个PortManager脚本,将此脚本挂在空物体上。
3.打开PortManager,输⼊以下代码。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO.Ports;
using System;
public class PortManager : MonoBehaviour
{
string getPortName;
int baudRate =9600;
private Parity parity = Parity.None;
private int dataBits =8;
private StopBits stopBits = StopBits.One;
SerialPort sp = null;
private string _data;
private string testString;
// Use this for initialization
void Start ()
{
getPortName ="COM3";
testString ="b";
OpenPort(getPortName);
StartCoroutine(DataReceiveFunction());
}
/// <summary>
/
// 串⼝信号控制
/// </summary>
private void PortSignalControl()
{
if(_data == System.Text.Encoding.ASCII.GetBytes(testString)[0].ToString()) {
Debug.Log("收到串⼝信号"+ testString);
}
}
//打开串⼝
public void OpenPort(string DefaultPortName)
{
sp = new SerialPort(DefaultPortName, baudRate, parity, dataBits, stopBits); sp.ReadTimeout =10;
try
{
if(!sp.IsOpen)
{
sp.Open();
}
}
catch (Exception ex)
{
Debug.Log(ex.Message);
}
}
//关闭串⼝
public void ClosePort()
{
try
{
sp.Close();
}
catch (Exception ex)
{
Debug.Log(ex.Message);
}
}
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);
_data = dataBytes[0].ToString();
print(_data);
PortSignalControl();
//串⼝数据已经被存⼊dataBytes中
}
catch (Exception ex)
{
}
}
yield return new WaitForSeconds(Time.deltaTime);
writeline教程}
}
//发送⼀个字节
public void SendSerialPortData(string data)
{
if(sp.IsOpen)
{
sp.WriteLine(data);
}
}
/// <summary>
/// 发送⼀个字符串
/// </summary>
public void SendString()
{
SendSerialPortData("a");
}
private void OnApplicationQuit()
{
ClosePort();
}
private void OnDisable()
{
ClosePort();
}
}
4.在场景中添加⼀个按钮,将PortManager⾥的SendString⽅法拖到此按钮中。
5.打开串⼝助⼿,进⾏如下设置,并且打开串⼝。
6.在串⼝助⼿的发送缓冲区输⼊a,点击发送数据按钮。
7.Unity已经打印出了数
据,说明已经接收到了串⼝助⼿发来的数据。
8.点击Unity场景⾥的按钮。
9.串⼝数据已经得到了数据,如图所⽰。
10.⼩结:这个是最简单的串⼝调⽤Demo,基本写出了串⼝通信的基本⽅法,可以在此基础上写更加复杂的逻辑。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论