【发布时间】:2018-04-17 10:03:40
【问题描述】:
我正在使用 Arduino 在 Unity 中开发智能家居系统。我正在使用端口和网络将数据从 pc 发送到 arduino 和 android。函数SerialPort.ReadLine() 让每个人都非常迟钝。它使应用程序以 1 fps 的速度移动。
代码如下:
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阅读。
标签: c# android unity3d serial-port port