2011-12-14 9 views
2

私のアプリケーションは、デバイスとの対話型通信にシリアルポートを積極的に使用しています。私が必要とするのは、シリアルポートからデータを送受信するビジュアライザを追加することです(システムトレイのネットワークアクティビティ用に点滅する2つのコンピュータと同様の2つの点滅ライト)。 この機能を正しく実装するには、どのようなアプローチをとるべきですか?シリアルポートアクティビティ(送受信データ用)のビジュアライザ

+1

これまで何をしていますか? http://www.dreamincode.net/forums/topic/35775-serial-port-communication-in-c%23/はシリアルポートには適していますが、通常は受信データのDataReceivedを待ち受けます。 –

答えて

1

最も簡単な方法は、StatusStripを作成し、これらの指標専用のセクションを追加することです。次に、個々の状態の画像を選択し、アクティビティがあるたびに適切なものを設定します。ここにいくつかの大まかなコードがあります。

private System.Drawing.Image StateImageX { get; set; } 
private System.Drawing.Image StateImageY { get; set; } 

public delegate void DelegateRefreshControls(); 
public DelegateRefreshControls RefreshControlHandler; 

public Form1() 
{ 
    this.InitializeComponent(); 

    this.StateImageX = System.Drawing.Image.FromFile(@"??\ImageX.png"); 
    this.StateImageY = System.Drawing.Image.FromFile(@"??\ImageY.png"); 

    this.RefreshControlHandler += new DelegateRefreshControls(this.RefreshControls); 
} 

private void Form1_FormClosing (object sender, FormClosingEventArgs e) 
{ 
    this.RefreshControlHandler -= new DelegateRefreshControls(this.RefreshControls); 
} 

private void SerialPort_Activity (object sender, FormClosingEventArgs e) 
{ 
    this.Invoke(this.RefreshControlHandler); 
} 

public void RefreshControls() 
{ 
    if (state == x) this.ToolStripStatusLabel.Image = this.StateImageX; 
    if (state == y) this.ToolStripStatusLabel.Image = this.StateImageY; 
} 
関連する問題