我正在使用c#脚本通过串口发送内容。一切都很好。另一端是获得所有正确的数据。问题是,它只能工作大约110到30秒,然后团结冻结。我知道这更适合团结论坛,但我似乎没有得到任何回复,所以我来到这里。
以下代码:
using UnityEngine;
using System.Collections;
using System.IO.Ports;
public class NewBehaviourScript : MonoBehaviour {
byte[] StepperAngle = new byte[1];
short servoAngle = 0;
byte[] servoArray = new byte[2];
SerialPort sp = new SerialPort("COM4", 9600);
// Use this for initialization
void Start () {
sp.Open();
sp.ReadTimeout = 1;
}
// Update is called once per frame
void Update () {
StepperAngle[0] = (byte)(transform.localEulerAngles.y * 50/360);
servoAngle = (short)(transform.localEulerAngles.z* 10e8); // turn fl2oat into short. short is split right down center
servoArray[0] = (byte)(servoAngle/10e8);
servoArray[1] = (byte)(servoAngle % 10e8);
sp.Write(StepperAngle,0,1);
//try{
//print(StepperAngle[0]);
//}catch(System.Exception){
//print("stupid " + stepperAngle);
//}
}
}
而且,罪魁祸首是行sp.Write(StepperAngle [0]);当评论出来时一切都很顺利。
答案 0 :(得分:0)
Yaay。似乎问题实际上不是sp.Write();调用,但实际上是输入缓冲区溢出。似乎arduino代码正在编写,统一代码不是在阅读。这导致Unity冻结。如何删除sp.Write(StepperAngle,0,1);修好了我不知道。