Arduino를 사용하여 Unity에서 스마 트톱 시스템으로 작업하고 있습니다. PC와 arduino, android에 데이터를 전송하기 위해 포트와 네트워크를 작동하고 있습니다. SerialPort.ReadLine()
함수는 모든 것을 매우 지체시킵니다. 앱이 1 fps로 움직입니다. 코드는 다음과 같습니다.C# 직렬 포트 수신 데이터 이벤트
using UnityEngine;
using System;
using System.IO.Ports;
public class Motorase : MonoBehaviour {
public SerialPort sp;
bool deschis1, deschis2, deschis3, deschis4;
public int temp, umid, gazv;
// Use this for initialization
void Start() {
deschis1 = false;
deschis2 = false;
deschis3 = false;
deschis4 = false;
foreach (string port in SerialPort.GetPortNames())
sp = new SerialPort(port, 9600);
if(!sp.IsOpen)
sp.Open();
sp.DtrEnable = true; // Data-terminal-ready
sp.RtsEnable = true; // Request-to-send
}
void Update()
{
sp.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
}
void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
Debug.Log("Da");
temp = Convert.ToInt32(sp.ReadLine());
umid = Convert.ToInt32(sp.ReadLine());
gazv = Convert.ToInt32(sp.ReadLine());
int apro = Convert.ToInt32(sp.ReadLine());
}
무엇이 잘못 되었나요? 왜 DataReceivedHandler
함수가 호출되지 않았습니까?
다른 스레드에서'SerialPort.ReadLine'으로 읽으십시오. – Programmer