COM端口无法打开Unity

时间:2013-09-13 15:48:23

标签: c# serial-port unity3d

我正在使用arduino板将串行数据传送到Unity。我使用了电路板附带的读取模拟电压样本,以及调试日志中显示的输出。

但是,现在当我运行Unity时,我收到以下错误:

  

IOException:端口“COM11”不存在。

我已将我的COM端口更改为各种数字,但它们都返回相同的错误。

我的串口读取代码是:

SerialPort stream = null;
string data = "Ready";


private float DataTimer = 2.0f;
private float TimeToCheckStream = 0.1f; // check data every second
public string COMPort = "";
public int baudRate = 9600;



void Awake ()
{       

    stream = new SerialPort(COMPort,baudRate); //originally 9600
    Debug.Log ("Initialized stream");

    LogWriter writer = LogWriter.Instance;
    writer.WriteToLog( COMPort);
}



void Start ()
{
//  LogWriter writer = LogWriter.Instance;
//  writer.WriteToLog("Testing test");

        if ( stream != null )
        {
            if ( stream.IsOpen ) // close if already open
            {
                stream.Close();
                Debug.Log ("Closed stream");
            }

            stream.Open();
            Debug.Log ("Opened stream");
        }

        else
        {
            Debug.Log ("ERROR: Uninitialized stream");
        }

}


void Update ()
{

    if(DataTimer < TimeToCheckStream) 
    {
        DataTimer += Time.deltaTime;
    } 
    else
    {
        DataTimer = 0.0f;

        if ( stream != null )
        {
            if ( stream.IsOpen )
            {
                // if stream is open do things in here
                stream.ReadLine();
                Debug.Log(stream.ReadLine().ToString());
            }
        }

        else
        {
            Debug.Log ("NULL stream");
        }
    }
}



void OnGUI ()
{
    GUI.Label ( new Rect(500,10,300,100), data );
}



void OnApplicationQuit ()
{       

    if ( stream != null )
    {
        stream.Close();
    }
}

为什么我的COM端口会突然决定自行关闭?

3 个答案:

答案 0 :(得分:7)

您可以使用COM11替换\\.\COM11来访问 你必须写:

myPort= new SerialPort("\\\\.\\COM11",9600);

查看Microsoft's Website

答案 1 :(得分:0)

使用以下代码检查 COM端口是否确实存在:

foreach(string str in SerialPort.GetPortNames())
{
    Debug.WriteLine(string.Format("Existing COM port: {0}", str));
}

您将在输出窗口中获得一个列表,告诉您哪些COM端口确实存在。

答案 2 :(得分:0)

我确信N0xus现在已经开始了,但为了帮助其他人解决这个错误,如果你在OSX上,那就没有COM(任何数字)。而是进入Arduino软件然后转到工具&gt;端口查找端口被调用(我的是/dev/cu.usbmodem1411)和BOOM你有你的端口名称。