Связь через USB от Arduino до Unity: ошибка тайм-аута
Я пытаюсь настроить простейшую USB-связь между Arduino и Unity 3D: отправить несколько байтов из 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[], смещение Int32, счетчик Int32) System.IO.Ports.SerialPort.read_byte () System.IO.Ports.SerialPort.ReadByte () (обертывание remoting-invoke-с проверкой) System.IO.Ports.SerialPort:ReadByte () ardCom.Update () (в разделе Активы /ardCom.cs:20)
Что странно, так это то, что я смог заставить коммуникацию работать по-другому, от Unity до Arduino - у вас старый урок Blinky LED отлично работает.
Я пробовал практически каждую перестановку этого кода, которую я могу придумать, изменяя скорости передачи данных, время задержки, последовательные вызовы записи и чтения для кода Arduino и Unity, и всюду искал решения. Неудачно.