【发布时间】:2014-10-27 15:35:45
【问题描述】:
我正在为 Unity 编写 C# 代码。只需在 EventHandler 中读取 SerialPort 值。问题是没有调用处理程序。这是代码
using UnityEngine;
using System.Collections;
using System;
using System.IO.Ports;
public class MainScript : MonoBehaviour {
public SerialPort mySerialPort;
public static float speed=100;
GameObject cube ;
public GUIStyle style ;
// Use this for initialization
void Start () {
cube = GameObject.FindGameObjectWithTag ("cube");
if(mySerialPort.IsOpen)
mySerialPort.Close();
mySerialPort = new SerialPort("com5");
mySerialPort.BaudRate = 9600;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.None;
mySerialPort.DataBits = 8;
mySerialPort.Handshake = Handshake.None;
mySerialPort.DataReceived += new SerialDataReceivedEventHandler (DataReceivedHandler);
if(mySerialPort.IsOpen == false)
mySerialPort.Open();
}
void OnGUI(){
GUI.Box (new Rect(100,100,100,100),"Speed : " + speed , style);
}
// Update is called once per frame
void Update () {
// speed = mySerialPort.ReadTo ("\r");
// update My View with the speed new value
cube.transform.Rotate(Vector3.up * speed *Time.deltaTime);
}
public static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
speed = float.Parse( sp.ReadTo ("\r") ) ;
print ("Data Recieved : " + speed);
}
}
问题不在于串行端口,因为当我在更新功能中读取它以实现统一时,它会读取正确的值,但是更新 UI 时存在性能问题。
谢谢
【问题讨论】:
-
speed是静态的,是这个问题吗? -
速度是静态的,因为它是在作为静态函数的事件处理程序内部调用的。你能告诉我你看到了什么吗??
-
+ 函数完全没有被调用
标签: c# .net unity3d serial-port