C#调用.ino文件

C# Calling a .ino File

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

谢谢!

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

Unity Editor 上,转到 Edit/Project Settings/Player 并将 .Net 设置更改为 .Net 2.0 而不是 .Net 2.0 子集

下面的代码将使 Arduino 发送 "Hello from Arduino" 到您的 Unity 控制台日志。

Unity C# 代码("Receives from 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 发送消息。您需要 google C# SerialPort 并了解更多相关信息。