我正在尝试使用Unity和Arduino。为此,我需要让我的C#脚本调用.ino文件类型。有人知道这是怎么做的吗?
谢谢!
答案 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并了解更多相关信息。