5
シリアルポートから送信されたコマンド(arduinoから)を監視し、他のさまざまなプログラムにキーストロークを送信するプログラムを作成しています。イベントのディスパッチャは一度だけ呼び出されますC#
イベントにディスパッチャを配置しましたが、一度だけ実行されます... 私はコードをステップ実行しており、2回目ではなく最初からすべて実行されます。
private void portReadEvent(object sender, SerialDataReceivedEventArgs args)
{ //break here
Action dump = delegate()
{
dumpInfoText(serialPort.ReadExisting());
}; //create my deligate
txt_portInfo.Dispatcher.Invoke(dump); //run dispatcher
}
private void dumpInfoText(string text)
{
string completeCommand = "";
foreach (char C in text)
{
if (serDump.Length <=8 && (C != (char)0x0A || C != (char)0x0D)) //check
{
serDump = serDump + C; //add char
}
if (serDump.Length == 8) //check to see if my info has a complete command (serDump is global)
{
completeCommand = serDump; //move to complete
serDump = ""; // reset dump
if (C == (char)0x0A || C == (char)0x0D) //dont add crlf
{
serDump = serDump + C; //add char
}
}
if (completeCommand.Length == 8)
{
txt_portInfo.Text = txt_portInfo.Text + completeCommand; //do something with it.
}
}
ディスパッチャスレッドをご覧ください。 – lontivero