私はArduinoマイクロコントローラを持っています。マイクロコントローラの作品(私は、マイクロコントローラは、データを「吐く」を私に示してアプリを持っている事は、私はhttp://www.c-sharpcorner.com/uploadfile/eclipsed4utoo/serialportcommunication12082008111137am/serialportcommunication.aspxからいくつかのコードを(実施しているということです):。マイクロコントローラから読み取る
ここで私はSERIALPORT
を初期化します_serialPort = new SerialPort("COM17", 19200, Parity.None, 8, StopBits.One);
_serialPort.Handshake = Handshake.None;
_serialPort.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);
_serialPort.ReadTimeout = 1000;
_serialPort.WriteTimeout = 1000;
_serialPort.Open();
そして、ここで私は、リスニングのハンドラがあります。
void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Thread.Sleep(1000);
string data = _serialPort.ReadLine();
this.BeginInvoke(new SetTextDeleg(si_DataReceived), new object[] { data });
}
をしかし、私はこのエラーを取得:。ハンドラでstring data = _serialPort.ReadLine();
でThe operation has timed out.
を
COMポートはCOM17でポートは開きます(マイクロコントローラのLEDがそれを示しています)。なぜ操作がタイムアウトしたのか?
つまり、マイクロコントローラにロードされたプログラムは、1秒でデータを「撮影」するように設定されています。
thread.sleepには理由がありますか?データを受信する準備ができたら、関数は呼び出されませんか? –
もし私がthread.sleepにコメントしたら、プログラムはより速く停止します。 (つまり1秒早く) – Alex
ハイパーターミナル(またはあなたが持っているコンソールポート)にこれらのCOM設定を試しましたか?あなたは最初に30秒のような長いタイムアウトを試しましたか? –