在unity工程中新建一个脚本,脚本中的代码如下:
using System; using System.Collections; using System.Collections.Generic; using System.IO.Ports; using System.Threading; using UnityEngine; using UnityEngine.UI; public class connect : MonoBehaviour { public SerialPort COM = new SerialPort();//初始化serialport类的新实例,用于获取串行端口资源 public Text PoorSignal; public Text Attention; public Text Meditation; void Start() { COM.BaudRate = 9600;//波特率 COM.PortName = "COM3";//端口名 COM.DataBits = 8;//数据位 COM.ReadTimeout = 5000; COM.Open();//打开一个新的串行端口连接 StartCoroutine(DataReceived()); // COM.DataReceived += new SerialDataReceivedEventHandler(COM_DataReceived); } IEnumerator DataReceived() { while(true) { Rec(); yield return new WaitForSeconds(0.5f); } } /// <summary> /// 脑电的获取 /// </summary> private void Rec() { try { int n = COM.BytesToRead; byte[] numArray = new byte[this.COM.BytesToRead]; COM.Read(numArray, 0, n); if (numArray.Length == 0) return; else { Debug.Log("numarry长度是:" + numArray.Length); } if (numArray[0] == (byte)170 && numArray[1] == (byte)170) { Debug.Log("进入"); if(numArray.Length==36) { int num = 0; num = Convert.ToInt32(numArray[4]); Debug.Log("信号值是:" + num); PoorSignal.text= num.ToString(); int attention = 0; attention = Convert.ToInt32(numArray[32]); Debug.Log("专注值是:" + attention); Attention.text = attention.ToString(); int meditation = 0; meditation= Convert.ToInt32(numArray[34]); Debug.Log("放松值是:" + meditation); Meditation.text = meditation.ToString(); else { return; } } COM.DiscardInBuffer(); } catch (Exception ex) { throw ex; } } public void ClosePort() { try { COM.Close(); } catch(Exception ex) { Debug.Log(ex.Message); } } private void OnApplicationQuit() { ClosePort(); } }
运行时会出现的问题:
1.命名空间的引入:
在下面界面中选择程序包,安装using System.IO.Ports程序包。
2.unity中需要进行相关的设置:
将Api Compatibility Level设置为4.0,相对应的命名空间才能正确引入。
完成以上步骤,就可以从脑电设备中获取数据,并在unity中进行使用开发。