C#调用.ino文件

时间:2015-05-09 23:36:25

标签: c# unity3d arduino

我正在尝试使用Unity和Arduino。为此,我需要让我的C#脚本调用.ino文件类型。有人知道这是怎么做的吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

有一种方法。它被称为串行通信。您不与.ino文件通信。您使用COM端口与Arduino进行通信,该端口通过USB与Arduino发送和接收字节。

Unity编辑器上,转到编辑/项目设置/播放器,然后将.Net设置更改为 .Net 2.0 ,而不是 .Net 2.0子集

以下代码将使Arduino将“Hello from Arduino”发送到Unity控制台日志。

Unity C#代码(“从Arduino接收”):

using UnityEngine;
using System.Collections;
using System.IO.Ports;
using System.IO;

public class ArduinoCOM : MonoBehaviour
{

    SerialPort ardPort;

    void Start ()
    {
        ardPort = new SerialPort ("COM4", 9600);
    }

    void Update ()
    {
        if (byteIsAvailable ()) {
            Debug.Log ("Received " + readFromArduino ());
        }
    }

    void sendToArduino (string messageToSend)
    {
        ardPort.Write (messageToSend + '\n');
    }

    string readFromArduino ()
    {
        string tempReceived = null;

        if (ardPort.BytesToRead > 0) {
            tempReceived = ardPort.ReadLine ();
        }
        return tempReceived;
    }

    bool byteIsAvailable ()
    {
        if (ardPort.BytesToRead > 0) {
            return true;
        } else {
            return false;
        }
    }

}

代码的Arduino部分将发送“Hello From Arduino”到你的Unity控制台。(发送到Unity控制台)

String receivedMessage = "";

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  sendToUnity("Hello From Arduino");
}

void sendToUnity(String messageToSend) {
  for (int i = 0; i < messageToSend.length(); i++) {
    Serial.write(messageToSend[i]);
  }
  Serial.write('\n');
}

String readFromUnity() {
  char tempChar;
  while (Serial.available()) {
    tempChar = Serial.read();
    receivedMessage.concat(tempChar);
  }
  return receivedMessage;
}

bool byteIsAvailable () {
  if (Serial.available()) {
    return true;
  } else {
    return false;
  }
}

我为您编写了一个简单的读取,写入和检查新的字节函数。您也可以使用我放在那里的sendToArduino函数向您的Arduino发送消息。你需要谷歌C#SerialPort并了解更多相关信息。