I recently started programming Arduino and wanted to send the Arduinos data to Unity.
However, everytime I try to use SerialPort.ReadLine() it doesn’t seem to read the whole Serial Line and instead ignores the first numbers.
This happens most of the time but there is a chance every bit of data is actually recognized by Unity.
Here is my Arduino-code:
float a = 0;
float b = 0;
float c = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(38400);
a = 0;
b = 0;
c = 0;
}
void loop() {
// put your main code here, to run repeatedly:
Serial.print(a);
Serial.print(“,”);
Serial.print(b);
Serial.print(“,”);
Serial.println(c);
a += 0.1;
b += 0.2;
c += 0.3;
delay(2000);
}
And that is my Unity Script:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO.Ports;
using System.Text.RegularExpressions;
public class MPU_To_Unity : MonoBehaviour
{
SerialPort sp = new SerialPort(“COM3”, 38400);
public string dataInput;
public string[ ] dataInputSubstrings = new string[3];
float roll, pitch, yaw;
// Start is called before the first frame update
void Start()
{
sp.Open();
sp.ReadTimeout = 1;
}
// Update is called once per frame
void Update()
{
try
{
dataInput = sp.ReadLine();
sp.BaseStream.Flush();
}
catch (System.Exception)
{
}
}
}
I already tried using different baud-rates, experimented with the delay and tried some example projects but none worked for me.
Does anyone have an idea how I can fix this?
Thanks everyone in advance ![]()