4

Unity にシリアル データを通信するために arduino ボードを使用しています。ボードに付属の読み取りアナログ電圧サンプルと、デバッグログに表示される出力を使用して、これを機能させました。

ただし、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 ポートが突然閉じてしまう理由はありますか?

4

3 に答える 3

0

次のコードを使用して、COM ポートが実際に存在するかどうかを確認します。

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

出力ウィンドウにリストが表示され、どの COM ポートが存在するかがわかります。

于 2013-09-13T22:49:11.827 に答える