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 并了解更多相关信息。
我正在尝试同时使用 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 并了解更多相关信息。