Связь через 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, и всюду искал решения. Неудачно.

0 ответов

Другие вопросы по тегам