またまたこれ。
こちらの記事の以下のコード部分でReadLineメソッドでタイムアウトになっているようです。
private void Read()
{
while (isRunning_ && serialPort_ != null && serialPort_.IsOpen) {
try {
message_ = serialPort_.ReadLine(); //★ここ
isNewMessageReceived_ = true;
} catch (System.Exception e) {
Debug.LogWarning(e.Message);
}
}
}
修正方法は以下にありました。
タイムアウト上限をもっと大きくすればよい、という解決方法のようです。マシンによっては(恐らく低電力マシン)シリアル通信にかける電力を落とすためスピードを下げているのかもです。
修正場所は上のQiitaのコードでいうと以下です。
private void Open()
{
serialPort_ = new SerialPort(portName, baudRate, Parity.None, 8, StopBits.One);
serialPort_.Open();
serialPort_.ReadTimeout = 5000; //★ここを追加
isRunning_ = true;
thread_ = new Thread(Read);
thread_.Start();
}
同じことを続けていると色々なケースがありますね。ソフトウェア開発の複雑さの1つですな。ソフトウェアに変更がなくても周囲が変化するので動かなくなるあれです。
でわ。