我试图在Arduino和Unity 3D之间建立最简单的USB通信:从Arduino发送几个字节,然后从Unity读取它们。
我使用旧的MBP,Unity 4.6.6和Arduino Uno与Arduino 1.0.6。
Arduino的:
void setup() {
Serial.begin(9600);
}
void loop() {
int val=45;
Serial.write(val);
delay(10);
}
统一:
using UnityEngine;
using System.Collections;
using System.IO.Ports;
public class ardCom : MonoBehaviour {
SerialPort stream = new SerialPort("/dev/tty.usbmodem621",9600);
// Use this for initialization
void Start () {
stream.Open ();
}
// Update is called once per frame
void Update () {
int value = stream.ReadByte ();
Debug.Log (value);
}
void OnApplicationQuit()
{
stream.Close();
}
}
但是...... Unity不断抛出超时错误:
TimeoutException:操作已超时。 System.IO.Ports.SerialPortStream.Read(System.Byte [] buffer,Int32 offset,Int32 count)System.IO.Ports.SerialPort.read_byte() System.IO.Ports.SerialPort.ReadByte()(包装器 remoting-invoke-with-check)System.IO.Ports.SerialPort:ReadByte() ardCom.Update()(在Assets / ardCom.cs:20)
奇怪的是,我已经能够以另一种方式进行通信工作,从Unity到Arduino--你好,Blinky LED教程工作正常。
我已经尝试过几乎所有我能想到的代码排列,改变波特率,延迟时间,Arduino和Unity代码上的串行写入和读取调用,以及遍布网络寻找解决方案。没有运气。